Benchmarks — the full method and every number

One realistic workload — a billing SaaS's invoice ledger — run as two separate apples-to-apples comparisons: the in-process, in-memory engines (HoloDb embedded and DuckDB), and the networked services (HoloDb server and a durable on-disk SQL Server). Every result — single-table rollups and cross-table joins alike — is verified byte-for-byte identical across every engine before it is timed, including the queries where HoloDb trails.

The workload

CREATE TABLE customers ( customer_id INT PRIMARY KEY, -- 200,000 customers name TEXT, segment TEXT, -- smb / mid / enterprise / strategic tier TEXT, -- gold / silver / bronze signup_month INT ); CREATE TABLE invoices ( invoice_id INT PRIMARY KEY, -- 10,000,000 invoices customer_id INT, -- FK → customers, ~50 invoices each month INT, -- yyyymm, 202301 … 202412 (24 months) region TEXT, -- US 40% / EU 30% / APAC 20% / LATAM 10% status TEXT, -- paid 78 / pending 10 / overdue 7 / refunded 3 / failed 2 (%) amount_cents INT -- money as integer minor units (cents), long-tail $20–$50,000 );

How it's run

In-process, in memory — HoloDb (embedded) vs DuckDB (in-process), 10M invoices ⋈ 200k customers, median ms

billing queryHoloDbDuckDBfaster
revenue by region0.00448.6HoloDb ~12,000×
invoices by status0.00659.0HoloDb ~9,800×
total invoiced0.0022.95HoloDb ~1,500×
invoice count0.0010.98HoloDb ~980×
revenue by month0.0117.11HoloDb ~650×
look up one invoice0.0050.61HoloDb ~120×
big-ticket invoices (>$5k)6.403.85DuckDB ~1.7×
revenue by region & status129.776.8DuckDB ~1.7×
top customers by revenue321.7162.0DuckDB ~2.0×
largest invoices11.84.48DuckDB ~2.6×
overdue outstanding82.714.1DuckDB ~5.8×
revenue by segment (JOIN)56.765.6HoloDb ~1.2×
revenue by segment & status (JOIN)13594.9DuckDB ~1.4×
enterprise revenue (JOIN)34.310.3DuckDB ~3.3×
revenue by signup cohort (JOIN)44.015.3DuckDB ~2.9×
top named customers (JOIN)808322DuckDB ~2.5×

The purple cell is the faster engine. Bulk load, rows/sec: DuckDB 916k · HoloDb 359k. The six rollups and the lookup resolve from maintained accumulators and the PK index (no scan, hence microseconds); DuckDB's columnar engine keeps a modest lead on the single-table scans. The five cross-table JOINs now fan out in parallel across all cores: HoloDb wins revenue by segment and lands within ~1.4–3.3× of DuckDB on the rest (down from 15–92× before), all verified identical, and beats SQLite and SQL Server outright.

Networked service — HoloDb server vs SQL Server 2022 (LocalDB), 10M invoices ⋈ 200k customers, median ms

billing queryHoloDb serverSQL Serverfaster
invoices by status0.1244,032HoloDb ~32,000×
revenue by month0.1532,965HoloDb ~19,000×
revenue by region0.1342,575HoloDb ~19,000×
total invoiced0.1291,156HoloDb ~9,000×
invoice count0.138589HoloDb ~4,300×
largest invoices7.423,001HoloDb ~405×
big-ticket invoices (>$5k)4.20689HoloDb ~164×
revenue by region & status131.73,260HoloDb ~25×
overdue outstanding83.21,004HoloDb ~12×
top customers by revenue285.83,277HoloDb ~11×
enterprise revenue (JOIN)39.71,792HoloDb ~45×
revenue by segment & status (JOIN)1406,556HoloDb ~47×
revenue by segment (JOIN)57.52,946HoloDb ~51×
revenue by signup cohort (JOIN)67.62,853HoloDb ~42×
top named customers (JOIN)8064,173HoloDb ~5.2×
look up one invoice0.200.20tie (~0.2 ms)

Both are networked services paying a client/server round-trip. HoloDb serves the working set from RAM with the same maintained accumulators; SQL Server 2022 (LocalDB) reads its on-disk table. Bulk load, rows/sec: HoloDb server 697k · SQL Server 349k. HoloDb wins 15 of the 16, including all five JOINs by 5× to 51× now that they fan out in parallel across all cores (the heaviest, the name-grouped join, lands at 806 ms versus SQL Server's 4,173 ms) — with the 16th, a sub-millisecond point lookup, a tie.

What the numbers say

The maintained aggregates — the whole-ledger total and count, and the single-column GROUP BY rollups (revenue by status, month, region) — resolve in microseconds and are constant-time: a kept tally is read instead of scanning, so response holds as the ledger grows. The single-invoice lookup resolves from the primary-key index. In-process, HoloDb leads on the six rollups and the lookup; as a networked service against SQL Server it leads on 15 of the 16, including all five joins by 5× to 51× (the name-grouped join finishes in 806 ms, well under SQL Server's 4.2 s).

The five cross-table JOINs fan out in parallel across every core (through the same EvalApp-gated pool the scans use): HoloDb wins revenue by segment outright and lands within ~1.4–3.3× of DuckDB on the rest — down from 15–92× before — all verified identical. DuckDB's pure-columnar engine keeps a modest lead on the single-table scans (a filtered sum, a top-K, a multi-column group). HoloDb targets the mixed transactional, analytics and vector workload, durable and larger-than-memory, in a single embeddable dependency.

← Back to HoloDb  ·  Run it in the browser →