Class PersistenceImplementation
java.lang.Object
org.apache.polaris.persistence.nosql.impl.PersistenceImplementation
- All Implemented Interfaces:
org.apache.polaris.persistence.nosql.api.Persistence
public final class PersistenceImplementation
extends Object
implements org.apache.polaris.persistence.nosql.api.Persistence
Base implementation that every database-specific implementation is encouraged to extend.
This class centralizes Obj de-serialization and parameter validations.
-
Constructor Summary
ConstructorsConstructorDescriptionPersistenceImplementation(org.apache.polaris.persistence.nosql.api.backend.Backend backend, org.apache.polaris.persistence.nosql.api.PersistenceParams params, String realmId, org.apache.polaris.ids.api.MonotonicClock monotonicClock, org.apache.polaris.ids.api.IdGenerator idGenerator) -
Method Summary
Modifier and TypeMethodDescription<V> org.apache.polaris.persistence.nosql.api.index.Index<V> buildReadIndex(org.apache.polaris.persistence.nosql.api.index.IndexContainer<V> indexContainer, org.apache.polaris.persistence.nosql.api.index.IndexValueSerializer<V> indexValueSerializer) <V> org.apache.polaris.persistence.nosql.api.index.UpdatableIndex<V> buildWriteIndex(org.apache.polaris.persistence.nosql.api.index.IndexContainer<V> indexContainer, org.apache.polaris.persistence.nosql.api.index.IndexValueSerializer<V> indexValueSerializer) org.apache.polaris.persistence.nosql.api.commit.Commitscommits()<T extends org.apache.polaris.persistence.nosql.api.obj.Obj>
booleanconditionalDelete(T expected, Class<T> clazz) <T extends org.apache.polaris.persistence.nosql.api.obj.Obj>
TconditionalInsert(T obj, Class<T> clazz) <T extends org.apache.polaris.persistence.nosql.api.obj.Obj>
TconditionalUpdate(T expected, T update, Class<T> clazz) <REF_OBJ extends org.apache.polaris.persistence.nosql.api.obj.BaseCommitObj,RESULT>
org.apache.polaris.persistence.nosql.api.commit.Committer<REF_OBJ, RESULT> createCommitter(String refName, Class<REF_OBJ> referencedObjType, Class<RESULT> resultType) org.apache.polaris.persistence.nosql.api.ref.ReferencecreateReference(String name, Optional<org.apache.polaris.persistence.nosql.api.obj.ObjRef> pointer) voidcreateReferencesSilent(Set<String> referenceNames) voiddelete(org.apache.polaris.persistence.nosql.api.obj.ObjRef id) voiddeleteMany(org.apache.polaris.persistence.nosql.api.obj.ObjRef... ids) static <T> Tdeserialize(byte[] binary, Class<T> clazz) static <T> Tdeserialize(ByteBuffer binary, Class<T> clazz) Deserialize a byte array into an object of the given type, consumes theByteBuffer.static <T> TdeserializeObj(String type, long id, int partNum, InputStream in, String versionToken, long createdAtMicros, Class<T> clazz) <T extends org.apache.polaris.persistence.nosql.api.obj.Obj>
T<T extends org.apache.polaris.persistence.nosql.api.obj.Obj>
T[]org.apache.polaris.persistence.nosql.api.ref.ReferencefetchReference(String name) longorg.apache.polaris.persistence.nosql.api.obj.ObjRefgenerateObjId(org.apache.polaris.persistence.nosql.api.obj.ObjType type) <T extends org.apache.polaris.persistence.nosql.api.obj.Obj>
TgetImmediate(org.apache.polaris.persistence.nosql.api.obj.ObjRef id, Class<T> clazz) org.apache.polaris.ids.api.IdGeneratorintorg.apache.polaris.ids.api.MonotonicClockorg.apache.polaris.persistence.nosql.api.PersistenceParamsparams()realmId()static byte[]static byte[]serializeObj(org.apache.polaris.persistence.nosql.api.obj.Obj o) toString()Optional<org.apache.polaris.persistence.nosql.api.ref.Reference> updateReferencePointer(org.apache.polaris.persistence.nosql.api.ref.Reference reference, org.apache.polaris.persistence.nosql.api.obj.ObjRef newPointer) <T extends org.apache.polaris.persistence.nosql.api.obj.Obj>
T<T extends org.apache.polaris.persistence.nosql.api.obj.Obj>
T[]Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.polaris.persistence.nosql.api.Persistence
bucketizedBulkFetches, createReferenceSilent, currentInstant, currentTimeMicros, currentTimeMillis, fetchOrCreateReference, fetchReferenceForUpdate, fetchReferenceHead, objAge
-
Constructor Details
-
PersistenceImplementation
public PersistenceImplementation(org.apache.polaris.persistence.nosql.api.backend.Backend backend, org.apache.polaris.persistence.nosql.api.PersistenceParams params, String realmId, org.apache.polaris.ids.api.MonotonicClock monotonicClock, org.apache.polaris.ids.api.IdGenerator idGenerator)
-
-
Method Details
-
idGenerator
public org.apache.polaris.ids.api.IdGenerator idGenerator()- Specified by:
idGeneratorin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
monotonicClock
public org.apache.polaris.ids.api.MonotonicClock monotonicClock()- Specified by:
monotonicClockin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
realmId
- Specified by:
realmIdin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
params
public org.apache.polaris.persistence.nosql.api.PersistenceParams params()- Specified by:
paramsin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
maxSerializedValueSize
public int maxSerializedValueSize()- Specified by:
maxSerializedValueSizein interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
generateId
public long generateId()- Specified by:
generateIdin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
generateObjId
public org.apache.polaris.persistence.nosql.api.obj.ObjRef generateObjId(org.apache.polaris.persistence.nosql.api.obj.ObjType type) - Specified by:
generateObjIdin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
createReferencesSilent
- Specified by:
createReferencesSilentin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
createReference
@Nonnull public org.apache.polaris.persistence.nosql.api.ref.Reference createReference(@Nonnull String name, @Nonnull Optional<org.apache.polaris.persistence.nosql.api.obj.ObjRef> pointer) - Specified by:
createReferencein interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
updateReferencePointer
@Nonnull public Optional<org.apache.polaris.persistence.nosql.api.ref.Reference> updateReferencePointer(@Nonnull org.apache.polaris.persistence.nosql.api.ref.Reference reference, @Nonnull org.apache.polaris.persistence.nosql.api.obj.ObjRef newPointer) - Specified by:
updateReferencePointerin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
fetchReference
@Nonnull public org.apache.polaris.persistence.nosql.api.ref.Reference fetchReference(@Nonnull String name) - Specified by:
fetchReferencein interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
getImmediate
@Nullable public <T extends org.apache.polaris.persistence.nosql.api.obj.Obj> T getImmediate(@Nonnull org.apache.polaris.persistence.nosql.api.obj.ObjRef id, @Nonnull Class<T> clazz) - Specified by:
getImmediatein interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
fetch
@Nullable public <T extends org.apache.polaris.persistence.nosql.api.obj.Obj> T fetch(@Nonnull org.apache.polaris.persistence.nosql.api.obj.ObjRef id, @Nonnull Class<T> clazz) - Specified by:
fetchin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
fetchMany
@Nonnull public <T extends org.apache.polaris.persistence.nosql.api.obj.Obj> T[] fetchMany(@Nonnull Class<T> clazz, @Nonnull org.apache.polaris.persistence.nosql.api.obj.ObjRef... ids) - Specified by:
fetchManyin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
write
@Nonnull public <T extends org.apache.polaris.persistence.nosql.api.obj.Obj> T write(@Nonnull T obj, @Nonnull Class<T> clazz) - Specified by:
writein interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
writeMany
@Nonnull public <T extends org.apache.polaris.persistence.nosql.api.obj.Obj> T[] writeMany(@Nonnull Class<T> clazz, @Nonnull T... objs) - Specified by:
writeManyin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
delete
public void delete(@Nonnull org.apache.polaris.persistence.nosql.api.obj.ObjRef id) - Specified by:
deletein interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
deleteMany
public void deleteMany(@Nonnull org.apache.polaris.persistence.nosql.api.obj.ObjRef... ids) - Specified by:
deleteManyin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
conditionalInsert
@Nullable public <T extends org.apache.polaris.persistence.nosql.api.obj.Obj> T conditionalInsert(@Nonnull T obj, @Nonnull Class<T> clazz) - Specified by:
conditionalInsertin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
conditionalUpdate
@Nullable public <T extends org.apache.polaris.persistence.nosql.api.obj.Obj> T conditionalUpdate(@Nonnull T expected, @Nonnull T update, @Nonnull Class<T> clazz) - Specified by:
conditionalUpdatein interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
conditionalDelete
public <T extends org.apache.polaris.persistence.nosql.api.obj.Obj> boolean conditionalDelete(@Nonnull T expected, Class<T> clazz) - Specified by:
conditionalDeletein interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
commits
public org.apache.polaris.persistence.nosql.api.commit.Commits commits()- Specified by:
commitsin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
createCommitter
public <REF_OBJ extends org.apache.polaris.persistence.nosql.api.obj.BaseCommitObj,RESULT> org.apache.polaris.persistence.nosql.api.commit.Committer<REF_OBJ,RESULT> createCommitter(@Nonnull String refName, @Nonnull Class<REF_OBJ> referencedObjType, @Nonnull Class<RESULT> resultType) - Specified by:
createCommitterin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
buildReadIndex
public <V> org.apache.polaris.persistence.nosql.api.index.Index<V> buildReadIndex(@Nullable org.apache.polaris.persistence.nosql.api.index.IndexContainer<V> indexContainer, @Nonnull org.apache.polaris.persistence.nosql.api.index.IndexValueSerializer<V> indexValueSerializer) - Specified by:
buildReadIndexin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
buildWriteIndex
public <V> org.apache.polaris.persistence.nosql.api.index.UpdatableIndex<V> buildWriteIndex(@Nullable org.apache.polaris.persistence.nosql.api.index.IndexContainer<V> indexContainer, @Nonnull org.apache.polaris.persistence.nosql.api.index.IndexValueSerializer<V> indexValueSerializer) - Specified by:
buildWriteIndexin interfaceorg.apache.polaris.persistence.nosql.api.Persistence
-
deserialize
-
deserialize
Deserialize a byte array into an object of the given type, consumes theByteBuffer. -
serialize
-
serializeObj
public static byte[] serializeObj(org.apache.polaris.persistence.nosql.api.obj.Obj o) -
deserializeObj
public static <T> T deserializeObj(String type, long id, int partNum, InputStream in, String versionToken, long createdAtMicros, @Nonnull Class<T> clazz) throws IOException - Throws:
IOException
-
toString
-