Stratabase

embedded · columnar · vectorized

Query billions of rows without a server.

Stratabase is an in-process analytical database written in Rust. Point it at Parquet, CSV, or Arrow, run vectorized SQL, and get answers in milliseconds — no daemon, no cluster, no JVM. One binary, zero config.

~/project — zsh
$cargo add stratabase
#or, from Python: pip install stratabase
added stratabase v0.9.4
  • Apache-2.0 licensed
  • Single static binary
  • Arrow-native, zero-copy
EXPLAIN ANALYZE0.41s · 60M rows
Aggregate (sum, avg, count)
└─ HashGroupBy [l_returnflag, l_linestatus]
   └─ Filter [l_shipdate <= '1998-09-02']
      └─ ParquetScan lineitem
         ├─ projection: 7 / 16 cols
         ├─ row groups: 12 / 60 (pruned)
         └─ pages read: 4.1% (page-index)

rows out ....... 4
batches ........ 29,297
peak memory .... 218 MB
vectorized ..... yes (SIMD, 2048)

18.7k

stars

612

forks

143

contributors

2.1k

commits

// capabilities

Built for analysts who read the source.

A vectorized engine, zero-copy Arrow, and pushdown that reaches into Parquet page indexes — packaged as a single dependency-free library.

01

Vectorized execution

A pull-based vectorized engine processes data in cache-friendly batches of 2,048 rows, exploiting SIMD on x86-64 and ARM. Filters, joins, and aggregates run at memory bandwidth, not row-at-a-time.

engine.batch_size = 2048 · SIMD

02

Zero-copy Arrow interop

Read and write Apache Arrow record batches without serialization. Hand a buffer to Pandas, Polars, or DuckDB and back again — the bytes never move, only the pointers.

arrow::RecordBatch ⇄ stratabase

03

Pushdown everywhere

Predicate, projection, and aggregate pushdown reach all the way into Parquet row groups and page indexes. Stratabase reads only the bytes a query actually needs.

WHERE ts > now() - 1h → 4% scanned

04

Embedded, not hosted

Link it as a Rust crate, a Python wheel, or a C ABI shared library. There is no server to run, no port to open, and no ops team to page at 3am.

libstratabase.so · 6.4 MB

05

ACID transactions

Multi-version concurrency control with snapshot isolation. Concurrent readers never block writers; a crash mid-write rolls back cleanly via the write-ahead log.

MVCC · snapshot isolation · WAL

06

Streaming ingest

Append micro-batches at line rate and query them instantly. Late-arriving data merges into sorted runs with a log-structured merge that keeps scans sequential.

append() → queryable < 5ms

12.4 GB/s

In-memory scan throughput, single core

4.1M rows/s

Streaming ingest, sustained

6.4 MB

Static binary, no runtime deps

0 ms

Cold-start time (it is a library)

// benchmarks

Faster, query for query.

The full TPC-H suite, run in-process. Numbers you can reproduce on your own laptop — the harness is in the repo.

QueryStratabaseCindergraphQuerium
Q1 — pricing summary0.41s0.88s1.62s
Q3 — shipping priority0.29s0.74s1.11s
Q5 — local supplier volume0.55s1.32s2.40s
Q6 — forecast revenue0.08s0.31s0.59s
Q9 — product type profit1.12s2.84s4.97s
Q18 — large volume customer0.74s1.96s3.18s

Geometric mean across all 22 TPC-H queries: 2.6× faster than Cindergraph, 4.9× faster than Querium.

TPC-H scale factor 10 (60M lineitem rows) on a 2024 MacBook Pro M3 Max, 36 GB RAM, warm OS cache. Single process, no network. Lower is better.

// comparison

How it stacks up.

An honest matrix against two alternatives teams evaluate for embedded analytics.

CapabilityStratabaseCindergraphQuerium
Runs in-process (no server)✓ yes✓ yes✕ no
Vectorized SIMD execution✓ yes~ partial✕ no
Zero-copy Arrow✓ yes✕ no~ partial
Parquet page-index pushdown✓ yes✕ no✕ no
ACID transactions✓ yes✕ no✓ yes
Rust / Python / C bindings✓ yes~ partial✕ no
LicenseApache-2.0BSLproprietary

How Stratabase compares to two common alternatives for embedded analytics.

// faq

Questions, answered plainly.

No hedging, no marketing. If something is missing, open a discussion.

01Is Stratabase a replacement for Postgres?+

No. Postgres is a transactional system of record. Stratabase is an analytical engine you embed for fast aggregate queries over columnar data. Many teams run both — Postgres for writes, Stratabase for the dashboards reading exports of that data.

02How is it different from running a query engine as a service?+

There is no service. Stratabase links directly into your process, so a query is a function call, not a network round trip. That removes an entire failure domain — no connection pools, no daemon to keep alive, no separate thing to deploy and monitor.

03What formats can it read?+

Parquet (with full page-index and statistics pushdown), CSV, JSON Lines, and Apache Arrow IPC. You can also register an in-memory Arrow table directly and query it without any copy.

04Is it production-ready at v0.9?+

The query engine and storage layer are stable and covered by a 4,200-test suite plus continuous TPC-H and fuzzing runs. We reserve the right to make breaking API changes before v1.0, which we are targeting for Q4. Pin a version and read the changelog.

05How do I get support?+

The community Discord and GitHub Discussions are active and friendly. For teams that need guaranteed response times, the Foundry sponsorship tier includes a private support channel and a roadmap call.

// sponsor

Open source, sustainably.

Stratabase is free forever. Sponsorship funds the maintainers who keep it that way.

Contributor

$5per month

For individuals who want to chip in and get a name in the credits.

  • Name in SPONSORS.md
  • Sponsor badge on your profile
  • Early access to release candidates
  • A warm feeling, on a schedule
Become a contributor

Maintainer

popular
$199per month

For companies running Stratabase in production who want a seat at the table.

  • Logo on the website and README
  • Priority issue triage
  • Quarterly roadmap input call
  • Vote on the next quarter focus
  • Everything in Contributor
Sponsor as a team

Foundry

$1,500per month

For organizations that depend on Stratabase and need a direct line.

  • Private support channel, 1-day SLA
  • Named maintainer contact
  • Custom benchmark of your workload
  • Influence over v1.0 stabilization
  • Everything in Maintainer
Talk to maintainers

$ cargo add stratabase

Drop it in. Query everything.

One dependency, one binary, zero servers. Read the quickstart and run your first vectorized query before your coffee gets cold.