Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
66 lines (47 sloc) 2.45 KB
bLSM initial release
====================
This is an initial release of bLSM, which is scheduled to appear in
Sigmod 2012. bLSM is a general-purpose log structured merge tree that
targets highly-available, scalable, key-value storage systems.
We have been careful to minimize the number of seeks performed by read
and scan optimizations, and have introduced a new spring-and-gear "level
scheduler" that bounds write latencies.
The implementation is currently geared toward performance testing, and
has a number of limitations that we plan to address in short order:
* Recovery does not work until after enough data has been inserted to
start filling disk with data.
* bLSM does not take advantage of write skew to reduce write
amplification. As a side effect, certain heavily skewed workloads will
lead to unacceptably write latencies. We plan to address this by
partitioning the state on disk, and scheduling merges based on the heat of
each partition.
In the mean time, feel free to drop me a line!
Licensing
=========
bLSM uses several 3rd party open source libraries and tools.
This file summarizes the tools used, their purpose, and the licenses
under which they're released. Portions of bLSM are based upon Stasis'
"Rose" LSM-Tree implementation.
http://code.google.com/p/stasis/source/browse/trunk/benchmarks/rose.cpp
Except as specifically stated below, the 3rd party software packages
listed below are not distributed as part of this project, but instead
are separately downloaded from the respective provider and built on
the developer’s machine as a pre-build step.
bLSM relies upon Stasis, a transactional storage library written and
maintained by the authors of bLSM.
TCL/TK license (BSD-style)
http://code.google.com/p/stasis/source/browse/trunk/COPYING
http://code.google.com/p/stasis/
bLSM includes an example MapKeeper-compatible storage server, which
relies upon the MapKeeper prototocol specification, which we also
maintain:
https://github.com/m1ch1/mapkeeper
Apache 2.0 license: https://github.com/m1ch1/mapkeeper/blob/master/LICENSE.txt
The generated MapKeeper files (and, therefore the bLSM MapKeeper
bindings) also require Thrift and Boost.
Thrift is a serialization and RPC framework:
http://thrift.apache.org/
Apache 2.0 license: http://svn.apache.org/viewvc/thrift/trunk/LICENSE?view=markup
Boost is a collection of utility libraries for C++:
http://www.boost.org/
Boost Software License: http://www.boost.org/users/license.html