Class DatanodeSchemaThreeDBDefinition

java.lang.Object
org.apache.hadoop.ozone.container.metadata.AbstractDatanodeDBDefinition
org.apache.hadoop.ozone.container.metadata.DatanodeSchemaThreeDBDefinition
All Implemented Interfaces:
org.apache.hadoop.hdds.utils.db.DBDefinition, org.apache.hadoop.hdds.utils.db.DBDefinition.WithMapInterface

public class DatanodeSchemaThreeDBDefinition extends AbstractDatanodeDBDefinition implements org.apache.hadoop.hdds.utils.db.DBDefinition.WithMapInterface
This class defines the RocksDB structure for datanode following schema version 3, where the block data, metadata, and transactions which are to be deleted are put in their own separate column families and with containerID as key prefix.

Some key format illustrations for the column families: - block_data: containerID | blockID - metadata: containerID | #BLOCKCOUNT containerID | #BYTESUSED ... - deleted_blocks: containerID | blockID - delete_txns: containerID | TransactionID

The keys would be encoded in a fix-length encoding style in order to utilize the "Prefix Seek" feature from Rocksdb to optimize seek.

  • Field Details

    • BLOCK_DATA

      public static final org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<String,org.apache.hadoop.ozone.container.common.helpers.BlockData> BLOCK_DATA
    • METADATA

      public static final org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<String,Long> METADATA
    • DELETE_TRANSACTION

      public static final org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<String,org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.DeletedBlocksTransaction> DELETE_TRANSACTION
    • FINALIZE_BLOCKS

      public static final org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<String,Long> FINALIZE_BLOCKS
    • LAST_CHUNK_INFO

      public static final org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<String,org.apache.hadoop.ozone.container.common.helpers.BlockData> LAST_CHUNK_INFO
  • Constructor Details

    • DatanodeSchemaThreeDBDefinition

      public DatanodeSchemaThreeDBDefinition(String dbPath, org.apache.hadoop.hdds.conf.ConfigurationSource config)
  • Method Details

    • getMap

      public Map<String,org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<?,?>> getMap()
      Specified by:
      getMap in interface org.apache.hadoop.hdds.utils.db.DBDefinition.WithMapInterface
    • getBlockDataColumnFamily

      public org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<String,org.apache.hadoop.ozone.container.common.helpers.BlockData> getBlockDataColumnFamily()
      Specified by:
      getBlockDataColumnFamily in class AbstractDatanodeDBDefinition
    • getMetadataColumnFamily

      public org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<String,Long> getMetadataColumnFamily()
      Specified by:
      getMetadataColumnFamily in class AbstractDatanodeDBDefinition
    • getLastChunkInfoColumnFamily

      public org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<String,org.apache.hadoop.ozone.container.common.helpers.BlockData> getLastChunkInfoColumnFamily()
      Specified by:
      getLastChunkInfoColumnFamily in class AbstractDatanodeDBDefinition
    • getDeleteTransactionsColumnFamily

      public org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<String,org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.DeletedBlocksTransaction> getDeleteTransactionsColumnFamily()
    • getFinalizeBlocksColumnFamily

      public org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition<String,Long> getFinalizeBlocksColumnFamily()
      Overrides:
      getFinalizeBlocksColumnFamily in class AbstractDatanodeDBDefinition
    • getContainerKeyPrefixLength

      public static int getContainerKeyPrefixLength()
    • getContainerKeyPrefix

      public static String getContainerKeyPrefix(long containerID)
    • getContainerKeyPrefixBytes

      public static byte[] getContainerKeyPrefixBytes(long containerID)
    • getKeyWithoutPrefix

      public static String getKeyWithoutPrefix(String keyWithPrefix)
    • getContainerId

      public static long getContainerId(String key)
      Parameters:
      key - rocksDB original key
      Returns:
      containerID