VelociDB
A next-generation embedded database with modern architecture: MVCC, async I/O, SIMD vectorization, CRDT sync, and persistent memory support.
🚀 High-Performance: Built from the ground up for multi-core systems, NVMe storage, and distributed edge computing.
📚 Documentation
- Quick Start: Get up and running in minutes.
- Architecture: Deep dive into MVCC, Async I/O, and storage layout.
- Performance: Benchmarks and optimization guide.
- Implementation: Detailed design notes.
- Development Journey: The story behind our design choices.
- REPL Usage: Guide to the interactive shell.
- Contributing: How to get involved.
- Publishing: Guide to publishing on crates.io.
🚀 Quick Start
Interactive REPL
VelociDB v0.1.0
Type 'help' for help, 'exit' or 'quit' to exit
velocidb> CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)
OK
velocidb> INSERT INTO users VALUES (1, 'Alice', 30)
OK
velocidb> SELECT * FROM users WHERE age > 25
...
As a Library
use velocidb::Database; fn main() -> anyhow::Result<()> { let db = Database::open("my_database.db")?; db.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)")?; db.execute("INSERT INTO users VALUES (1, 'Alice')")?; let results = db.query("SELECT * FROM users")?; println!("Found {} users", results.rows.len()); Ok(()) }
Features
- Modern Core: MVCC, Async I/O (Tokio/io_uring), Lock-Free structures.
- High Performance: SIMD vectorization, Cache-conscious B-Tree, NVMe optimization.
- Storage Flexibility: Hybrid Row/Columnar storage, PMEM/DAX support, Cloud VFS.
- Sync Ready: CRDT synchronization for edge/mobile.
Installation
git clone https://github.com/niklabh/velocidb.git
cd velocidb
cargo build --releaseLimitations
- B-Tree Capacity: Currently limited to ~4,096 records due to pending internal node splitting implementation.
- SQL Support: Core subset only (No JOINs, GROUP BY yet).
License
MIT License. See LICENSE for details.