feat: Phase 1 — SSTable persistence, README honesty, benchmark fix

- Add Current Status / Limitations section to README
- Fix benchmark compilation (Duration.ticks → inNanoseconds)
- Implement real SSTable binary format with write/read/mmap support
- Add BloomFilter serialize/deserialize for disk storage
- Fix mmap.nim to use posix.open instead of system.open
- New PLAN.md with improvement roadmap
- All 214 tests pass
This commit is contained in:
2026-05-06 03:16:39 +03:00
parent 5b31b5b56c
commit 5dba7b5699
6 changed files with 454 additions and 16 deletions
+21
View File
@@ -6,6 +6,11 @@ BaraDB combines document, graph, vector, columnar, and full-text search storage
in a single engine with a unified query language (BaraQL). It compiles to a
single 286KB binary with no runtime dependencies.
> **Current Status:** BaraDB is an active development project and educational
> proof-of-concept. Many core algorithms are implemented and tested, but several
> critical production features are still placeholders or incomplete. See
> [Limitations](#current-limitations) below for details.
## Why BaraDB?
| Feature | GEL/EdgeDB | BaraDB |
@@ -525,6 +530,22 @@ nim c -d:release -r benchmarks/bench_all.nim
| Cluster (Raft + sharding + replication) | ✅ | 60% |
| Optimizations (SIMD + mmap done) | 🟡 | 40% |
## Current Limitations
While BaraDB demonstrates a wide range of database concepts with passing tests,
several components are simplified or incomplete for production use:
| Component | Status | Note |
|-----------|--------|------|
| LSM-Tree SSTable reads | 🟡 Placeholder | `get()` finds the key in the SSTable index but returns an empty value. Real disk I/O is pending. |
| HNSW vector search | 🟡 Linear scan | `search()` scans all vectors (O(N)). True hierarchical graph navigation is not yet implemented. |
| TCP server execution | 🟡 Stub | The async server accepts connections and echoes `"OK\n"`. It does not parse the wire protocol or execute queries. |
| Raft consensus | 🟡 In-memory only | Raft algorithm logic is implemented and tested, but there is no network transport between nodes. |
| Graph / FTS / Columnar | 🟡 In-memory only | These engines store data in RAM. Persistence to disk is not yet implemented. |
| Query codegen | 🟡 Partial | IR plans are generated, but execution against storage engines is limited. |
We are actively working to close these gaps. See the [Roadmap](#roadmap-progress) above for per-phase progress.
## License
Apache 2.0