rocksdb/include/leveldb
Jim Paton 74781a0c49 Add three new MemTableRep's
Summary:
This patch adds three new MemTableRep's: UnsortedRep, PrefixHashRep, and VectorRep.

UnsortedRep stores keys in an std::unordered_map of std::sets. When an iterator is requested, it dumps the keys into an std::set and iterates over that.

VectorRep stores keys in an std::vector. When an iterator is requested, it creates a copy of the vector and sorts it using std::sort. The iterator accesses that new vector.

PrefixHashRep stores keys in an unordered_map mapping prefixes to ordered sets.

I also added one API change. I added a function MemTableRep::MarkImmutable. This function is called when the rep is added to the immutable list. It doesn't do anything yet, but it seems like that could be useful. In particular, for the vectorrep, it means we could elide the extra copy and just sort in place. The only reason I haven't done that yet is because the use of the ArenaAllocator complicates things (I can elaborate on this if needed).

Test Plan:
make -j32 check
./db_stress --memtablerep=vector
./db_stress --memtablerep=unsorted
./db_stress --memtablerep=prefixhash --prefix_size=10

Reviewers: dhruba, haobo, emayanke

Reviewed By: dhruba

CC: leveldb

Differential Revision: https://reviews.facebook.net/D12117
2013-08-22 23:10:02 -07:00
..
arena.h Add three new MemTableRep's 2013-08-22 23:10:02 -07:00
c.h Fix poor error on num_levels mismatch and few other minor improvements 2013-01-25 15:37:26 -08:00
cache.h Codemod NULL to nullptr 2013-02-28 18:04:58 -08:00
compaction_filter.h Separate compaction filter for each compaction 2013-08-13 10:56:20 -07:00
comparator.h A number of fixes: 2011-10-31 17:22:06 +00:00
db.h Add APIs to query SST file metadata and to delete specific SST files 2013-08-22 15:27:19 -07:00
env.h [RocksDB] Option for incremental sync 2013-06-18 15:00:32 -07:00
filter_policy.h Added bloom filter support. 2012-04-17 08:36:46 -07:00
iterator.h A number of fixes: 2011-10-31 17:22:06 +00:00
ldb_tool.h [RocksDB] Expose LDB functioanality as a library call - clients can build their own LDB binary with additional options 2013-04-11 20:21:49 -07:00
memtablerep.h Add three new MemTableRep's 2013-08-22 23:10:02 -07:00
merge_operator.h Merge operator fixes part 1. 2013-08-19 11:42:47 -07:00
options.h Made merge_oprator a shared_ptr; and added TTL unit tests 2013-08-20 13:35:28 -07:00
perf_context.h [RocksDB] Expose thread local perf counter for low overhead, per call level performance statistics. 2013-08-14 15:24:06 -07:00
slice.h Add three new MemTableRep's 2013-08-22 23:10:02 -07:00
slice_transform.h Add three new MemTableRep's 2013-08-22 23:10:02 -07:00
statistics.h Revert "Prefix scan: db_bench and bug fixes" 2013-08-22 18:01:11 -07:00
status.h Revert "Prefix scan: db_bench and bug fixes" 2013-08-22 18:01:11 -07:00
table_builder.h Fix all the lint errors. 2012-11-28 17:18:41 -08:00
transaction_log.h API for getting archived log files 2013-08-19 13:37:04 -07:00
types.h API for getting archived log files 2013-08-19 13:37:04 -07:00
universal_compaction.h Renamed 'hybrid_compaction' tp be "Universal Compaction'. 2013-07-03 15:47:53 -07:00
write_batch.h Allow WriteBatch::Handler to abort iteration 2013-08-21 18:27:48 -07:00