NodeDB

Seven data engines in one binary. Vectors, graphs, documents, columns, key-value, full-text search, and CRDT sync — with shared storage, shared memory, and zero network hops between engines.

🧠

Seven Engines, One Process

Vector (HNSW), Graph (CSR), Document (schemaless + strict), Columnar (timeseries + spatial profiles), Key-Value, Full-Text Search (BM25), and CRDT. Cross-engine queries execute in one process — no network hops, no application-level joins.

Three-Plane Architecture

Control Plane (Tokio) for SQL planning, Data Plane (Thread-per-Core + io_uring) for storage I/O and SIMD math, Event Plane for CDC, triggers, and cron. Connected by lock-free SPSC ring buffers.

🐘

PostgreSQL Compatible

Connect with psql, any PostgreSQL driver, or ORM. Six wire protocols: pgwire, HTTP, native MessagePack, RESP (Redis), ILP (InfluxDB), and WebSocket sync.

📱

Edge to Cloud

NodeDB-Lite embeds all seven engines in phones, browsers (WASM), and desktops. Offline-first with sub-millisecond reads. CRDT sync to Origin via WebSocket when connectivity returns.

🔄

Real-Time Built In

LIVE SELECT, CDC change streams with consumer groups, durable pub/sub topics, webhook delivery, cron scheduler, and streaming materialized views. No Kafka or Redis Streams sidecar needed.

🔒

Production Security

SCRAM-SHA-256, JWKS (multi-provider JWT), mTLS, RBAC, row-level security across all engines, hash-chained audit log, tenant isolation, and AES-256 encryption at rest.

What NodeDB Replaces

The combination of PostgreSQL + pgvector + Redis + Neo4j + ClickHouse + Elasticsearch — unified into one binary with shared storage and zero network hops.

EnginePurposeReplaces
VectorSemantic search, RAG, recspgvector, Qdrant
GraphRelationships, GraphRAGNeo4j
DocumentFlexible or strict schemasMongoDB, PostgreSQL
ColumnarAnalytics, timeseries, spatialClickHouse, DuckDB
Key-ValueSessions, counters, cachesRedis, DragonflyDB
Full-Text SearchBM25, fuzzy, hybrid fusionElasticsearch
CRDTOffline sync, edge devicesCustom sync layers

Choose Storage Per Collection

Unlike most databases that lock you into one model, NodeDB lets you choose per collection — and convert at any time.

CREATE COLLECTION users;                                          -- schemaless document
CREATE COLLECTION orders TYPE DOCUMENT STRICT (id UUID, ...);     -- strict (OLTP)
CREATE COLLECTION metrics TYPE COLUMNAR (ts TIMESTAMP TIME_KEY, ...); -- timeseries
CREATE COLLECTION sessions TYPE KEY_VALUE (key TEXT PRIMARY KEY);  -- key-value

CONVERT COLLECTION users TO strict;  -- convert when schema stabilizes

Cross-Engine Queries in Standard SQL

-- Vector search with metadata pre-filtering
SELECT title, vector_distance(embedding, $query_vec) AS score
FROM articles WHERE category = 'ml'
  AND id IN (SEARCH articles USING VECTOR(embedding, $query_vec, 10));

-- GraphRAG: vector seeds + graph expansion + RRF fusion
GRAPH RAG FUSION ON entities
  QUERY $embedding VECTOR_TOP_K 50 EXPANSION_DEPTH 2
  EDGE_LABEL 'related_to' FINAL_TOP_K 10;

-- Hybrid BM25 + vector
SELECT title, rrf_score(
    vector_distance(embedding, $query_vec),
    bm25_score(body, 'distributed database')
) AS score FROM articles LIMIT 10;

-- Spatial + vector
SELECT name FROM restaurants
WHERE ST_DWithin(location, ST_Point(-73.99, 40.75), 2000)
  AND embedding <-> $query_vec LIMIT 10;

Ready to build?

Get NodeDB running in under a minute with Docker or from source.