filter_policy

来源:互联网 发布:java基础题在线测试 编辑:程序博客网 时间:2024/06/14 16:43
// Copyright (c) 2012 The LevelDB Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file. See the AUTHORS file for names of contributors.//// A database can be configured with a custom FilterPolicy object.// This object is responsible for creating a small filter from a set// of keys.  These filters are stored in leveldb and are consulted// automatically by leveldb 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.//// Most people will want to use the builtin bloom filter support (see// NewBloomFilterPolicy() below).#ifndef STORAGE_LEVELDB_INCLUDE_FILTER_POLICY_H_#define STORAGE_LEVELDB_INCLUDE_FILTER_POLICY_H_#include <string>namespace leveldb {class Slice;class FilterPolicy {public:virtual ~FilterPolicy();// Return the name of this policy.  Note that if the filter encoding// changes in an incompatible way, the name returned by this method// must be changed.  Otherwise, old incompatible filters may be// passed to methods of this type.virtual const charName() const = 0;// keys[0,n-1] contains a list of keys (potentially with duplicates)// that are ordered according to the user supplied comparator.// Append a filter that summarizes keys[0,n-1] to *dst.//// Warning: do not change the initial contents of *dst.  Instead,// append the newly constructed filter to *dst.virtual void CreateFilter(const Slice* keys, int n, std::string* dst)const = 0;// "filter" contains the data appended by a preceding call to// CreateFilter() on this class.  This method must return true if// the key was in the list of keys passed to CreateFilter().// This method may return true or false if the key was not on the// list, but it should aim to return false with a high probability.virtual bool KeyMayMatch(const Slicekeyconst Slice& filter) const = 0;};// Return a new filter policy that uses a bloom filter with approximately// the specified number of bits per key.  A good value for bits_per_key// is 10, which yields a filter with ~ 1% false positive rate.//// Callers must delete the result after any database that is using the// result has been closed.//// Note: if you are using a custom comparator that ignores some parts// of the keys being compared, you must not use NewBloomFilterPolicy()// and must provide your own FilterPolicy that also ignores the// corresponding parts of the keys.  For example, if the comparator// ignores trailing spaces, it would be incorrect to use a// FilterPolicy (like NewBloomFilterPolicy) that does not ignore// trailing spaces in keys.extern const FilterPolicyNewBloomFilterPolicy(int bits_per_key);}#endif  // STORAGE_LEVELDB_INCLUDE_FILTER_POLICY_H_
// Copyright (c) 2012 The LevelDB Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file. See the AUTHORS file for names of contributors.#include "leveldb/filter_policy.h"namespace leveldb{FilterPolicy::~FilterPolicy(){ }}  // namespace leveldb
原创粉丝点击