SplinterDB

NoSQL

SplinterDB is an embedded key-value DBMS from VMware Research.

History

SplinterDB was initially built by VMware's engineering and research teams for use as a metadata store. It was designed for optimal performance on fine-grained data sets on the fastest modern storage devices.

Data Model

Key/Value

Key/Value SplinterDB treats keys and values as bytes strings. Keys are compared using an application-provided comparison function. SplinterDB supports application-defined data types where the application may specify merging rules for data using callback functions.

Indexes

B-epsilon Tree

SplinterDB uses a mapped B^e-Tree as its global structure. The mapped B^e-Tree is a size-tiered variant of a B^e-Tree, which additionally uses maplets instead of filters to reduce the number of filter operations required for reads. B^e-Trees themselves can be considered a type of LSM.

The memtable and branches (SplinterDB's name for SSTables) use a B^+-Tree.

Query Interface

Custom API

SplinterDB provides APIs for synchronous and asynchronous point reads, as well as iterators and range read operations.

Storage Architecture

Disk-oriented

Memtable data is stored in the log. Once memtables are compacted and added to the mapped B^e-Tree, they are added as branches, which are immutable B^+-trees. These branches can be flushed down the tree and are compacted together into new branches at lower levels.

System Architecture

Embedded

SplinterDB is composed of several primary modules: trunk, btree (used for branches and memtables), maplet, cache, allocator, and log. All allocation of on-disk blocks is handled by the allocator, and nearly all allocation of memory is handled by the cache, which also determines when data is read in from or written out to disk.

SplinterDB Logo
Website

https://splinterdb.org

Source Code

https://github.com/vmware/splinterdb

Tech Docs

https://github.com/vmware/splinterdb/blob/main/docs/README.md

Twitter

@splinterdbnews

Developer

VMware, Inc.

Country of Origin

US

Start Year

2018

Project Type

Industrial Research, Open Source

Written in

C

Supported languages

C, C++

Operating Systems

Linux

Licenses

Apache v2