Package com.apple.foundationdb.record
This layer is a record-oriented database based on Protocol Buffers.
Record instances are Protobuf Message
s stored in the FoundationDB key-value store.
Highlights
Record data is mediated by a RecordMetaData
, which defines RecordType
s and their transactionally-consistent secondary Index
es.
All interaction with the database is performed inside a transaction, represented by an FDBRecordContext
.
An FDBRecordStore
represents a specific contiguous Subspace
of the key-value store used to store records for a specific meta-data.
Records can be retrieved directly from the record store by primary key. Or they can be gotten as the result of queries.
A RecordQuery
represents a logical query.
A RecordQueryPlanner
transforms a logical query into an executable RecordQueryPlan
, which can be run against a record store
to give a RecordCursor
of records.
The same meta-data can be used to describe multiple record stores.
To organize the placement of these record stores in separate key-value ranges according to hierarchical parameters, a KeySpace
is used.
All database operations are instrumented by a StoreTimer
, which can be hooked up to whatever logging and monitoring system a client uses.
-
ClassDescriptionException thrown when an aggregate function is not supported.AsyncLoadingCache<K,
V> A cache for retaining the result of some asynchronous operation up until some expiration time.A map of bound parameter values passed to query evaluation.A builder forBindings
.Bindings slots used internally by plan operators.A shim to wrap old-style byte array continuations.Track the number of bytes scanned up to some limit, after which record scans should not be allowed.A factory that produces implementations ofByteScanLimiter
s.The streaming mode to use when openingRecordCursor
s.The type of one of the endpoints of aTupleRange
.A context for query evaluation.A builder forEvaluationContext
.Limits on the execution of a query.A builder forExecuteProperties
.An encapsulation of the mutable state of query or scan execution.Property keys for theFDBRecordStore
and related classes.Names of core-supported query functions.AnIndexEntry
carries around the key and value read from an index (as the name would imply).An indicator for the index fetch method to use for a query or an index scan.The way in which an index should be scanned.Different states an index might be in within a given store.The isolation level for reads from the database.A range within a subspace specified by two byte value endpoints.Subclass of TimeoutException with support for adding logging info in the form of keys and values.A record store that can be modified to reflect changes made to the database.This class implements a planHash for the member classes of the query plan.Kind of asynchronous pipelined operation being performed.Interface that needs to be implemented separately for every class that isPlanSerializable
.A more stable version ofObject.hashCode()
.The "kinds" of planHash calculations.A mode for a plan hash which captures both kind and version.Base interface to indicate that a java class is reachable through aRecordQueryPlan
and therefore needs to be capable of serialization/deserialization.Context class defining the state of serialization/deserialization currently in-flight.A interface indicating whether a given type can be serialized into a ProtoBufMessage
.Query hash - calculate and return identifying hash values for queries.The "kinds" of queryHash calculations.Functional equivalent ofIllegalArgumentException
.An exception thrown by the core of the Record Layer.Functional equivalent ofInterruptedException
.An exception from transaction processing that ought to be retried.Exceptions due to problems with the state of or connection to a particular record store.RecordCursor<T>An asynchronous iterator that supports continuations.Transformation to apply to a continuation.The reason thatRecordCursorResult.hasNext()
returnedfalse
.An interface for types that represent the continuation of aRecordCursor
.A concrete continuation representing that aRecordCursor
has returned all of the records that it ever will.An asynchronous iterator that wraps aRecordCursor
and presents an iterator-style interface for advancing the cursor.A result obtained when aRecordCursor
advances.An exception thrown whenRecordCursorResult.getNoNextReason()
is called on a result that has a next value.An exception thrown whenRecordCursorResult.get()
is called on a result without a next value.A continuation representing the start of a cursor's execution.A hierarchical visitor for record cursor trees designed mostly to allow tests to gather information without adding invasive query methods to theRecordCursor
interface.A function to be applied to a record as part of query execution.An exception thrown when there is an attempt to store a duplicate value in a unique index.Meta-data for Record Layer record stores.A builder forRecordMetaData
.Exception thrown when meta-data cannot be loaded from serialized form.A source ofRecordMetaData
.Track number of records scanned up to some limit, after which record scans should not be allowed.A factory that produces implementations ofRecordScanLimiter
s.TheRecordStoreState
interface handles information that might differ between otherwise identical record stores.Exception thrown when a transaction tries to scan more than the allowed number of key-value pairs.A group of properties that pertain to a single scan.Track time remaining until a given time limit, after which record scans should not be allowed.A range within a subspace specified by twoTuple
endpoints.Exception thrown when range endpoint is not consistent withCONTINUATION
endpoint type.ValueRange<T>A range defines the boundaries around a contiguous span of values of some type.