fork of https://github.com/oxigraph/rocksdb and https://github.com/facebook/rocksdb for nextgraph and oxigraph
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.9 KiB
102 lines
2.9 KiB
package org.rocksdb;
|
|
|
|
/**
|
|
* The config for hash skip-list mem-table representation.
|
|
* Such mem-table representation contains a fix-sized array of
|
|
* buckets, where each bucket points to a skiplist (or null if the
|
|
* bucket is empty).
|
|
*
|
|
* Note that since this mem-table representation relies on the
|
|
* key prefix, it is required to invoke one of the usePrefixExtractor
|
|
* functions to specify how to extract key prefix given a key.
|
|
* If proper prefix-extractor is not set, then RocksDB will
|
|
* use the default memtable representation (SkipList) instead
|
|
* and post a warning in the LOG.
|
|
*/
|
|
public class HashSkipListMemTableConfig extends MemTableConfig {
|
|
public static final int DEFAULT_BUCKET_COUNT = 1000000;
|
|
public static final int DEFAULT_BRANCHING_FACTOR = 4;
|
|
public static final int DEFAULT_HEIGHT = 4;
|
|
|
|
/**
|
|
* HashSkipListMemTableConfig constructor
|
|
*/
|
|
public HashSkipListMemTableConfig() {
|
|
bucketCount_ = DEFAULT_BUCKET_COUNT;
|
|
branchingFactor_ = DEFAULT_BRANCHING_FACTOR;
|
|
height_ = DEFAULT_HEIGHT;
|
|
}
|
|
|
|
/**
|
|
* Set the number of hash buckets used in the hash skiplist memtable.
|
|
* Default = 1000000.
|
|
*
|
|
* @param count the number of hash buckets used in the hash
|
|
* skiplist memtable.
|
|
* @return the reference to the current HashSkipListMemTableConfig.
|
|
*/
|
|
public HashSkipListMemTableConfig setBucketCount(long count) {
|
|
bucketCount_ = count;
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* @return the number of hash buckets
|
|
*/
|
|
public long bucketCount() {
|
|
return bucketCount_;
|
|
}
|
|
|
|
/**
|
|
* Set the height of the skip list. Default = 4.
|
|
*
|
|
* @return the reference to the current HashSkipListMemTableConfig.
|
|
*/
|
|
public HashSkipListMemTableConfig setHeight(int height) {
|
|
height_ = height;
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* @return the height of the skip list.
|
|
*/
|
|
public int height() {
|
|
return height_;
|
|
}
|
|
|
|
/**
|
|
* Set the branching factor used in the hash skip-list memtable.
|
|
* This factor controls the probabilistic size ratio between adjacent
|
|
* links in the skip list.
|
|
*
|
|
* @param bf the probabilistic size ratio between adjacent link
|
|
* lists in the skip list.
|
|
* @return the reference to the current HashSkipListMemTableConfig.
|
|
*/
|
|
public HashSkipListMemTableConfig setBranchingFactor(int bf) {
|
|
branchingFactor_ = bf;
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* @return branching factor, the probabilistic size ratio between
|
|
* adjacent links in the skip list.
|
|
*/
|
|
public int branchingFactor() {
|
|
return branchingFactor_;
|
|
}
|
|
|
|
@Override protected long newMemTableFactoryHandle()
|
|
throws RocksDBException {
|
|
return newMemTableFactoryHandle(
|
|
bucketCount_, height_, branchingFactor_);
|
|
}
|
|
|
|
private native long newMemTableFactoryHandle(
|
|
long bucketCount, int height, int branchingFactor)
|
|
throws RocksDBException;
|
|
|
|
private long bucketCount_;
|
|
private int branchingFactor_;
|
|
private int height_;
|
|
}
|
|
|