rocksdb/db
sdong 28b5c76004 WriteBatchWithIndex: a wrapper of WriteBatch, with a searchable index
Summary:
Add WriteBatchWithIndex so that a user can query data out of a WriteBatch, to support MongoDB's read-its-own-write.

WriteBatchWithIndex uses a skiplist to store the binary index. The index stores the offset of the entry in the write batch. When searching for a key, the key for the entry is read by read the entry from the write batch from the offset.

Define a new iterator class for querying data out of WriteBatchWithIndex. A user can create an iterator of the write batch for one column family, seek to a key and keep calling Next() to see next entries.

I will add more unit tests if people are OK about this API.

Test Plan:
make all check
Add unit tests.

Reviewers: yhchiang, igor, MarkCallaghan, ljin

Reviewed By: ljin

Subscribers: dhruba, leveldb, xjin

Differential Revision: https://reviews.facebook.net/D21381
2014-08-18 16:37:38 -07:00
..
builder.cc Remove a check for merge operator in builder.cc 2014-07-31 14:22:21 -07:00
builder.h integrate rate limiter into rocksdb 2014-07-08 12:31:49 -07:00
c_test.c Fix valgrind error in c_test 2014-08-18 11:08:51 -07:00
c.cc Fix typo, add missing inclusion of state void* in invocation of 2014-08-06 18:42:15 -04:00
column_family_test.cc Flush only one column family 2014-08-11 22:10:32 -07:00
column_family.cc WriteBatchWithIndex: a wrapper of WriteBatch, with a searchable index 2014-08-18 16:37:38 -07:00
column_family.h WriteBatchWithIndex: a wrapper of WriteBatch, with a searchable index 2014-08-18 16:37:38 -07:00
compaction_picker.cc Remove malloc from FormatFileNumber 2014-08-13 11:57:40 -07:00
compaction_picker.h Changes to support unity build: 2014-08-11 13:22:47 -04:00
compaction.cc Changes to support unity build: 2014-08-11 13:22:47 -04:00
compaction.h Changes to support unity build: 2014-08-11 13:22:47 -04:00
corruption_test.cc Fix corruption test 2014-04-24 14:56:41 -04:00
cuckoo_table_db_test.cc Fixed compile errors (signed / unsigned comparison) in cuckoo_table_db_test on Mac 2014-08-12 17:35:09 -07:00
db_bench.cc Adding Cuckoo Table SST option to db_bench 2014-08-18 11:59:38 -07:00
db_filesnapshot.cc Support Multiple DB paths (without having an interface to expose to users) 2014-07-02 21:14:44 -07:00
db_impl_debug.cc Allow user to specify DB path of output file of manual compaction 2014-07-21 19:06:00 -07:00
db_impl_readonly.cc NewIterators in read-only mode 2014-07-23 16:52:11 -04:00
db_impl_readonly.h Fix readonly db 2014-07-30 18:21:55 -07:00
db_impl.cc Merge pull request #230 from cockroachdb/spencerkimball/send-user-keys-to-v2-filter 2014-08-18 11:09:30 -04:00
db_impl.h log db path info before open 2014-08-13 13:45:13 -07:00
db_iter_test.cc Fix clang compiler warnings 2014-07-20 22:57:20 +08:00
db_iter.cc Add histogram for DB_SEEK 2014-08-13 15:56:37 -07:00
db_iter.h In DB::NewIterator(), try to allocate the whole iterator tree in an arena 2014-06-02 17:44:57 -07:00
db_test.cc WriteBatchWithIndex: a wrapper of WriteBatch, with a searchable index 2014-08-18 16:37:38 -07:00
dbformat_test.cc Use IterKey instead of string in Block::Iter to reduce malloc 2014-07-23 12:31:11 -07:00
dbformat.cc macros for perf_context 2014-04-08 10:58:07 -07:00
dbformat.h WriteBatchWithIndex: a wrapper of WriteBatch, with a searchable index 2014-08-18 16:37:38 -07:00
deletefile_test.cc Start DeleteFileTest with clean plate 2013-11-15 16:30:23 -08:00
file_indexer_test.cc Allow user to specify DB path of output file of manual compaction 2014-07-21 19:06:00 -07:00
file_indexer.cc Allow user to specify DB path of output file of manual compaction 2014-07-21 19:06:00 -07:00
file_indexer.h Allow user to specify DB path of output file of manual compaction 2014-07-21 19:06:00 -07:00
filename_test.cc Support purging logs from separate log directory 2014-08-14 13:22:50 -07:00
filename.cc Support purging logs from separate log directory 2014-08-14 13:22:50 -07:00
filename.h Support purging logs from separate log directory 2014-08-14 13:22:50 -07:00
forward_iterator.cc ForwardIterator seek bugfix 2014-07-10 16:46:13 -07:00
forward_iterator.h Fix compile errors on Mac 2014-06-03 12:28:58 -07:00
internal_stats.cc Minor: fix a format 2014-08-06 18:11:33 -07:00
internal_stats.h Add DB property "rocksdb.estimate-table-readers-mem" 2014-08-06 11:39:46 -07:00
log_and_apply_bench.cc Fix ldb dump_manifest 2014-07-30 10:17:48 -07:00
log_format.h Some minor refactoring on the code 2014-01-02 16:32:31 -08:00
log_reader.cc Make Log::Reader more robust 2014-02-28 13:19:47 -08:00
log_reader.h Fix UnmarkEOF for partial blocks 2014-01-27 14:49:10 -08:00
log_test.cc Make it compile on Debian/GCC 4.7 2014-03-14 22:44:35 +00:00
log_writer.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_writer.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
memtable_list.cc Support Multiple DB paths (without having an interface to expose to users) 2014-07-02 21:14:44 -07:00
memtable_list.h Support Multiple DB paths (without having an interface to expose to users) 2014-07-02 21:14:44 -07:00
memtable.cc Fixed a typo in the comment for merge operator. 2014-07-30 17:25:11 -07:00
memtable.h In DB::NewIterator(), try to allocate the whole iterator tree in an arena 2014-06-02 17:44:57 -07:00
merge_context.h Enhance partial merge to support multiple arguments 2014-03-24 17:57:13 -07:00
merge_helper.cc Fixed the crash when merge_operator is not properly set after reopen. 2014-07-30 17:24:36 -07:00
merge_helper.h Fixed the crash when merge_operator is not properly set after reopen. 2014-07-30 17:24:36 -07:00
merge_operator.cc Some small cleaning up to make some compiling environment happy 2014-03-26 18:11:41 -07:00
merge_test.cc Temporary remove the last test in merge_test 2014-07-31 11:20:49 -07:00
perf_context_test.cc Missing includes 2014-03-14 13:02:20 -07:00
plain_table_db_test.cc Add DB property "rocksdb.estimate-table-readers-mem" 2014-08-06 11:39:46 -07:00
prefix_test.cc HashLinkList memtable switches a bucket to a skip list to reduce performance outliers 2014-07-01 17:14:15 -07:00
repair.cc Remove malloc from FormatFileNumber 2014-08-13 11:57:40 -07:00
simple_table_db_test.cc Add DB property "rocksdb.estimate-table-readers-mem" 2014-08-06 11:39:46 -07:00
skiplist_test.cc Clean up arena API 2014-01-30 22:10:10 -08:00
skiplist.h Consolidate SliceTransform object ownership 2014-03-10 12:56:46 -07:00
snapshot.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
table_cache.cc Add DB property "rocksdb.estimate-table-readers-mem" 2014-08-06 11:39:46 -07:00
table_cache.h Add DB property "rocksdb.estimate-table-readers-mem" 2014-08-06 11:39:46 -07:00
table_properties_collector_test.cc Add PlainTableOptions 2014-07-18 00:08:38 -07:00
table_properties_collector.cc Extract metaindex block from block-based table 2013-12-05 16:34:16 -08:00
table_properties_collector.h TablePropertiesCollectorFactory 2014-05-13 12:30:55 -07:00
transaction_log_impl.cc Fixed a file-not-found issue when a log file is moved to archive. 2014-05-12 17:50:21 -07:00
transaction_log_impl.h RocksDBLite 2014-04-15 13:39:26 -07:00
version_edit_test.cc Support Multiple DB paths (without having an interface to expose to users) 2014-07-02 21:14:44 -07:00
version_edit.cc Support Multiple DB paths (without having an interface to expose to users) 2014-07-02 21:14:44 -07:00
version_edit.h Avoid retrying to read property block from a table when it does not exist. 2014-08-15 12:17:44 -07:00
version_set_test.cc Fix clang compiler warnings 2014-07-20 22:57:20 +08:00
version_set.cc Avoid retrying to read property block from a table when it does not exist. 2014-08-15 12:17:44 -07:00
version_set.h Add DB property "rocksdb.estimate-table-readers-mem" 2014-08-06 11:39:46 -07:00
write_batch_internal.h JSON (Document) API sketch 2014-07-10 09:31:42 -07:00
write_batch_test.cc WriteBatchWithIndex: a wrapper of WriteBatch, with a searchable index 2014-08-18 16:37:38 -07:00
write_batch.cc WriteBatchWithIndex: a wrapper of WriteBatch, with a searchable index 2014-08-18 16:37:38 -07:00