Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Read- and latency-optimized log structured merge tree
C++ C
branch: master

contact info

latest commit fc49c4e0ce
Russell Sears authored
Failed to load latest commit information.
servers add missing license headers
test moved bloom filter into stasis
.cproject apache2 license + headers
.project import eclipse project goo
CMakeLists.txt moved bloom filter into stasis
LICENSE.txt forgot to commit license.txt
Makefile add missing license headers
README contact info
bLSM.cpp cannonicalize filenames (so they match the classes they define)
bLSM.h moved bloom filter into stasis
dataPage.cpp cannonicalize filenames (so they match the classes they define)
dataPage.h cannonicalize filenames (so they match the classes they define)
dataTuple.h cannonicalize filenames (so they match the classes they define)
diskTreeComponent.cpp moved bloom filter into stasis
diskTreeComponent.h moved bloom filter into stasis
memTreeComponent.cpp cannonicalize filenames (so they match the classes they define)
memTreeComponent.h rename classes to lowerCamelCase
mergeManager.cpp fix under-counting of tuples inserted into c0, which was causing it t…
mergeManager.h cannonicalize filenames (so they match the classes they define)
mergeScheduler.cpp cannonicalize filenames (so they match the classes they define)
mergeScheduler.h cannonicalize filenames (so they match the classes they define)
mergeStats.cpp cannonicalize filenames (so they match the classes they define)
mergeStats.h cannonicalize filenames (so they match the classes they define)
regionAllocator.h rename classes to lowerCamelCase
tupleMerger.cpp cannonicalize filenames (so they match the classes they define)
tupleMerger.h cannonicalize filenames (so they match the classes they define)

README

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
Something went wrong with that request. Please try again.