Eight database engines in a single Rust binary. One SQL dialect. Zero network hops between vector search, graph traversal, document storage, columnar analytics, timeseries, key-value, full-text search, and multi-dimensional arrays.
Quickstart · Docs · Benchmarks · NodeDB-Lite · CLI
NodeDB replaces the combination of PostgreSQL + pgvector + Redis + Neo4j + ClickHouse + Elasticsearch with a single process. Graph queries that feed vector search, full-text ranking, and columnar aggregation execute in one engine with shared storage, shared memory, and one planner.
psql or any PostgreSQL client library. Standard SQL with engine-specific extensions where SQL can't express the operation.Timeseries ingest + query benchmark — 10M rows, high-cardinality DNS telemetry (50K+ unique domain names). Single node, NVMe storage.
| Engine | Rate | Time | Memory | Disk |
|---|---|---|---|---|
| NodeDB | 93,450/s | 107s | 120 MB | 2,217 MB |
| TimescaleDB | 56,615/s | 177s | 963 MB | 2,802 MB |
| ClickHouse | 53,905/s | 186s | 1,035 MB | 1,647 MB |
| InfluxDB | 22,715/s | 88s (2M cap) | 1,656 MB | 982 MB |
| Query | NodeDB | ClickHouse | TimescaleDB | InfluxDB (2M) |
|---|---|---|---|---|
COUNT(*) |
<1 | 1 | 423 | 13,110 |
WHERE qtype=A COUNT |
47 | 6 | 347 | 5,297 |
WHERE rcode=SERVFAIL |
41 | 6 | 334 | 1,048 |
GROUP BY qtype |
56 | 15 | 597 | 12,426 |
GROUP BY rcode |
52 | 16 | 604 | 13,183 |
GROUP BY cached+AVG |
120 | 33 | 677 | 13,652 |
GROUP BY client_ip (10K) |
141 | 157 | 660 | 14,301 |
GROUP BY qname (50K+) |
2,665 | 288 | 3,644 | 16,720 |
time_bucket 1h |
101 | 30 | 603 | -- |
time_bucket 5m+qtype |
138 | 99 | 711 | -- |
NodeDB is not a specialized timeseries database, yet it ingests 1.65x faster than TimescaleDB and 1.73x faster than ClickHouse with 8x less memory. Query latency is competitive with ClickHouse on low-cardinality aggregations and within 3-5x on high-cardinality GROUP BY. This is the tradeoff of a general-purpose engine: you get one system instead of five, with performance that stays in the same ballpark as specialized tools.
| Engine | What it replaces | Key capability |
|---|---|---|
| Vector | pgvector, Pinecone, Weaviate | HNSW with SQ8/PQ quantization, adaptive bitmap pre-filtering |
| Graph | Neo4j, Amazon Neptune | CSR adjacency, 13 algorithms, Cypher-subset MATCH, GraphRAG |
| Document | MongoDB, CouchDB | Schemaless (MessagePack + CRDT) or Strict (Binary Tuples, O(1) field access). Typeguards for gradual schema enforcement |
| Columnar | ClickHouse, DuckDB | Per-column codecs (ALP, FastLanes, FSST), predicate pushdown, HTAP bridge |
| Timeseries | TimescaleDB, InfluxDB | ILP ingest, continuous aggregation, PromQL, approximate aggregation |
| Spatial | PostGIS | R*-tree, geohash, H3, OGC predicates, hybrid spatial-vector |
| Key-Value | Redis, DynamoDB | O(1) lookups, TTL, sorted indexes, rate limiting, SQL-queryable |
| Full-Text Search | Elasticsearch | BMW BM25, 27-language support, CJK bigrams, fuzzy, hybrid vector fusion |
| Array (NDArray) | TileDB, Zarr | Multi-dimensional tiles, Z-order indexing, bitemporal support, tile-level retention |
# Docker
docker run -d \
-p 6432:6432 -p 6433:6433 -p 6480:6480 \
-v nodedb-data:/var/lib/nodedb \
farhansyah/nodedb:latest
# Cargo
cargo install nodedb
Requires Linux kernel >= 5.1 (io_uring). Connect:
ndb # native CLI (connects to localhost:6433)
psql -h localhost -p 6432 # or any PostgreSQL client
CREATE COLLECTION users;
-- Standard SQL
INSERT INTO users (name, email, age) VALUES ('Alice', 'alice@example.com', 30);
-- Object literal syntax (same result)
INSERT INTO users { name: 'Bob', email: 'bob@example.com', age: 25 };
-- Batch insert
INSERT INTO users [
{ name: 'Charlie', email: 'charlie@example.com', age: 35 },
{ name: 'Dana', email: 'dana@example.com', age: 28 }
];
SELECT * FROM users WHERE age > 25;
New here? Start with the Quickstart on the official documentation site: nodedb.dev/docs.
| Mode | Use case |
|---|---|
| Origin (server) | Full distributed database. Multi-Raft, io_uring, pgwire. Horizontal scaling. |
| Origin (local) | Same binary, single-node. No cluster overhead. |
| NodeDB-Lite | Embedded library for phones, browsers, desktops. CRDT sync to Origin. |
All eight engines as an embedded library. Linux, macOS, Windows, Android, iOS, and browser (WASM, experimental).
NodeDb trait is identical across Lite and Origin. Switch between embedded and server without changing application code.See NodeDB-Lite for platform details and sync configuration.
Write-time validation -- Typeguards enforce types, required fields, CHECK constraints, and DEFAULT/VALUE expressions on schemaless collections. Graduate to strict schema with CONVERT COLLECTION x TO document_strict.
Bitemporal queries -- System time (audit trail) and valid time (temporal semantics) across all engines. Query data as it existed in the past, or as it was valid on a past date. GDPR-compliant tile purge on array engine.
Multi-dimensional arrays -- Scientific computing with Z-order indexed tiles, tile-level compression, and bitemporal support. Combine with vector/graph/text in fused queries via cross-engine identity.
Real-time -- CDC change streams with consumer groups (~1-5ms latency). Streaming materialized views. Durable topics. Cron scheduler. LISTEN/NOTIFY. All powered by the Event Plane.
Programmability -- Stored procedures with IF/FOR/WHILE/LOOP. User-defined functions. Triggers (async, sync, deferred). SECURITY DEFINER.
Security -- RBAC with GRANT/REVOKE. Row-level security with $auth.* context across all engines. Hash-chained audit log. Multi-tenancy with per-tenant encryption. JWKS, mTLS, API keys.
Six wire protocols -- pgwire (PostgreSQL), HTTP/REST, WebSocket, RESP (Redis), ILP (InfluxDB line protocol), native MessagePack.
ndb -- Native CLI with TUI, syntax highlighting, and tab completion. Alternative to psql.The official documentation site is nodedb.dev/docs — start with the Quickstart.
In-repo references:
We welcome bug fixes, engine improvements, new codecs and analyzers, test coverage, and documentation. Read CONTRIBUTING.md before opening a PR — NodeDB's Three-Plane execution model has hard rules that reviewers enforce.
For development or contributing:
git clone https://github.com/NodeDB-Lab/nodedb.git
cd nodedb
cargo build --release
cargo install cargo-nextest --locked # one-time
cargo nextest run --all-features
NodeDB Origin is in public beta as of v0.1.0 (2026-05-07). All eight engines are feature-complete and covered by tests. The wire protocols (pgwire, HTTP, native MessagePack, RESP, ILP, WebSocket) are stable — clients written against 0.1.0 will keep working through 1.0.
v0.1.0 — Beta (today). Build new products on it. The public surface (SQL dialect, wire protocols, configuration) is stable; expect internal changes (storage layout, on-disk format, replication internals) between minor releases. Patch and minor bumps will land as needed — if something requires a 0.2, we ship a 0.2. The two months between beta and 1.0 are deliberately for real workloads to surface edge cases we can't manufacture in-house.
v1.0.0 — Production-ready (target: 2026-07-07). What 1.0 guarantees:
Pre-1.0 versions may change internals between releases — those changes are critical-path work (storage, backup, security, recovery) that has to be hardened in real production conditions before we put a sta
$ claude mcp add nodedb \
-- python -m otcore.mcp_server <graph>