mirror of
https://github.com/facebook/rocksdb.git
synced 2024-11-30 04:41:49 +00:00
1ba5abca97
Summary: Ftruncate does not throw an error on disk-full. This causes Sig-bus in the case where the database tries to issue a Put call on a full-disk. Use posix_fallocate for allocation instead of truncate. Add a check to use MMaped files only on ext4, xfs and tempfs, as posix_fallocate is very slow on ext3 and older. Test Plan: make all check Reviewers: dhruba, chip Reviewed By: dhruba CC: adsharma, leveldb Differential Revision: https://reviews.facebook.net/D9291
62 lines
2.2 KiB
Plaintext
62 lines
2.2 KiB
Plaintext
rocksdb: A persistent key-value store for flash storage
|
|
Authors: The Facebook Database Engineering Team
|
|
|
|
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 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.
|
|
|
|
The code under this directory implements a system for maintaining a
|
|
persistent key/value store.
|
|
|
|
See doc/index.html for more explanation.
|
|
See doc/impl.html for a brief overview of the implementation.
|
|
|
|
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.h
|
|
include/table_builder.h
|
|
Lower-level modules that most clients probably won't use directly
|