@API(value=STABLE) public static class FDBRecordStore.Builder extends Object implements FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
FDBRecordStore
.
Methods for getting a record store from the builder:
FDBRecordStoreBase.BaseBuilder.createOrOpen()
: open an existing record store or create it the first time.FDBRecordStoreBase.BaseBuilder.open()
: open an existing record store or throw an exception if it has never been created.FDBRecordStoreBase.BaseBuilder.create()
: create a record store or throw an exception if it has already been created.build()
: return a record store without checking its state in the database. One should almost always
call FDBRecordStore.checkVersion(com.apple.foundationdb.record.provider.foundationdb.FDBRecordStoreBase.UserVersionChecker, com.apple.foundationdb.record.provider.foundationdb.FDBRecordStoreBase.StoreExistenceCheck)
before actually using the record store.
FDBRecordStore.newBuilder().setMetaDataProvider(md).setContext(ctx).setSubspace(s).createOrOpen()
Modifier and Type | Field and Description |
---|---|
protected SubspaceProvider |
subspaceProvider |
Modifier | Constructor and Description |
---|---|
protected |
Builder() |
protected |
Builder(FDBRecordStore.Builder other) |
protected |
Builder(FDBRecordStore store) |
Modifier and Type | Method and Description |
---|---|
FDBRecordStore |
build()
Build the record store.
|
FDBRecordStore.Builder |
copyBuilder()
Make a copy of this builder.
|
void |
copyFrom(FDBRecordStore.Builder other)
Copy state from another store builder.
|
void |
copyFrom(FDBRecordStore store)
Copy state from a record store.
|
CompletableFuture<FDBRecordStore> |
createOrOpenAsync(FDBRecordStoreBase.StoreExistenceCheck existenceCheck)
Opens a
FDBRecordStore instance in the given path with the given meta-data. |
FDBRecordContext |
getContext()
Get the record context (transaction) to use for the record store.
|
int |
getFormatVersion()
Get the storage format version for this store.
|
IndexMaintainerRegistry |
getIndexMaintainerRegistry()
Get the registry of index maintainers to be used by the record store.
|
IndexMaintenanceFilter |
getIndexMaintenanceFilter()
Get the
index filter to be used by the record store. |
RecordMetaDataProvider |
getMetaDataProvider()
Get the provider for the record store's meta-data.
|
FDBMetaDataStore |
getMetaDataStore()
Get the
FDBMetaDataStore to use as the source of meta-data. |
FDBRecordStoreBase.PipelineSizer |
getPipelineSizer()
Get the
object to be used to determine the depth of pipelines run by the record store. |
RecordSerializer<Message> |
getSerializer()
Get the serializer used to convert records into byte arrays.
|
FDBRecordStoreStateCache |
getStoreStateCache()
Get the store state cache to be used by the record store.
|
SubspaceProvider |
getSubspaceProvider()
Get the subspace provider.
|
FDBRecordStoreBase.UserVersionChecker |
getUserVersionChecker()
Get the
function to be used to check the meta-data version of the record store. |
FDBRecordStore.Builder |
setContext(FDBRecordContext context)
Set the record context (transaction) to use for the record store.
|
FDBRecordStore.Builder |
setFormatVersion(int formatVersion)
Set the storage format version for this store.
|
FDBRecordStore.Builder |
setIndexMaintainerRegistry(IndexMaintainerRegistry indexMaintainerRegistry)
Set the registry of index maintainers to be used by the record store.
|
FDBRecordStore.Builder |
setIndexMaintenanceFilter(IndexMaintenanceFilter indexMaintenanceFilter)
Set the
index filter to be used by the record store. |
FDBRecordStore.Builder |
setKeySpacePath(KeySpacePath keySpacePath)
Sets the
KeySpacePath location of the FDBRecordStore . |
FDBRecordStore.Builder |
setMetaDataProvider(RecordMetaDataProvider metaDataProvider)
Set the provider for the record store's meta-data.
|
FDBRecordStore.Builder |
setMetaDataStore(FDBMetaDataStore metaDataStore)
Set the
FDBMetaDataStore to use as the source of meta-data. |
FDBRecordStore.Builder |
setPipelineSizer(FDBRecordStoreBase.PipelineSizer pipelineSizer)
Set the
object to be used to determine the depth of pipelines run by the record store. |
FDBRecordStore.Builder |
setSerializer(RecordSerializer<Message> serializer)
Set the serializer used to convert records into byte arrays.
|
FDBRecordStore.Builder |
setStoreStateCache(FDBRecordStoreStateCache storeStateCache)
Set the store state cache to be used by the record store.
|
FDBRecordStore.Builder |
setSubspace(Subspace subspace)
Set the subspace to use for the record store.
|
FDBRecordStore.Builder |
setSubspaceProvider(SubspaceProvider subspaceProvider)
Set the subspace provider from a subspace provider.
|
FDBRecordStore.Builder |
setUserVersionChecker(FDBRecordStoreBase.UserVersionChecker userVersionChecker)
Set the
function to be used to check the meta-data version of the record store. |
CompletableFuture<FDBRecordStore> |
uncheckedOpenAsync()
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
create, createAsync, createOrOpen, createOrOpen, createOrOpenAsync, open, openAsync, uncheckedOpen
@Nullable protected SubspaceProvider subspaceProvider
protected Builder()
protected Builder(FDBRecordStore.Builder other)
protected Builder(FDBRecordStore store)
public void copyFrom(@Nonnull FDBRecordStore.Builder other)
other
- the record store builder whose state to takepublic void copyFrom(@Nonnull FDBRecordStore store)
store
- the record store whose state to take@Nullable public RecordSerializer<Message> getSerializer()
FDBRecordStoreBase.BaseBuilder
getSerializer
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore.Builder setSerializer(@Nonnull RecordSerializer<Message> serializer)
FDBRecordStoreBase.BaseBuilder
setSerializer
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
serializer
- the serializer to usepublic int getFormatVersion()
FDBRecordStoreBase.BaseBuilder
getFormatVersion
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore.Builder setFormatVersion(int formatVersion)
FDBRecordStoreBase.BaseBuilder
FDBRecordStoreBase.BaseBuilder.open()
will set the store's format version to max(max_supported_version, current_version)
.
This is to support cases where the target cannot be changed everywhere at once and some instances write the new version before others
know that they are licensed to do so. It is still critically important that all instances know how to handle
the new version before any instance allows it.
When installing a new version of the record layer library that includes a format change, first install everywhere having arranged for
FDBRecordStoreBase.BaseBuilder.setFormatVersion(int)
to be called with the old format version. Then, after that install is complete, change to the newer version.setFormatVersion
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
formatVersion
- the format version to use@Nullable public RecordMetaDataProvider getMetaDataProvider()
FDBRecordStoreBase.BaseBuilder
getMetaDataProvider
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore.Builder setMetaDataProvider(@Nullable RecordMetaDataProvider metaDataProvider)
FDBRecordStoreBase.BaseBuilder
FDBRecordStoreBase.BaseBuilder.setMetaDataStore(com.apple.foundationdb.record.provider.foundationdb.FDBMetaDataStore)
is also called, the provider will only be used to initialize the meta-data store when it is empty. The record store will be built using the store as its provider.setMetaDataProvider
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
metaDataProvider
- the meta-data source to use@Nullable public FDBMetaDataStore getMetaDataStore()
FDBRecordStoreBase.BaseBuilder
FDBMetaDataStore
to use as the source of meta-data.getMetaDataStore
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore.Builder setMetaDataStore(@Nullable FDBMetaDataStore metaDataStore)
FDBRecordStoreBase.BaseBuilder
FDBMetaDataStore
to use as the source of meta-data.
If FDBRecordStoreBase.BaseBuilder.setMetaDataProvider(com.apple.foundationdb.record.RecordMetaDataProvider)
is also called, it will be used to seed the store.setMetaDataStore
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
metaDataStore
- the meta-data store to use@Nullable public FDBRecordContext getContext()
FDBRecordStoreBase.BaseBuilder
getContext
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore.Builder setContext(@Nullable FDBRecordContext context)
FDBRecordStoreBase.BaseBuilder
setContext
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
context
- the record context / transaction to use@Nullable public SubspaceProvider getSubspaceProvider()
FDBRecordStoreBase.BaseBuilder
getSubspaceProvider
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore.Builder setSubspaceProvider(@Nullable SubspaceProvider subspaceProvider)
FDBRecordStoreBase.BaseBuilder
setSubspaceProvider
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
subspaceProvider
- the subspace provider@Nonnull @API(value=UNSTABLE) public FDBRecordStore.Builder setSubspace(@Nullable Subspace subspace)
FDBRecordStoreBase.BaseBuilder
FDBRecordStoreBase.BaseBuilder.setKeySpacePath(com.apple.foundationdb.record.provider.foundationdb.keyspace.KeySpacePath)
rather than this because key space path provides more meaningful logs.setSubspace
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
subspace
- the subspace to use@Nonnull public FDBRecordStore.Builder setKeySpacePath(@Nullable KeySpacePath keySpacePath)
KeySpacePath
location of the FDBRecordStore
.setKeySpacePath
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
keySpacePath
- the key space path to use@Nullable public FDBRecordStoreBase.UserVersionChecker getUserVersionChecker()
FDBRecordStoreBase.BaseBuilder
function
to be used to check the meta-data version of the record store.getUserVersionChecker
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore.Builder setUserVersionChecker(@Nullable FDBRecordStoreBase.UserVersionChecker userVersionChecker)
FDBRecordStoreBase.BaseBuilder
function
to be used to check the meta-data version of the record store.setUserVersionChecker
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
userVersionChecker
- the checker function to use@Nonnull public IndexMaintainerRegistry getIndexMaintainerRegistry()
FDBRecordStoreBase.BaseBuilder
getIndexMaintainerRegistry
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore.Builder setIndexMaintainerRegistry(@Nonnull IndexMaintainerRegistry indexMaintainerRegistry)
FDBRecordStoreBase.BaseBuilder
setIndexMaintainerRegistry
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
indexMaintainerRegistry
- the index registry to useFDBRecordStore.getIndexMaintainer(com.apple.foundationdb.record.metadata.Index)
,
RecordMetaDataBuilder.setIndexMaintainerRegistry(com.apple.foundationdb.record.provider.foundationdb.IndexMaintainerRegistry)
@Nonnull public IndexMaintenanceFilter getIndexMaintenanceFilter()
FDBRecordStoreBase.BaseBuilder
index filter
to be used by the record store.getIndexMaintenanceFilter
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore.Builder setIndexMaintenanceFilter(@Nonnull IndexMaintenanceFilter indexMaintenanceFilter)
FDBRecordStoreBase.BaseBuilder
index filter
to be used by the record store.setIndexMaintenanceFilter
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
indexMaintenanceFilter
- the index filter to use@Nonnull public FDBRecordStoreBase.PipelineSizer getPipelineSizer()
FDBRecordStoreBase.BaseBuilder
object
to be used to determine the depth of pipelines run by the record store.getPipelineSizer
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore.Builder setPipelineSizer(@Nonnull FDBRecordStoreBase.PipelineSizer pipelineSizer)
FDBRecordStoreBase.BaseBuilder
object
to be used to determine the depth of pipelines run by the record store.setPipelineSizer
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
pipelineSizer
- the sizer to useFDBRecordStoreBase.getPipelineSize(com.apple.foundationdb.record.PipelineOperation)
@Nullable public FDBRecordStoreStateCache getStoreStateCache()
FDBRecordStoreBase.BaseBuilder
null
, the produced
record store will use the default store state cache provided by the FDBDatabase
when initializing
the record store state.getStoreStateCache
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
null
if it uses the database default@Nonnull public FDBRecordStore.Builder setStoreStateCache(@Nullable FDBRecordStoreStateCache storeStateCache)
FDBRecordStoreBase.BaseBuilder
null
is provided or if this method
is never called, the produced record store will use the default store state cache provided by the
FDBDatabase
.setStoreStateCache
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
storeStateCache
- the store state cache to used by this record store or null
to specify that this should use the database default@Nonnull public FDBRecordStore.Builder copyBuilder()
FDBRecordStoreBase.BaseBuilder
builder = FDBRecordStore.newBuilder().setMetaDataProvider(metadata).setSubspace(subspace) store1 = builder.copyBuilder().setContext(context1).build() store2 = builder.copyBuilder().setContext(context2).build()
copyBuilder
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public FDBRecordStore build()
FDBRecordStoreBase.BaseBuilder
build
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public CompletableFuture<FDBRecordStore> uncheckedOpenAsync()
FDBRecordStoreBase.BaseBuilder
FDBRecordStore
instance without calling FDBRecordStore.checkVersion(com.apple.foundationdb.record.provider.foundationdb.FDBRecordStoreBase.UserVersionChecker, com.apple.foundationdb.record.provider.foundationdb.FDBRecordStoreBase.StoreExistenceCheck)
.uncheckedOpenAsync
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
@Nonnull public CompletableFuture<FDBRecordStore> createOrOpenAsync(@Nonnull FDBRecordStoreBase.StoreExistenceCheck existenceCheck)
FDBRecordStoreBase.BaseBuilder
FDBRecordStore
instance in the given path with the given meta-data.createOrOpenAsync
in interface FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
existenceCheck
- whether the store must already exist