SirixDB Documentation

September 20, 2026 · View on GitHub

Start here. This index groups the docs by audience so you don't have to read a flat list of files.

Looking for the quickstart, install instructions, and query examples? Those live in the project README. The hosted docs site is at https://sirix.io/docs/index.html.

For users & operators

DocWhat it covers
ARCHITECTURE.mdHow SirixDB works: the node-tree encoding, copy-on-write page layout, sliding-snapshot versioning, indexes, and the bitemporal model. The best single doc for understanding the system.
operations.mdRunning SirixDB in production: configuration, memory/JVM tuning, supported environments, and deployment guidance.
BULK_IMPORT.mdThe sequential and parallel bulk JSON loaders: API, the configurations they refuse, which index families they maintain in the load's single pass, verification guarantees, tuning knobs, and measured numbers.
NATIVE_IMAGE.mdBuilding and running the GraalVM native binaries (instant startup for the CLI, shell, and REST server).
MCP_SERVER_DESIGN.mdThe Model Context Protocol server for AI agents: tools, resources, snapshot/diff workflow, and security model.

Correctness

DocWhat it covers
formal-verification.mdThe invariant catalog: load-bearing invariants of the engine stated as pre/post-conditions, each with a proof sketch and a pointer to the CI test that discharges it.
cost-based-optimizer-design.mdDesign of the cost-based query optimizer (PathSummary statistics, selectivity/cardinality estimation, predicate pushdown, join ordering).
KNOWN_LIMITATIONS.mdEvery disabled test in sirix-core, why it is off, and the tracking artifact — so a real correctness gap is never mistaken for a benchmark that is simply not run in CI.

Projection indexes

DocWhat it covers
PROJECTION_INDEXES.mdThe user-facing feature: what a columnar projection index is, how to create one in JSONiq, and which analytical queries it accelerates. Start here.
PROJECTION_INDEX_DEEP_DIVE.mdOne dataset walked through every layer — JSON rows to columnar leaves to semantic segments to the bytes on disk to the SIMD kernels — and back up through maintenance and time travel.
PROJECTION_INDEX_INCREMENTAL_MAINTENANCE.mdNormative contract for the V0 storage format: exact record lookup, document-order routing, and local update/delete/insert/move maintenance.
SEGMENT_PROJECTION_INDEXES.mdSpecification of the projection storage format, dictionaries, sorted views, read structures, query routes and I/O layer, with the 2026 ClickBench/JSONBench campaign record, its measured results and open questions.

The remaining PROJECTION_INDEX_*.md files are storage-format design notes; the deep dive cites them where they matter. Plans for shrinking what these indexes store are working notes of the ClickBench 100M campaign, indexed under Design notes & development archive.

Benchmarks

DocWhat it covers
BENCHMARKS.mdREST-API behavior under concurrency and a 10,000-commit large-history run, with the environment and raw-log provenance for every number.
CLICKBENCH.mdThe ClickBench port: the 43 queries translated SQL → JSONiq, the JSON encoding, how to run the load/query/differential gates, and the engine defects the port uncovered.
BENCHMARK_CAMPAIGNS.mdEvery change made in the ClickBench and JSONBench performance campaigns, written to be readable without prior knowledge of SirixDB internals.

Design notes & development archive

These are engineering working-notes kept for transparency and future reference. They document how some of the harder subsystems were designed, proven, and hardened — especially the HOT (Height-Optimized Trie) index. They are not required reading to use SirixDB, and some describe superseded iterations; treat them as an archive of the design process rather than current user-facing documentation.

ClickBench 100M storage & speed campaign

Working notes from the campaign to shrink the 100M-row ClickBench database without giving up query speed. CLICKBENCH.md above owns the benchmark itself and its published numbers; these documents record the plans, the arithmetic, and the verdicts — including the levers that were measured and rejected.

DocWhat it covers
CAMPAIGN_PROGRESS.mdThe campaign's running ledger: every session's measurements, gates, dead ends and verdicts in chronological order. The briefs below cite it for raw numbers.
CLICKBENCH_100M_RESUMPTION_PLAN.mdThe correctness + HFT plan the campaign resumed from after the 2026-08-29 crash: root cause, the failures it had to clear, and the measurement protocol.
STORAGE_AND_SPEED_PLAN.mdPlan of record for cutting storage and latency together, including the generality contract every lever must satisfy — triggered by data, statistics or configuration, never by a column name or query id.
STORAGE_FOOTPRINT_REDUCTION_PLAN.mdMeasurement-gated plan for shrinking the primary tree, projection segments and global dictionaries without giving up direct SIMD execution or incremental copy-on-write updates.
STORAGE_TO_MID_TABLE.mdWhere the bytes of the 69.6 GB database actually sit, and what would have to change to reach the leaderboard's ~15 GB median.
ROADMAP_TO_30GB.mdThe stack of levers between 69.5 GB and the ~30 GB target, each with its delta, its status, and the gate that would accept it.
SEGMENT_SCOPED_DICTIONARIES.mdDesign for retiring the load-time dictionary pre-pass by scoping record-page dictionaries to a segment.
P2_GLOBAL_DICTIONARY_DESIGN.mdResource-wide dictionaries for the fat string columns: the design, and the post-mortem of why its first gate failed and the track was stopped.
P2_SEGMENT1_BRIEF.mdSegment 1 of that design with the acceptance corrected to distinct-weighted value lengths; read it together with the document above.
INGEST_RADIX_ALLOCATION_BRIEF.mdAllocation profile of the global value-dictionary radix during ingestion, recorded so the measurement survives. Deliberately not implemented.