tidesdb / tidesdb

High-performance, durable, transactional embedded storage engine designed for flash and RAM optimization.
https://tidesdb.com
Apache License 2.0
37 stars 2 forks source link
durable embedded embedded-database keyvaluestore less-is-more library lsm-tree recovery storage-engine transactional variable-length write-ahead-log

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.

Features

Design

Single level meaning 1 memtable and multiple sstables. No hierarchical levels.

Requirements

Whats required to build TidesDB?

Protobuf

Installing Protocol Buffers

Unix/Linux
sudo apt-get update
sudo apt-get install -y protobuf-compiler libprotobuf-dev
protoc --version
MacOS
brew install protobuf
protoc --version
Windows
vcpkg install protobuf

ZSTD

Installing ZSTD

Unix/Linux
sudo apt-get install -y libzstd-dev

Windows

vcpkg install zstd

Bindings

FFI (Foreign Function Interfaces)

The FFIs are still in their early stages.

Interested in joining the project?

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.