Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
vijay03 authored Jan 19, 2018
1 parent 32594b3 commit 3a49639
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

PebblesDB is a write-optimized key-value store which is built using
the novel FLSM (Fragmented Log-Structured Merge Tree) data
structure. FLSM is a modification of standard LSM data structure which
structure. FLSM is a modification of the standard log-structured merge tree data structure which
aims at achieving higher write throughput and lower write
amplification without compromising on read throughput.

Expand Down Expand Up @@ -44,7 +44,7 @@ ___
PebblesDB requires `libsnappy` and `libtool`. To install on Linux, please use
`sudo apt-get install libsnappy-dev libtool`. For MacOSX, use `brew install snappy` and instead of `ldconfig`, use `update_dyld_shared_cache`.

PebblesDB was built, compiled, and test with g++-4.7, g++-4.9, and g++-5. It may not work with other versions of g++ and other C++ compilers.
PebblesDB was built, compiled, and tested with g++-4.7, g++-4.9, and g++-5. It may not work with other versions of g++ and other C++ compilers.

### Installation
`$ cd pebblesdb/`
Expand All @@ -69,8 +69,8 @@ ___

### Optimizations in PebblesDB

PebblesDB uses FLSM data structure to logically arrange the sstables
on disk. FLSM helps in achieving high write throughput by reducing the
PebblesDB uses the FLSM data structure to logically arrange the sstables
on disk. FLSM helps in achieving high write throughput by reducing
write amplification. But in FLSM, each guard can contain multiple
overlapping sstables. Hence a read or seek over the database requires
examining one guard (multiple sstables) per level, thereby increasing
Expand All @@ -79,7 +79,7 @@ these challenges as follows:

#### Read optimization

* PebblesDB makes use of sstable level bloom filter instead of block
* PebblesDB makes use of sstable-level bloom filter instead of block
level bloom filter used in HyperLevelDB or LevelDB. With this
optimization, even though a guard can contain multiple sstables,
PebblesDB effectively reads only one sstable from disk per level.
Expand All @@ -91,7 +91,7 @@ these challenges as follows:

#### Seek optimization

Sstable level bloom filter can't be used to reduce the disk read for
Sstable-level bloom filter can't be used to reduce the disk read for
`seek` operation since `seek` has to examine all files within a guard
even if a file doesn't contain the key. To tackle this challenge,
PebblesDB does two optimizations:
Expand All @@ -105,8 +105,8 @@ threads. By default, this optimization is disabled. This can be
enabled by uncommenting `#define SEEK_PARALLEL` in `db/version_set.h`.

2. **Forced compaction:** When the workload is seek-heavy, PebblesDB
can be configured to do a seek-based forced compaction which aims at
reducing the number of files within a guard. This can lead to an
can be configured to do a seek-based forced compaction which aims to
reduce the number of files within a guard. This can lead to an
increase in write IO, but this is a trade-off between write IO and
seek throughput. By default, this optimization is enabled. This can
be disabled by uncommenting `#define DISABLE_SEEK_BASED_COMPACTION` in
Expand Down

0 comments on commit 3a49639

Please sign in to comment.