« All posts

SirixDB: A bitemporal JSON database with sub-page versioning

SirixDB is a bitemporal JSON database using copy-on-write and sub-page versioning so any revision can be queried as fast as the latest.

SirixDB is an open-source JSON database that treats every revision as a first-class citizen instead of an afterthought bolted on via audit tables or event sourcing. It relies on copy-on-write structural sharing plus sub-page versioning: each commit writes page fragments containing only changed records, and a sliding-snapshot algorithm guarantees any page can be reconstructed from at most N fragments (default 3). The result is storage proportional to changed records rather than total data times revision count, with old revisions readable as fast as the latest.

A core differentiator is its bitemporal model, tracking both transaction time (when data was committed) and valid time (when it was true in the real world) independently. This lets corrections update the record without destroying the audit trail, so queries can distinguish between what the system believed at a given moment and what was actually true at a given moment.

The project publishes candid benchmarks against PostgreSQL and DuckDB. PostgreSQL still wins on raw small-document ingest throughput and total storage, while SirixDB leads on embedded reads, ~0.3 ms semantic diffs, and sub-document time travel that PostgreSQL simply lacks. Against DuckDB on 100M-record analytical workloads, SirixDB comes out ahead on three of nine query shapes, and its GraalVM native binary runs 7-17x faster than the JVM version. Distributed as a single embeddable JAR or a REST server, SirixDB is currently at 1.0.0-beta, with its on-disk format and public APIs stabilizing toward a 1.0 release.