mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Change filter implementation
This commit is contained in:
50
java/org/rocksdb/Filter.java
Normal file
50
java/org/rocksdb/Filter.java
Normal file
@@ -0,0 +1,50 @@
|
||||
// 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;
|
||||
|
||||
/**
|
||||
* Filters are stored in rocksdb and are consulted automatically
|
||||
* by rocksdb to decide whether or not to read some
|
||||
* information from disk. In many cases, a filter can cut down the
|
||||
* number of disk seeks form a handful to a single disk seek per
|
||||
* DB::Get() call.
|
||||
*
|
||||
* This function a new filter policy that uses a bloom filter
|
||||
* with approximately the specified number of bits per key.
|
||||
* A good value for bitsPerKey is 10, which yields a filter
|
||||
* with ~ 1% false positive rate.
|
||||
*/
|
||||
public class Filter {
|
||||
private long nativeHandle_;
|
||||
|
||||
public Filter(int bitsPerKey) {
|
||||
newFilter(bitsPerKey);
|
||||
}
|
||||
|
||||
public long getNativeHandle() {
|
||||
return nativeHandle_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes underlying C++ filter pointer.
|
||||
*/
|
||||
public synchronized void dispose() {
|
||||
if(nativeHandle_ != 0) {
|
||||
dispose0(nativeHandle_);
|
||||
}
|
||||
}
|
||||
|
||||
@Override protected void finalize() {
|
||||
dispose();
|
||||
}
|
||||
|
||||
private boolean isInitialized() {
|
||||
return (nativeHandle_ != 0);
|
||||
}
|
||||
|
||||
private native void newFilter(int bitsPerKey);
|
||||
private native void dispose0(long handle);
|
||||
}
|
||||
@@ -145,24 +145,14 @@ public class Options {
|
||||
}
|
||||
|
||||
/**
|
||||
* Filters are stored in rocksdb and are consulted automatically
|
||||
* by rocksdb to decide whether or not to read some
|
||||
* information from disk. In many cases, a filter can cut down the
|
||||
* number of disk seeks form a handful to a single disk seek per
|
||||
* DB::Get() call.
|
||||
*
|
||||
* This function a new filter policy that uses a bloom filter
|
||||
* with approximately the specified number of bits per key.
|
||||
* A good value for bitsPerKey is 10, which yields a filter
|
||||
* with ~ 1% false positive rate.
|
||||
*
|
||||
* @param Bits per key for bloom filter.
|
||||
* Use the specified filter policy to reduce disk reads.
|
||||
* @param Filter policy java instance.
|
||||
* @return the instance of the current Options.
|
||||
* @see RocksDB.open()
|
||||
*/
|
||||
public Options createBloomFilter(int bitsPerKey) {
|
||||
public Options setFilter(Filter filter) {
|
||||
assert(isInitialized());
|
||||
createBloomFilter0(nativeHandle_, bitsPerKey);
|
||||
setFilter0(nativeHandle_, filter.getNativeHandle());
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -1260,7 +1250,7 @@ public class Options {
|
||||
private native void useFixedLengthPrefixExtractor(
|
||||
long handle, int prefixLength);
|
||||
|
||||
private native void createBloomFilter0(long handle, int bitsPerKey);
|
||||
private native void setFilter0(long optHandle, long fpHandle);
|
||||
|
||||
long nativeHandle_;
|
||||
long cacheSize_;
|
||||
|
||||
Reference in New Issue
Block a user