Data Services 1.1 Design
| |
|
|
| |
Table of Contents |
|
| |
|
|
Architecture
Based on Standard Grid Services
caGrid Data Service implementation has proceeded as a specialization of standard grid services. As such, some basic requirements for Data Services are immediately met:
- Security integration:
- All security concepts that apply to any other grid service are immediately available and enforced on caGrid data services.
- Simplified creation tooling:
- The Introduce Toolkit allows creation of grid services, including configuring their metadata, security, and service functionality.
- The Introduce Toolkit also provides a pluggable back end architecture and graphical user interface, which allows specialized services to be created with a minimum of interaction from end users.
Specialization of Features
Further requirements are met through implementation of a standardized query schema and client tooling to manipulate it:
- Standard query language is CQL, defined by a schema registered in the GME.
- Allows creation of CQL Query objects which can be passed to the caGrid data service describing the target data type and all qualifications and restrictions that must be met for the requested object.
- Query results described by a CQL Results schema, also registered in the GME.
- Client tooling implemented as an iterator over the result set. The iterator deserializes the XML returned in the CQL Result object as a series of registered objects. An alternative implementation simply returns the XML without any processing applied to it.
A standard interface for caGrid Data Services has been identified, and consists of a single 'query' method. This method takes a single CQL Query parameter, and returns a single CQL Result Set object. All data services must follow this implementation pattern, but are free to include additional methods, such as domain-specific querying capabilities.
To both simplify creation of data services and ensure interoperability between data services, this query operation is provided in a pre-built service and implementation, and is imported into user-created services.
The query result schema wraps the serialized XML of registered data objects. These objects are identified by their schemas, which are included in the WSDL of the caGrid Data Service. This enables clients to discover which types are available from a given service.
An abstract base class for querying a data source with CQL is provided with the caGrid Data service, which data providers are required to implement. To aid in moving existing silver level data sources to gold compliance, an implementation of the CQL query processor will be provided with the caGrid data service architecture which queries against a caCORE SDK generated data source. Serialization of SDK generated objects is also automatically configured when the service is created through the Introduce Toolkit.
Data Service Styles
The data service creation and modification system is pluggable, allowing for custom data services to be easily created and configured with the Introduce toolkit. The style concept insulates the data service core infrastructure from the complexities associated with supporting various data sources, such as the caCORE SDK. The various versions of caGrid provide out-of-the-box support for different versions of the caCORE APIs, as outlined on the data services caCORE Support page.
Querying
Main Article: Client API
Data Services are accessed via their query() method, which takes a single CQL Query parameter. This method can also throw both a MalformedQueryException and a QueryProcessingException to indicate error conditions.
Alternate delivery mechanisms such as WS-Enumeration and BDT are also supported and have their own specialized query methods.
Creation
Main Article: Introduce Extension for Data Services
caGrid Data Services can be built with a set of extensions to the Introduce Toolkit. This provides grid service developers with a simple and well defined starting point to create caBIG gold compliant Data Services.
Changes
From 1.0 to 1.1
CaGrid 1.1 is designed to be largely backward compatible with caGrid 1.0. This is true of caGrid data services; existing data services can be queried with the 1.1 client. Developers should move to caGrid 1.1 for new development to take advantage of new features, tooling, and bug fixes.
.





