TidesDB is a library that provides an embeddable, persistent key-value store for fast flash and ram storage.
TidesDB has a robust feature-set, and was designed to be a high-performance, low-latency storage engine. It is optimized for write and read-heavy workloads.
TidesDB is built on the principles of the Log-Structured Merge-Tree (LSM-Tree) data structure. TidesDB utilizes an in-memory AVL tree, known as a memtable, for temporarily storing key-value pairs. These pairs are then flushed to Sorted String Tables (SSTables) on disk. When the number of SSTables reaches a specified threshold, the compaction process is triggered.
This process merges pairs of SSTables into a new SSTable, and deletes any redundant, tombstoned data. The compaction process ensures that the number of SSTables remains low, and that read performance is optimized.
[!WARNING] Still in beta stages, use at your own risk and check back often for updates.
Put
, Get
, Delete
, PutBatch
, DeleteBatch
)NGet
, Range
, NRange
, GreaterThan
, LessThan
, GreaterThanEq
, LessThanEq
)Recover
)BeginTransaction
, CommitTransaction
, RollbackTransaction
) on failed commit the transaction is automatically rolled backSingle level meaning 1 memtable and multiple sstables. No hierarchical levels.
Whats required to build TidesDB?
sudo apt-get update
sudo apt-get install -y protobuf-compiler libprotobuf-dev
protoc --version
brew install protobuf
protoc --version
vcpkg install protobuf
sudo apt-get install -y libzstd-dev
vcpkg install zstd
The FFIs are still in their early stages.
Hey you, yeah you! Are you interested in joining the TidesDB project? We are always looking for talented individuals to join our open-source project.
Email us at hello@tidesdb.com with some information about yourself and how you can contribute to the project.