Storage Engine
Native C++ with 8KB pages, LRU page cache, and WAL. NodeStore, RelationshipStore, PropertyStore—fixed-size records, bidirectional relationship lists. No GC, no JVM.
10 Years in the Making · Apache 2.0
Inspired by Neo4j. Native C++ storage with WAL, cost-based query optimizer, Raft consensus. B-tree, vector, and full-text indexes in one engine. A decade of iteration.
Origin
DingoDB started as an internal project—inspired by Neo4j, built from scratch when we needed a graph database that could handle production-scale workloads. What began as a prototype evolved over 10 years into a full stack.
Every layer is hand-crafted: storage (node/relationship/property stores, 8KB pages, LRU cache, WAL), query (DQL parser, logical/physical plans), optimizer (predicate pushdown, cost model, statistics), indexing (B-tree, vector ANN, full-text), distributed (Raft, partitioning, 2PC).
No venture funding. No hype. Just iteration. Today it's Apache 2.0—open source, no vendor lock-in.
Capabilities
Knowledge graphs, RAG, recommendation engines, fraud detection—every feature designed for graph-native workloads.
Native C++ with 8KB pages, LRU page cache, and WAL. NodeStore, RelationshipStore, PropertyStore—fixed-size records, bidirectional relationship lists. No GC, no JVM.
Cypher-like DQL, lexer/parser, AST. Rule-based (predicate pushdown, projection pushdown, constant folding) plus cost-based optimization. Statistics and histograms for plan selection.
B-tree for range queries, vector index for ANN/KNN (RAG, embeddings), full-text with tokenizer. IndexManager unifies all three in one engine.
Raft consensus, partition manager, two-phase commit for cross-shard transactions. Cluster manager, distributed executor. Built for PB-scale.
Architecture
Technical Highlights
Docker, source build, or cloud. Your choice.
# Start DingoDB with Docker
docker run -d --name dingodb \
-p 7687:7687 -p 7474:7474 \
-v dingodb-data:/var/lib/dingodb \
dingodb/dingodb:latest
# Or clone and build from source
git clone https://github.com/cndingbo2030/dingodb.git
cd dingodb && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)