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
| Crate | Holds |
|---|---|
tessarikv | the engine — this is the one you add |
tessarikv-sync | the lock-free building blocks, each documented with its specification, linearization points and memory-ordering argument |
tessarikv-format | the on-disk log and table formats |
tessarikv-types | sequence numbers, identifiers, value kinds, the internal-key codec |
tessarikv-constants | defaults and limits, each with its unit and reason |
Where else to read
- The API reference is on docs.rs/tessarikv: every type, every method and every error, generated from the source.
- The package is tessarikv on crates.io.
- The product page is kv.tessaridb.com.
- The source is github.com/tessaridb/tessarikv, under the Apache-2.0 licence.
Start with Getting started.