Find a file
Mike Kolupaev 247d0979aa Support for range skips in compaction filter
Summary:
This adds the ability for compaction filter to say "drop this key-value, and also drop everything up to key x". This will cause the compaction to seek input iterator to x, without reading the data. This can make compaction much faster when large consecutive chunks of data are filtered out. See the changes in include/rocksdb/compaction_filter.h for the new API.

Along the way this diff also adds ability for compaction filter changing merge operands, similar to how it can change values; we're not going to use this feature, it just seemed easier and cleaner to implement it than to document that it's not implemented :)

The diff is not as big as it may seem, about half of the lines are a test.
Closes https://github.com/facebook/rocksdb/pull/1599

Differential Revision: D4252092

Pulled By: al13n321

fbshipit-source-id: 41e1e48
2016-12-01 07:09:15 -08:00
arcanist_util
build_tools pass rocksdb oncall to mysql_mtr_filter otherwise tasks get created w… 2016-11-29 12:09:12 -08:00
cmake/modules
coverage
db Support for range skips in compaction filter 2016-12-01 07:09:15 -08:00
docs
examples
hdfs
include/rocksdb Support for range skips in compaction filter 2016-12-01 07:09:15 -08:00
java
memtable
port
table
third-party
tools
util disable UBSAN for functions with intentional -ve shift / overflow 2016-11-28 17:54:12 -08:00
utilities disable UBSAN for functions with intentional -ve shift / overflow 2016-11-28 17:54:12 -08:00
.arcconfig
.clang-format
.gitignore Less linear search in DBIter::Seek() when keys are overwritten a lot 2016-11-28 10:24:11 -08:00
.travis.yml
appveyor.yml
AUTHORS
CMakeLists.txt DeleteRange write path end-to-end tests 2016-11-29 11:09:22 -08:00
CONTRIBUTING.md
DEFAULT_OPTIONS_HISTORY.md
DUMP_FORMAT.md
HISTORY.md Support for range skips in compaction filter 2016-12-01 07:09:15 -08:00
INSTALL.md
LANGUAGE-BINDINGS.md
LICENSE
Makefile DeleteRange write path end-to-end tests 2016-11-29 11:09:22 -08:00
PATENTS
README.md
ROCKSDB_LITE.md
src.mk DeleteRange write path end-to-end tests 2016-11-29 11:09:22 -08:00
thirdparty.inc
USERS.md
Vagrantfile
WINDOWS_PORT.md

RocksDB: A Persistent Key-Value Store for Flash and RAM Storage

Build Status Build status

RocksDB is developed and maintained by Facebook Database Engineering Team. It is built on earlier work on LevelDB by Sanjay Ghemawat (sanjay@google.com) and Jeff Dean (jeff@google.com)

This code is a library that forms the core building block for a fast key value server, especially suited for storing data on flash drives. It has a Log-Structured-Merge-Database (LSM) design with flexible tradeoffs between Write-Amplification-Factor (WAF), Read-Amplification-Factor (RAF) and Space-Amplification-Factor (SAF). It has multi-threaded compactions, making it specially suitable for storing multiple terabytes of data in a single database.

Start with example usage here: https://github.com/facebook/rocksdb/tree/master/examples

See the github wiki for more explanation.

The public interface is in include/. Callers should not include or rely on the details of any other header files in this package. Those internal APIs may be changed without warning.

Design discussions are conducted in https://www.facebook.com/groups/rocksdb.dev/