#mvcc #b-tree #lsm #llrb

nightly rdms

Composable storage for key,value index

1 unstable release

0.0.1 Oct 9, 2019

#10 in #lsm

29 downloads per month

AGPL-3.0

640KB
16K SLoC

Key Value store

License: AGPL v3

  • CRUD support.
  • ACID compliance.
  • Index held only in memory, useful for caching data.
  • Index held in memory, with as disk backup.
  • Index held in disk.
  • Index held in disk, with working set held in memory.
  • Durability guarantee using Write Ahead Logging.
  • LSM based Multi-level storage on memory and/or disks.
  • Index can be compose using:
    • Type choice of key.
    • Type choice of value.
    • Type choice of memory data-structure. Type can be:
      • Left leaning red black tree.
      • Left leaning red black tree, with Multi-version-concurrency-control.
      • Skip list, with concurrent writers.
    • Type choice of disk data-structure.
      • Read only Btree.
      • Append only Btree.
  • Centralised version control for index entries.
  • Decentralised version control for index entries.
  • Value, along with delta, can be stored in separate log files.

Open design decisions

Given Rust's threading model, is it more efficient to en-force, using atomic primitives, that all write operations on MVCC index is deligated to single thread or is it more efficient to serialize write operations from multiple threads.

Is it enough to use Relaxed memory-ordering for AtomicPtr operations to manage MVCC Snapshots ?

Add a feature for using jemalloc instead of using system allocator.

Dependencies

~10MB
~72K SLoC