| 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( |
| final 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. |
| * |
| * @param height height to set. |
| * |
| * @return the reference to the current HashSkipListMemTableConfig. |
| */ |
| public HashSkipListMemTableConfig setHeight(final 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( |
| final 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() { |
| return newMemTableFactoryHandle( |
| bucketCount_, height_, branchingFactor_); |
| } |
| |
| private native long newMemTableFactoryHandle( |
| long bucketCount, int height, int branchingFactor) |
| throws IllegalArgumentException; |
| |
| private long bucketCount_; |
| private int branchingFactor_; |
| private int height_; |
| } |