This document describes the C and C++ application programming interface to the functionality provided by the collections, queries, and indexes database services for the ObjectStore object-oriented database management system.
Query Processing
The query processing database service provides support for associative data retrieval, such as lookup by name or ID number. Data Access
Many application types require two forms of data access: navigational access and associative access. Navigation accesses data by following pointers contained in data structure fields. In C++, the data member access syntax supports navigational data access. Associative access, on the other hand, is the lookup of those data structures whose field values satisfy a certain condition (for example, lookup of an object by name or ID number). ObjectStore supports associative access, or query, through member functions in the ObjectStore class library. Collections
Queries involve collections, which are objects such as sets, bags, or lists that serve to group together other objects. ObjectStore provides a library of collection classes. These classes provide the data structures for representing such collections, encapsulated by member functions that support various forms of collection manipulation, such as element insertion and removal. Retrieval of a given collection's elements for examination or processing one at a time is supported through the use of a cursor class. Query Optimizer
Queries return a collection containing those elements of a given collection that satisfy a specified condition. They can be executed with an optimized search strategy, formulated by the ObjectStore query optimizer. The query optimizer maintains indexes into collections based on user-specified keys, that is, data members, or data members of data members, and so on. Indexes
By using these indexes, implemented as B-trees or hash tables, the programmer can minimize the number of objects examined in response to a query. Formulation of optimization strategies is performed automatically by the system. Index maintenance can also be automatic - the programmer need only specify the desired index keys.
Updated: 03/31/98 15:53:34