1 unstable release
| 0.1.0 | Aug 16, 2025 |
|---|
#2105 in Database interfaces
180KB
3.5K
SLoC
🚀 AuraDB
High-performance Rust storage engine with WAL-time KV separation, RL-driven compaction, and learned indexes
AuraDB is a next-generation storage engine designed to rival and surpass RocksDB in specific workloads by combining three core innovations:
- 🔄 WAL-time Key-Value Separation (BVLSM-inspired)
- 🧠 Adaptive RL-driven Compaction (RusKey-inspired)
- 📊 Learned Indexes (DobLIX-inspired)
✨ Features
- Rust-first Design: Memory safety without performance cost
- WAL-time KV Separation: 5-7× improvement on large values (64KB+)
- RL-driven Compaction: Adaptive performance tuning under dynamic workloads
- Learned Indexes: 2-4× faster reads than traditional B-trees
- Modern Architecture: Async-first, modular design with zero-cost abstractions
- Comprehensive Benchmarking: YCSB workloads, RocksDB comparison, performance analysis
🚀 Quick Start
Installation
cargo add auradb
Basic Usage
use auradb::{AuraEngine, Engine, config::Config};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create engine with default configuration
let config = Config::default();
let engine = AuraEngine::new(config)?;
// Basic operations
engine.put(b"hello", b"world").await?;
let value = engine.get(b"hello").await?;
println!("Value: {:?}", value);
Ok(())
}
Advanced Configuration
use auradb::config::{Config, WalConfig, ValueLogConfig};
let config = Config {
db_path: "./my_database".to_string(),
wal: WalConfig {
wal_path: "./my_database/wal".to_string(),
sync_policy: 1, // fsync every write
max_size: 64 * 1024 * 1024, // 64MB
},
value_log: ValueLogConfig {
vlog_path: "./my_database/vlog".to_string(),
max_size: 1024 * 1024 * 1024, // 1GB
},
..Default::default()
};
let engine = AuraEngine::new(config)?;
📊 Performance
Current Benchmarks (M0 - Basic Implementation)
| Value Size | AuraDB | RocksDB | Improvement |
|---|---|---|---|
| 1KB | 2.2M ops/sec | 500K ops/sec | 4.5× faster |
| 8KB | 45K ops/sec | 70K ops/sec | 0.6× slower |
| 64KB | 197K ops/sec | 70K ops/sec | 2.8× faster |
Expected Performance After M1 (WAL-time KV Separation)
| Value Size | Expected Performance | Improvement |
|---|---|---|
| 1KB | 2.2M ops/sec | ✅ Already optimal |
| 8KB | 45K ops/sec | ✅ Already optimal |
| 64KB | 250K+ ops/sec | 5-7× faster than RocksDB |
🏗️ Architecture
Client API (KV + optional SQL-ish ops)
└── Router (point/scan/batch/txn)
├── Txn/TSO (optional MVCC)
├── Read Path
│ ├── Learned Index Tier (+ fallback)
│ ├── Block Cache (+ Bloom/Ribbon filters)
│ └── SST Manager (point/range reads)
└── Write Path
├── WAL-time KV Separation (KV router)
│ ├── WAL (keys + meta only)
│ └── Value Log (separate big values)
├── Memtable(s) (skiplist/ART)
└── Flush & SST Builder
🎯 Milestone Roadmap
- M0 (Current): ✅ Basic LSM skeleton, in-memory performance
- M1 (Next): WAL-time KV separation for large value optimization
- M2: Basic LSM compaction (leveled + tiered)
- M3: RL-driven compaction orchestration
- M4: Learned indexes for read performance
- M5: Value-log GC + crash recovery
- M6: Production hardening + NUMA optimization
🔬 Benchmarking
AuraDB includes a comprehensive benchmarking suite:
# Basic performance test
cargo run --release --bin benchmark -- --operations 100000
# Full-spectrum analysis
cargo run --release --bin full_benchmark
# YCSB workload testing
cargo run --release --bin ycsb_benchmark -- --workload A --operations 50000
# RocksDB comparison
cargo run --release --bin rocksdb_comparison -- --value-size 65536
# Complete YCSB suite
cargo run --release --bin run_all_ycsb_workloads
📚 Documentation
- API Reference: GitHub Repository
- Benchmarking Guide: BENCHMARKING.md
- Competitive Analysis: COMPETITIVE_ANALYSIS.md
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
git clone https://github.com/0xsupremedev/auradb.git
cd auradb
cargo build
cargo test
cargo run --release --bin benchmark
📄 License
This project is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
🙏 Acknowledgments
- BVLSM: WAL-time KV separation research
- RusKey: RL-driven compaction inspiration
- DobLIX: Learned indexes methodology
- RocksDB: Performance baseline and architecture reference
🌟 Star History
Built with ❤️ in Rust - GitHub | Issues | Discussions
Dependencies
~15–26MB
~485K SLoC