]> git.proxmox.com Git - ceph.git/blame - ceph/src/rocksdb/java/src/main/java/org/rocksdb/HashSkipListMemTableConfig.java
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / rocksdb / java / src / main / java / org / rocksdb / HashSkipListMemTableConfig.java
CommitLineData
f67539c2 1// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
7c673cae
FG
2package 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 */
17public 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}