Changes between Version 11 and Version 12 of FDORfc23


Ignore:
Timestamp:
Jul 16, 2008, 10:56:02 AM (16 years ago)
Author:
ronnielouie
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • FDORfc23

    v11 v12  
    138138}}}
    139139
    140 The performance gain from using the new !GetSchemaNames, !GetClassNames, and !DescribeClasses command will be most notable for the RDBMS-based FDO providers. Support for the commands will be indicated by the provider's command capabilities object.  Hence, only the RDBMS-based FDO providers will include  !FdoCommandType_GetSchemaNames, !FdoCommandType_GetClassNames, and !FdoCommandType_DescribeClasses in the !GetCommands() response.  Providers that do not support the new commands can fall back on using !DescribeSchema and walk through the results to retrieve the schema, class names, and class definitions.
     140The performance gain from using the new !GetSchemaNames, !GetClassNames, and !DescribeClasses command will be most notable for the RDBMS-based FDO providers. Support for the commands will be indicated by the provider's command capabilities object.  Hence, only the RDBMS-based FDO providers will include  !FdoCommandType_GetSchemaNames, !FdoCommandType_GetClassNames, and !FdoCommandType_DescribeClasses in the !GetCommands() response. 
    141141
     142=== Discussion of Alternate Approach (but not proposed as part of this RFC) ===
     143
     144An alternative solution that does not create the new DesribeClasses command, is to modify DescribeSchema to allow the results to be filtered by class names, making it a fundamental part of the command.  There would not be any capability exposed to advertise support for the new behaviour, so updating all providers becomes mandatory.  Although this approach makes for a cleaner API experience in terms of DescribeSchema usage and consistency amongst all providers, there are some issues which makes the feasibility of this approach unsuitable at this time.
     145
     1461.  Not all providers would benefit from the new DescribeSchema.  The main benefit would be the responsiveness of command for the RDBMS providers.  Some of the file-based providers may also benefit, but if caching is used there may not be any significant improvement.  As such, it would not be worth the effort to implement all providers when there is little to no gain.  Solution to this should include optional implementation on an as-needed basis.
     147
     1482.  Updating the DescribeSchema command across all providers would need to be scheduled in a timely manner.  Coordinating a mandatory command update with all provider writers (particulary from third parties) may pose significant challenges.
     149
     1503.  Resources for implementing in all providers is limited for all concerned parties.  Since implementation of the DescribeSchema changes is not optional, this may create undue strain on available resources for all interested parties.
     151
     152By favouring optional implementation of the new DescribeClasses command over mandatory implmentation of changes to the existing DescribeSchema command, the effort can be focused on where it is needed most.  It also allow flexibility for the other providers to determine if and when the command should be implemented based on their own criteria.
    142153
    143154== Implications ==
    144155
    145 Application code that currently uses !DescribeSchema to enumerate schema/class names or retrieve class definitions should be updated to utilize the new APIs for improved performance.  The application developer should be aware that not all occurrences of the original !DescribeSchema can be replaced, such as when a complete schema is required for a particular operation.
     156Application code that currently uses !DescribeSchema to enumerate schema/class names or retrieve class definitions should be updated to utilize the new APIs for improved performance.  The application developer should be aware that not all occurrences of !DescribeSchema can be replaced, such as when a complete schema is required for a particular operation.  Also, providers that do not support the new commands can fall back on using !DescribeSchema and walk through the results to retrieve the schema, class names, and class definitions.
    146157
    147 The existing !DescribeSchema API, which retrieves the full schema for all the available feature classes, will continue to perform as before.  Performance gains will only be realized when the new API is used to restrict the response to the feature class or classes of interest.
     158The existing !DescribeSchema API, which retrieves the full schema for all the available feature classes, will continue to perform as before.  Performance gains will only be realized when the new APIs are used to restrict the response to the data of interest.
    148159
    149160== Test Plan ==