public class PlainTableConfig extends TableFormatConfig
PlainTable is a RocksDB's SST file format optimized for low query latency on pure-memory or really low-latency media.
It also support prefix hash feature.
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_BLOOM_BITS_PER_KEY |
static EncodingType |
DEFAULT_ENCODING_TYPE |
static boolean |
DEFAULT_FULL_SCAN_MODE |
static double |
DEFAULT_HASH_TABLE_RATIO |
static int |
DEFAULT_HUGE_TLB_SIZE |
static int |
DEFAULT_INDEX_SPARSENESS |
static boolean |
DEFAULT_STORE_INDEX_IN_FILE |
static int |
VARIABLE_LENGTH |
Constructor and Description |
---|
PlainTableConfig() |
Modifier and Type | Method and Description |
---|---|
int |
bloomBitsPerKey() |
EncodingType |
encodingType()
Returns the active EncodingType
|
boolean |
fullScanMode()
Return if full scan mode is active
|
double |
hashTableRatio() |
int |
hugePageTlbSize()
Returns the value for huge page tlb size
|
long |
indexSparseness() |
int |
keySize() |
protected long |
newTableFactoryHandle()
This function should only be called by Options.setTableFormatConfig(),
which will create a c++ shared-pointer to the c++ TableFactory
that associated with the Java TableFormatConfig.
|
PlainTableConfig |
setBloomBitsPerKey(int bitsPerKey)
Set the number of bits per key used by the internal bloom filter
in the plain table sst format.
|
PlainTableConfig |
setEncodingType(EncodingType encodingType)
Sets the encoding type.
|
PlainTableConfig |
setFullScanMode(boolean fullScanMode)
Set full scan mode, if true the whole file will be read
one record by one without using the index.
|
PlainTableConfig |
setHashTableRatio(double ratio)
hashTableRatio is the desired utilization of the hash table used
for prefix hashing.
|
PlainTableConfig |
setHugePageTlbSize(int hugePageTlbSize)
huge_page_tlb_size: if ≤0, allocate hash indexes and blooms
from malloc otherwise from huge page TLB.
|
PlainTableConfig |
setIndexSparseness(int sparseness)
Index sparseness determines the index interval for keys inside the
same prefix.
|
PlainTableConfig |
setKeySize(int keySize)
Set the length of the user key.
|
PlainTableConfig |
setStoreIndexInFile(boolean storeIndexInFile)
If set to true: compute plain table index and bloom
filter during file building and store it in file.
|
boolean |
storeIndexInFile()
Return a boolean value indicating if index shall be stored
in a file.
|
public static final int VARIABLE_LENGTH
public static final int DEFAULT_BLOOM_BITS_PER_KEY
public static final double DEFAULT_HASH_TABLE_RATIO
public static final int DEFAULT_INDEX_SPARSENESS
public static final int DEFAULT_HUGE_TLB_SIZE
public static final EncodingType DEFAULT_ENCODING_TYPE
public static final boolean DEFAULT_FULL_SCAN_MODE
public static final boolean DEFAULT_STORE_INDEX_IN_FILE
public PlainTableConfig setKeySize(int keySize)
Set the length of the user key. If it is set to be VARIABLE_LENGTH, then it indicates the user keys are of variable length.
Otherwise,all the keys need to have the same length in byte.
DEFAULT: VARIABLE_LENGTH
keySize
- the length of the user key.public int keySize()
public PlainTableConfig setBloomBitsPerKey(int bitsPerKey)
bitsPerKey
- the number of bits per key for bloom filer.public int bloomBitsPerKey()
public PlainTableConfig setHashTableRatio(double ratio)
ratio
- the hash table ratio.public double hashTableRatio()
public PlainTableConfig setIndexSparseness(int sparseness)
sparseness
- the index sparseness.public long indexSparseness()
public PlainTableConfig setHugePageTlbSize(int hugePageTlbSize)
huge_page_tlb_size: if ≤0, allocate hash indexes and blooms from malloc otherwise from huge page TLB.
The user needs to reserve huge pages for it to be allocated,
like: sysctl -w vm.nr_hugepages=20
See linux doc Documentation/vm/hugetlbpage.txt
hugePageTlbSize
- huge page tlb sizepublic int hugePageTlbSize()
public PlainTableConfig setEncodingType(EncodingType encodingType)
This setting determines how to encode
the keys. See enum EncodingType
for
the choices.
The value will determine how to encode keys when writing to a new SST file. This value will be stored inside the SST file which will be used when reading from the file, which makes it possible for users to choose different encoding type when reopening a DB. Files with different encoding types can co-exist in the same DB and can be read.
encodingType
- EncodingType
value.public EncodingType encodingType()
public PlainTableConfig setFullScanMode(boolean fullScanMode)
fullScanMode
- boolean value indicating if full
scan mode shall be enabled.public boolean fullScanMode()
public PlainTableConfig setStoreIndexInFile(boolean storeIndexInFile)
If set to true: compute plain table index and bloom filter during file building and store it in file. When reading file, index will be mmaped instead of doing recomputation.
storeIndexInFile
- value indicating if index shall
be stored in a filepublic boolean storeIndexInFile()
protected long newTableFactoryHandle()
TableFormatConfig
This function should only be called by Options.setTableFormatConfig(), which will create a c++ shared-pointer to the c++ TableFactory that associated with the Java TableFormatConfig.
newTableFactoryHandle
in class TableFormatConfig