Summary: as title Test Plan: tested on my mac make rocksdbjava make jtest Reviewers: sdong, igor, yhchiang Reviewed By: yhchiang Subscribers: leveldb Differential Revision: https://reviews.facebook.net/D21963main
parent
384400128f
commit
66f62e5c78
@ -0,0 +1,210 @@ |
|||||||
|
// Copyright (c) 2014, Facebook, Inc. All rights reserved.
|
||||||
|
// This source code is licensed under the BSD-style license found in the
|
||||||
|
// LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
package org.rocksdb; |
||||||
|
|
||||||
|
/** |
||||||
|
* The config for plain table sst format. |
||||||
|
* |
||||||
|
* BlockBasedTable is a RocksDB's default SST file format. |
||||||
|
*/ |
||||||
|
public class BlockBasedTableConfig extends TableFormatConfig { |
||||||
|
|
||||||
|
public BlockBasedTableConfig() { |
||||||
|
noBlockCache_ = false; |
||||||
|
blockCacheSize_ = 8 * 1024 * 1024; |
||||||
|
blockSize_ = 4 * 1024; |
||||||
|
blockSizeDeviation_ =10; |
||||||
|
blockRestartInterval_ =16; |
||||||
|
wholeKeyFiltering_ = true; |
||||||
|
bitsPerKey_ = 0; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Disable block cache. If this is set to true, |
||||||
|
* then no block cache should be used, and the block_cache should |
||||||
|
* point to a nullptr object. |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @param noBlockCache if use block cache |
||||||
|
* @return the reference to the current config. |
||||||
|
*/ |
||||||
|
public BlockBasedTableConfig setNoBlockCache(boolean noBlockCache) { |
||||||
|
noBlockCache_ = noBlockCache; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return if block cache is disabled |
||||||
|
*/ |
||||||
|
public boolean noBlockCache() { |
||||||
|
return noBlockCache_; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Set the amount of cache in bytes that will be used by RocksDB. |
||||||
|
* If cacheSize is non-positive, then cache will not be used. |
||||||
|
* DEFAULT: 8M |
||||||
|
* |
||||||
|
* @param blockCacheSize block cache size in bytes |
||||||
|
* @return the reference to the current config. |
||||||
|
*/ |
||||||
|
public BlockBasedTableConfig setBlockCacheSize(long blockCacheSize) { |
||||||
|
blockCacheSize_ = blockCacheSize; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return block cache size in bytes |
||||||
|
*/ |
||||||
|
public long blockCacheSize() { |
||||||
|
return blockCacheSize_; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Controls the number of shards for the block cache. |
||||||
|
* This is applied only if cacheSize is set to non-negative. |
||||||
|
* |
||||||
|
* @param numShardBits the number of shard bits. The resulting |
||||||
|
* number of shards would be 2 ^ numShardBits. Any negative |
||||||
|
* number means use default settings." |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
public BlockBasedTableConfig setCacheNumShardBits(int numShardBits) { |
||||||
|
numShardBits_ = numShardBits; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the number of shard bits used in the block cache. |
||||||
|
* The resulting number of shards would be 2 ^ (returned value). |
||||||
|
* Any negative number means use default settings. |
||||||
|
* |
||||||
|
* @return the number of shard bits used in the block cache. |
||||||
|
*/ |
||||||
|
public int cacheNumShardBits() { |
||||||
|
return numShardBits_; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Approximate size of user data packed per block. Note that the |
||||||
|
* block size specified here corresponds to uncompressed data. The |
||||||
|
* actual size of the unit read from disk may be smaller if |
||||||
|
* compression is enabled. This parameter can be changed dynamically. |
||||||
|
* Default: 4K |
||||||
|
* |
||||||
|
* @param blockSize block size in bytes |
||||||
|
* @return the reference to the current config. |
||||||
|
*/ |
||||||
|
public BlockBasedTableConfig setBlockSize(long blockSize) { |
||||||
|
blockSize_ = blockSize; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return block size in bytes |
||||||
|
*/ |
||||||
|
public long blockSize() { |
||||||
|
return blockSize_; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* This is used to close a block before it reaches the configured |
||||||
|
* 'block_size'. If the percentage of free space in the current block is less |
||||||
|
* than this specified number and adding a new record to the block will |
||||||
|
* exceed the configured block size, then this block will be closed and the |
||||||
|
* new record will be written to the next block. |
||||||
|
* Default is 10. |
||||||
|
* |
||||||
|
* @param blockSizeDeviation the deviation to block size allowed |
||||||
|
* @return the reference to the current config. |
||||||
|
*/ |
||||||
|
public BlockBasedTableConfig setBlockSizeDeviation(int blockSizeDeviation) { |
||||||
|
blockSizeDeviation_ = blockSizeDeviation; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return the hash table ratio. |
||||||
|
*/ |
||||||
|
public int blockSizeDeviation() { |
||||||
|
return blockSizeDeviation_; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Set block restart interval |
||||||
|
* |
||||||
|
* @param restartInterval block restart interval. |
||||||
|
* @return the reference to the current config. |
||||||
|
*/ |
||||||
|
public BlockBasedTableConfig setBlockRestartInterval(int restartInterval) { |
||||||
|
blockRestartInterval_ = restartInterval; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return block restart interval |
||||||
|
*/ |
||||||
|
public int blockRestartInterval() { |
||||||
|
return blockRestartInterval_; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* If true, place whole keys in the filter (not just prefixes). |
||||||
|
* This must generally be true for gets to be efficient. |
||||||
|
* Default: true |
||||||
|
* |
||||||
|
* @param wholeKeyFiltering if enable whole key filtering |
||||||
|
* @return the reference to the current config. |
||||||
|
*/ |
||||||
|
public BlockBasedTableConfig setWholeKeyFiltering(boolean wholeKeyFiltering) { |
||||||
|
wholeKeyFiltering_ = wholeKeyFiltering; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return if whole key filtering is enabled |
||||||
|
*/ |
||||||
|
public boolean wholeKeyFiltering() { |
||||||
|
return wholeKeyFiltering_; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Use the specified filter policy to reduce disk reads. |
||||||
|
* |
||||||
|
* Filter should not be disposed before options instances using this filter is |
||||||
|
* disposed. If dispose() function is not called, then filter object will be |
||||||
|
* GC'd automatically. |
||||||
|
* |
||||||
|
* Filter instance can be re-used in multiple options instances. |
||||||
|
* |
||||||
|
* @param Filter policy java instance. |
||||||
|
* @return the reference to the current config. |
||||||
|
*/ |
||||||
|
public BlockBasedTableConfig setFilterBitsPerKey(int bitsPerKey) { |
||||||
|
bitsPerKey_ = bitsPerKey; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
@Override protected long newTableFactoryHandle() { |
||||||
|
return newTableFactoryHandle(noBlockCache_, blockCacheSize_, numShardBits_, |
||||||
|
blockSize_, blockSizeDeviation_, blockRestartInterval_, |
||||||
|
wholeKeyFiltering_, bitsPerKey_); |
||||||
|
} |
||||||
|
|
||||||
|
private native long newTableFactoryHandle( |
||||||
|
boolean noBlockCache, long blockCacheSize, int numShardbits, |
||||||
|
long blockSize, int blockSizeDeviation, int blockRestartInterval, |
||||||
|
boolean wholeKeyFiltering, int bitsPerKey); |
||||||
|
|
||||||
|
private boolean noBlockCache_; |
||||||
|
private long blockCacheSize_; |
||||||
|
private int numShardBits_; |
||||||
|
private long shard; |
||||||
|
private long blockSize_; |
||||||
|
private int blockSizeDeviation_; |
||||||
|
private int blockRestartInterval_; |
||||||
|
private boolean wholeKeyFiltering_; |
||||||
|
private int bitsPerKey_; |
||||||
|
} |
Loading…
Reference in new issue