Class InMemoryStoragePartition
- java.lang.Object
-
- com.linkedin.davinci.store.AbstractStoragePartition
-
- com.linkedin.davinci.store.memory.InMemoryStoragePartition
-
public class InMemoryStoragePartition extends AbstractStoragePartition
An in-memory hashmap implementation of a storage partition Assumptions: 1.No need to worry about synchronizing write/deletes as the model is based on a single writer. So all updates are already serialized. 2. Concurrent reads may be stale if writes/deletes are going on. But the consistency model is also designed to be eventual. Since "read your own writes semantics" is not guaranteed this eventual consistency is tolerable. Even though there will be one writer and 1 or more readers, we may still need a concurrentHashMap to avoid ConcurrentModicfictionException thrown from the iterators
-
-
Field Summary
-
Fields inherited from class com.linkedin.davinci.store.AbstractStoragePartition
partitionId
-
-
Constructor Summary
Constructors Constructor Description InMemoryStoragePartition(java.lang.Integer partitionId)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Close the specific partitionvoid
createSnapshot()
Creates a snapshot of the current state of the storage if the blob transfer feature is enabled via the store configurationvoid
delete(byte[] key)
Delete a key from the partition databasevoid
drop()
Drop when it is not required anymore.byte[]
get(byte[] key)
Get a value from the partition databasebyte[]
get(java.nio.ByteBuffer key)
<K,V>
Vget(K key)
Get a Value from the partition databasevoid
getByKeyPrefix(byte[] keyPrefix, BytesStreamingCallback callback)
Populate provided callback with key-value pairs from the partition database where the keys have provided prefix.long
getPartitionSizeInBytes()
Get the partition database size in bytesvoid
put(byte[] key, byte[] value)
Puts a value into the partition databasevoid
put(byte[] key, java.nio.ByteBuffer valueBuffer)
<K,V>
voidput(K key, V value)
java.util.Map<java.lang.String,java.lang.String>
sync()
Sync current database.boolean
verifyConfig(StoragePartitionConfig storagePartitionConfig)
Check whether current storage partition verifyConfig the given partition config-
Methods inherited from class com.linkedin.davinci.store.AbstractStoragePartition
beginBatchWrite, checkDatabaseIntegrity, deleteWithReplicationMetadata, endBatchWrite, get, getIterator, getPartitionId, getReplicationMetadata, getRmdByteUsage, putReplicationMetadata, putWithReplicationMetadata, putWithReplicationMetadata, reopen, validateBatchIngestion
-
-
-
-
Method Detail
-
put
public void put(byte[] key, byte[] value)
Description copied from class:AbstractStoragePartition
Puts a value into the partition database- Specified by:
put
in classAbstractStoragePartition
-
put
public void put(byte[] key, java.nio.ByteBuffer valueBuffer)
- Specified by:
put
in classAbstractStoragePartition
-
put
public <K,V> void put(K key, V value)
- Specified by:
put
in classAbstractStoragePartition
-
get
public byte[] get(byte[] key) throws PersistenceFailureException
Description copied from class:AbstractStoragePartition
Get a value from the partition database- Specified by:
get
in classAbstractStoragePartition
- Parameters:
key
- key to be retrieved- Returns:
- null if the key does not exist, byte[] value if it exists.
- Throws:
PersistenceFailureException
-
get
public <K,V> V get(K key)
Description copied from class:AbstractStoragePartition
Get a Value from the partition database- Specified by:
get
in classAbstractStoragePartition
- Type Parameters:
K
- the type for KeyV
- the type for the return value- Parameters:
key
- key to be retrieved- Returns:
- null if the key does not exist, V value if it exists
-
get
public byte[] get(java.nio.ByteBuffer key)
- Specified by:
get
in classAbstractStoragePartition
-
getByKeyPrefix
public void getByKeyPrefix(byte[] keyPrefix, BytesStreamingCallback callback)
Description copied from class:AbstractStoragePartition
Populate provided callback with key-value pairs from the partition database where the keys have provided prefix. If prefix is null, callback will be populated will all key-value pairs from the partition database.- Specified by:
getByKeyPrefix
in classAbstractStoragePartition
-
delete
public void delete(byte[] key)
Description copied from class:AbstractStoragePartition
Delete a key from the partition database- Specified by:
delete
in classAbstractStoragePartition
-
sync
public java.util.Map<java.lang.String,java.lang.String> sync()
Description copied from class:AbstractStoragePartition
Sync current database.- Specified by:
sync
in classAbstractStoragePartition
- Returns:
- Database related info, which is required to be checkpointed.
-
drop
public void drop()
Description copied from class:AbstractStoragePartition
Drop when it is not required anymore.- Specified by:
drop
in classAbstractStoragePartition
-
close
public void close()
Description copied from class:AbstractStoragePartition
Close the specific partition- Specified by:
close
in classAbstractStoragePartition
-
verifyConfig
public boolean verifyConfig(StoragePartitionConfig storagePartitionConfig)
Description copied from class:AbstractStoragePartition
Check whether current storage partition verifyConfig the given partition config- Specified by:
verifyConfig
in classAbstractStoragePartition
- Returns:
-
getPartitionSizeInBytes
public long getPartitionSizeInBytes()
Description copied from class:AbstractStoragePartition
Get the partition database size in bytes- Specified by:
getPartitionSizeInBytes
in classAbstractStoragePartition
- Returns:
- partition database size
-
createSnapshot
public void createSnapshot()
Description copied from class:AbstractStoragePartition
Creates a snapshot of the current state of the storage if the blob transfer feature is enabled via the store configuration- Specified by:
createSnapshot
in classAbstractStoragePartition
-
-