2012-11-30 07:39:08 +01:00
|
|
|
rocksdb: A persistent key-value store for flash storage
|
2013-07-30 17:30:13 +02:00
|
|
|
Authors: * The Facebook Database Engineering Team
|
|
|
|
* Build on earlier work on leveldb by Sanjay Ghemawat
|
|
|
|
(sanjay@google.com) and Jeff Dean (jeff@google.com)
|
2012-11-30 07:39:08 +01:00
|
|
|
|
2013-03-13 21:50:26 +01:00
|
|
|
This code is a library that forms the core building block for a fast
|
2012-11-30 07:39:08 +01:00
|
|
|
key value server, especially suited for storing data on flash drives.
|
|
|
|
It has an Log-Stuctured-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.
|
|
|
|
|
|
|
|
The core of this code has been derived from open-source leveldb.
|
|
|
|
|
2011-03-18 23:37:00 +01:00
|
|
|
The code under this directory implements a system for maintaining a
|
2011-04-21 00:48:11 +02:00
|
|
|
persistent key/value store.
|
2011-03-18 23:37:00 +01:00
|
|
|
|
|
|
|
See doc/index.html for more explanation.
|
2011-04-21 00:48:11 +02:00
|
|
|
See doc/impl.html for a brief overview of the implementation.
|
2011-03-18 23:37:00 +01:00
|
|
|
|
|
|
|
The public interface is in include/*.h. 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.
|
|
|
|
|
|
|
|
Guide to header files:
|
|
|
|
|
|
|
|
include/db.h
|
|
|
|
Main interface to the DB: Start here
|
|
|
|
|
|
|
|
include/options.h
|
|
|
|
Control over the behavior of an entire database, and also
|
|
|
|
control over the behavior of individual reads and writes.
|
|
|
|
|
|
|
|
include/comparator.h
|
|
|
|
Abstraction for user-specified comparison function. If you want
|
|
|
|
just bytewise comparison of keys, you can use the default comparator,
|
|
|
|
but clients can write their own comparator implementations if they
|
|
|
|
want custom ordering (e.g. to handle different character
|
|
|
|
encodings, etc.)
|
|
|
|
|
|
|
|
include/iterator.h
|
|
|
|
Interface for iterating over data. You can get an iterator
|
|
|
|
from a DB object.
|
|
|
|
|
|
|
|
include/write_batch.h
|
|
|
|
Interface for atomically applying multiple updates to a database.
|
|
|
|
|
|
|
|
include/slice.h
|
|
|
|
A simple module for maintaining a pointer and a length into some
|
|
|
|
other byte array.
|
|
|
|
|
|
|
|
include/status.h
|
|
|
|
Status is returned from many of the public interfaces and is used
|
|
|
|
to report success and various kinds of errors.
|
|
|
|
|
|
|
|
include/env.h
|
|
|
|
Abstraction of the OS environment. A posix implementation of
|
|
|
|
this interface is in util/env_posix.cc
|
|
|
|
|
|
|
|
include/table_builder.h
|
|
|
|
Lower-level modules that most clients probably won't use directly
|
2013-07-30 17:30:13 +02:00
|
|
|
|
|
|
|
include/cache.h
|
|
|
|
An API for the block cache.
|
|
|
|
|
|
|
|
include/compaction_filter.h
|
|
|
|
An API for a application filter invoked on every compaction.
|
|
|
|
|
|
|
|
include/filter_policy.h
|
|
|
|
An API for configuring a bloom filter.
|
|
|
|
|
|
|
|
include/memtablerep.h
|
|
|
|
An API for implementing a memtable.
|
|
|
|
|
|
|
|
include/statistics.h
|
|
|
|
An API to retrieve various database statistics.
|
|
|
|
|
|
|
|
include/transaction_log_iterator.h
|
|
|
|
An API to retrieve transaction logs from a database.
|
|
|
|
|
|
|
|
|