Docs
  • 0.0.2latest

What TessariKV is

An embedded LSM key-value engine in pure Rust, lock-free first, async on tokio: what it holds, what state it is in, and where its API reference lives.

TessariKV is an embedded key-value storage engine written in pure Rust. It is a log-structured merge tree, built to become the storage layer under TessariDB. It is a library: there is no server and no protocol. Your program links it, opens a directory and reads and writes keys.

Status. This section describes TessariKV 0.0.2. It is in early development: the API and the on-disk format may change in any release before 1.0, and it is not yet the storage layer TessariDB ships on.

What it holds

  • Keys and values are byte strings, sorted by their bytes.
  • Keyspaces are independent sets of keys in one database, each with its own options. See Keyspaces.
  • Writes are atomic batches of puts, deletes and range deletes. See Writes and durability.
  • Reads see one snapshot, whether a single key, many keys or a range. See Reads and snapshots.
  • Transactions run at snapshot isolation, or serializable on request. See Transactions.

What it is built on

  • Lock-free first. Every shared structure on a read or write path is lock-free or wait-free wherever a non-blocking form exists: the in-memory skiplist, the block cache, the statistics counters. Readers never block writers, and writers never queue behind a lock. See How the engine works.
  • Async on tokio. Every call that can touch storage is async. The library never creates a runtime of its own; it runs on yours.
  • No C or C++. Every dependency is Rust, so the crate builds wherever Rust does: macOS, Linux and Windows.

The crates

CrateHolds
tessarikvthe engine — this is the one you add
tessarikv-syncthe lock-free building blocks, each documented with its specification, linearization points and memory-ordering argument
tessarikv-formatthe on-disk log and table formats
tessarikv-typessequence numbers, identifiers, value kinds, the internal-key codec
tessarikv-constantsdefaults and limits, each with its unit and reason

Where else to read

Start with Getting started.