Expand description
solistore — an embedded, ordered key-value store built as an LSM tree.
It exists to replace RocksDB under SoliDB, so its surface is what SoliDB uses of RocksDB and no more: column families created and dropped at run time, atomic batches across them, range deletes, bounded iterators in both directions, checkpoints and a handful of size metrics.
Every commit is fsynced before it is acknowledged unless the database is opened in eventual mode; concurrent commits share one fsync.
Modules§
- fs
- The file system, behind a trait so tests can crash it.
Structs§
- Bytes
- A cheaply cloneable and sliceable chunk of contiguous memory.
- Column
Family - A handle on a column family. Cheap to clone. Every handle on a column
family that has been dropped reports
Error::ColumnFamilyDropped, even if one of the same name has been created since. - Db
- An open database. Cheap to clone; closed when the last clone drops.
- DbIterator
- Ingest
Report - A structural change: its MANIFEST edits, the super version it leads to,
and the table files it removes.
What
Db::ingestloaded. - Options
- Read
Options - Bounds in the style of RocksDB’s
iterate_lower_bound/iterate_upper_bound: lower inclusive, upper exclusive. - Recovery
Report - What opening the database found in its logs.
- Stats
- Counters since the database was opened: where writers waited, and how
much work the background did. A snapshot; see
Db::stats. - Write
Batch - Write
Options
Enums§
- Direction
- Durability
- When a commit is acknowledged relative to the disk.
- Error
- Everything an operation can fail with.
- Iterator
Mode - Where an iterator starts, as in RocksDB’s
IteratorMode.
Constants§
- MAX_
GROUP_ BYTES - The most a commit group writes to the WAL at once. A leader stops taking batches past this, so one huge group cannot hold every writer up.