Analysis updated 2026-05-18
Embed a single database in a Rust application that needs both fast writes and fast analytical queries
Run standard SQL queries against live and historical versions of the same data
Skip full table scans using zone maps and bloom filters for faster analytical queries
Export tables to Apache Iceberg format so other tools can read the same data
| qianzii2/rockduck | akitaonrails/ratatui-bubbletea | deepdiy/pdf2md | |
|---|---|---|---|
| Stars | 20 | 20 | 20 |
| Language | Rust | Rust | Rust |
| Setup difficulty | moderate | easy | easy |
| Complexity | 5/5 | 2/5 | 2/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires Rust 1.91 or newer, the project is an early 0.1.0 release with a Chinese-language README.
RockDuck is an embedded database written in Rust that handles both transactional and analytical workloads within a single system. This type of database is called HTAP, short for Hybrid Transactional and Analytical Processing. Most databases are optimized for one or the other: transactional databases (like PostgreSQL) are good at fast individual record reads and writes, while analytical databases (like DuckDB or ClickHouse) are good at scanning large datasets and computing aggregations. RockDuck combines both approaches in a single library you embed directly into your application. The architecture has three main components. DeltaStore is a row-oriented store that captures writes and updates at the cell level, recording before and after values with transaction IDs so the database can reconstruct any historical snapshot. Vortex is a columnar storage format for frozen, immutable segments that have been compacted out of the active write path, optimized for scanning many rows across a small number of columns. DuckDB provides the SQL execution engine through a virtual table extension, so you can run standard SQL queries against RockDuck data without building a query planner from scratch. Data is organized in a three-tier hierarchy of Segments, Granules, and Blocks, borrowed from ClickHouse's MergeTree design. Each segment starts in an active mutable state and is eventually frozen into a memory-mapped read-only file. Zone maps (per-granule min/max statistics) allow the query engine to skip irrelevant data blocks during scans. Bloom filters provide fast negative lookups. RocksDB stores all metadata across twelve column families covering primary key indexes, segment metadata, MVCC transaction tracking, zone maps, bloom filters, and Iceberg manifest data. The MVCC implementation is modeled on Apache Iceberg's shadow column approach, using created_by_txn and deleted_by_txn fields to support time-travel queries that return the state of a table as of any past transaction ID. Tables can also be exported to Apache Iceberg v2 format for interoperability with external tools. The project is at version 0.1.0, requires Rust 1.91 or newer, and is licensed under Apache 2.0. The README is written in Chinese.
An embeddable Rust database combining fast transactional writes with columnar analytical scans in one library, built on DuckDB, RocksDB, and an Apache Iceberg style storage format.
Mainly Rust. The stack also includes Rust, DuckDB, RocksDB.
Released under the Apache 2.0 license, free to use, modify, and redistribute, including for commercial projects.
Setup difficulty is rated moderate, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.