Sun Microsystems 5800 User Manual

Page of 136
Note –
The format of records as stored in the reliable and scalable object archive is not suitable
for fast query. To enable searching, the queryable fields from the metadata are indexed in a
query engine that can provide fast and flexible query services. The query engine is basically an
SQL database. This is why the 5800 system's query language can borrow so heavily from SQL. At
various times, the data as indexed in the query engine can get out of date compared to what is
stored in the archive. When this happens, query result sets are not known to be complete until
the contents of the query engine can be brought back up to date with the actual contents of the
archive again.
The 5800 system concept of query integrity as actually implemented is somewhat looser than
that of 100% query integrity. Even if a query result set indicates the result set is complete, the
5800 system allows certain objects, known as store index exceptions, to be missing from the
query result set, as long as those exceptions were communicated to the customer application at
the time the object was stored.
A store index exception is an object for which the original store of the object into the archive
succeeded, but at least some part of the insert into the query engine (database) did not succeed.
The object may or may not show up in all of the queries that it matches. A store index exception
is communicated to the customer application at the time of store by means of a method
SystemRecord.isIndexed
. A value of false from isIndexed means that the object is not
immediately available for query.
A store index exception is said to be resolved when the object becomes available for query. The
checkIndexed
method can be used to attempt to resolve a store index exception under program
control. The checkIndexed operation checks if the object has been added to the query engine,
and attempts to insert it if the object has not been added. If the insert into the query engine
succeeds, the object is thereby restored to full queryability.
All store index exceptions will also eventually be resolved automatically by ongoing system
healing. Each query result set also exports a method getQueryIntegrityTime that can be used
to get detailed status on which store index exceptions might still be unresolved. The query
integrity time is a time such that all store index exceptions from before that time have been
resolved. There is an “ideal” query integrity time, which is the time of the oldest still-unresolved
store index exception: an ideal implementation when asked for the query integrity time would
always report this ideal value. In actual implementation, the reported query integrity time
might be hours or even days earlier than the ideal query integrity time, depending on how far
the ongoing system healing has progressed.
Deleting Objects from the 5800 System
The 5800 system client API exports an operation to delete a specific object as specified by its
OID. Once a delete operation completes normally, subsequent attempts to retrieve that object
will fail with an exception. In addition, the object will stop showing up in query result sets that
5800 System Overview
Sun StorageTek 5800 System Client API Reference Manual • June 2008
22