TundraDB combines graph traversals with SQL-style join semantics, bitemporal versioning, edge-aware MATCH/UPDATE, and Apache Arrow columnar output — built in C++23.
Traverse edges like a graph DB, but with INNER, LEFT, RIGHT, and FULL OUTER join semantics for precise control over results.
Every node tracks VALIDTIME (real-world truth) and TXNTIME (database knowledge). Time-travel queries with zero overhead when disabled.
Query results are Apache Arrow tables — zero-copy interop with Pandas, Spark, DuckDB, and any Arrow-compatible tool.
Arena-allocated nodes, LLVM DenseMap for hot paths, Intel TBB for parallel traversal. No disk I/O during queries.
Typed schemas enable fixed-layout memory, compile-time field access, and schema validation on writes.
Bind edge aliases in MATCH, filter with WHERE e.field, select e.field or e, and update edge fields via UPDATE MATCH ... SET e.field = ....
Snapshot-based COMMIT writes shards and edges to Parquet files with JSON metadata. Fast cold-start recovery.
A complete session in TundraQL — schema, edge schema, edge update, edge filter, and edge selection.
CREATE SCHEMA User (name: STRING, age: INT64);
CREATE SCHEMA Company (name: STRING, size: INT64);
CREATE EDGE SCHEMA WORKS_AT (since: INT64, role: STRING);
CREATE NODE User (name = "Alice", age = 30) RETURN id; // → id: 0
CREATE NODE User (name = "Bob", age = 25) RETURN id; // → id: 1
CREATE NODE Company (name = "Google", size = 3000); // → id: 0
CREATE EDGE WORKS_AT FROM User(1) TO Company(0);
UPDATE MATCH (u:User)-[e:WORKS_AT]->(c:Company)
SET e.since = 2025, e.role = "engineer";
MATCH (u:User)-[e:WORKS_AT]->(c:Company)
WHERE e.since = 2025
SELECT u.name, c.name, e.since, e.role;
// Select full edge alias (all edge columns)
MATCH (u:User)-[e:WORKS_AT]->(c:Company)
SELECT e;
COMMIT;
Database layers, sharding, memory arenas, temporal versioning, and persistence internals.
Explore →Complete language reference — CREATE, MATCH, DELETE, WHERE, SELECT, JOIN types, data types.
Read docs →Interactive step-through of query execution with graph visualization. See how MATCH works in real-time.
Try it →Mathematical foundations — BFS row generation, join semantics, tree merging, complexity analysis.
Deep dive →Columnar output format
On-disk persistence
Parallel traversal
DenseMap, SmallVector
Query parser
Core language