]>
Commit | Line | Data |
---|---|---|
f67539c2 | 1 | // Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. |
7c673cae FG |
2 | package org.rocksdb; |
3 | ||
4 | /** | |
5 | * The config for hash skip-list mem-table representation. | |
6 | * Such mem-table representation contains a fix-sized array of | |
7 | * buckets, where each bucket points to a skiplist (or null if the | |
8 | * bucket is empty). | |
9 | * | |
10 | * Note that since this mem-table representation relies on the | |
11 | * key prefix, it is required to invoke one of the usePrefixExtractor | |
12 | * functions to specify how to extract key prefix given a key. | |
13 | * If proper prefix-extractor is not set, then RocksDB will | |
14 | * use the default memtable representation (SkipList) instead | |
15 | * and post a warning in the LOG. | |
16 | */ | |
17 | public class HashSkipListMemTableConfig extends MemTableConfig { | |
18 | public static final int DEFAULT_BUCKET_COUNT = 1000000; | |
19 | public static final int DEFAULT_BRANCHING_FACTOR = 4; | |
20 | public static final int DEFAULT_HEIGHT = 4; | |
21 | ||
22 | /** | |
23 | * HashSkipListMemTableConfig constructor | |
24 | */ | |
25 | public HashSkipListMemTableConfig() { | |
26 | bucketCount_ = DEFAULT_BUCKET_COUNT; | |
27 | branchingFactor_ = DEFAULT_BRANCHING_FACTOR; | |
28 | height_ = DEFAULT_HEIGHT; | |
29 | } | |
30 | ||
31 | /** | |
32 | * Set the number of hash buckets used in the hash skiplist memtable. | |
33 | * Default = 1000000. | |
34 | * | |
35 | * @param count the number of hash buckets used in the hash | |
36 | * skiplist memtable. | |
37 | * @return the reference to the current HashSkipListMemTableConfig. | |
38 | */ | |
39 | public HashSkipListMemTableConfig setBucketCount( | |
40 | final long count) { | |
41 | bucketCount_ = count; | |
42 | return this; | |
43 | } | |
44 | ||
45 | /** | |
46 | * @return the number of hash buckets | |
47 | */ | |
48 | public long bucketCount() { | |
49 | return bucketCount_; | |
50 | } | |
51 | ||
52 | /** | |
53 | * Set the height of the skip list. Default = 4. | |
54 | * | |
55 | * @param height height to set. | |
56 | * | |
57 | * @return the reference to the current HashSkipListMemTableConfig. | |
58 | */ | |
59 | public HashSkipListMemTableConfig setHeight(final int height) { | |
60 | height_ = height; | |
61 | return this; | |
62 | } | |
63 | ||
64 | /** | |
65 | * @return the height of the skip list. | |
66 | */ | |
67 | public int height() { | |
68 | return height_; | |
69 | } | |
70 | ||
71 | /** | |
72 | * Set the branching factor used in the hash skip-list memtable. | |
73 | * This factor controls the probabilistic size ratio between adjacent | |
74 | * links in the skip list. | |
75 | * | |
76 | * @param bf the probabilistic size ratio between adjacent link | |
77 | * lists in the skip list. | |
78 | * @return the reference to the current HashSkipListMemTableConfig. | |
79 | */ | |
80 | public HashSkipListMemTableConfig setBranchingFactor( | |
81 | final int bf) { | |
82 | branchingFactor_ = bf; | |
83 | return this; | |
84 | } | |
85 | ||
86 | /** | |
87 | * @return branching factor, the probabilistic size ratio between | |
88 | * adjacent links in the skip list. | |
89 | */ | |
90 | public int branchingFactor() { | |
91 | return branchingFactor_; | |
92 | } | |
93 | ||
94 | @Override protected long newMemTableFactoryHandle() { | |
95 | return newMemTableFactoryHandle( | |
96 | bucketCount_, height_, branchingFactor_); | |
97 | } | |
98 | ||
99 | private native long newMemTableFactoryHandle( | |
100 | long bucketCount, int height, int branchingFactor) | |
101 | throws IllegalArgumentException; | |
102 | ||
103 | private long bucketCount_; | |
104 | private int branchingFactor_; | |
105 | private int height_; | |
106 | } |