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.
cargo add stratabaseor, from Python: pip install stratabaseadded stratabase v0.9.4- ✓Apache-2.0 licensed
- ✓Single static binary
- ✓Arrow-native, zero-copy
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 · SIMD02
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 ⇄ stratabase03
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% scanned04
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 MB05
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 · WAL06
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 < 5ms12.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.
| Query | Stratabase | Cindergraph | Querium |
|---|---|---|---|
| Q1 — pricing summary | 0.41s | 0.88s | 1.62s |
| Q3 — shipping priority | 0.29s | 0.74s | 1.11s |
| Q5 — local supplier volume | 0.55s | 1.32s | 2.40s |
| Q6 — forecast revenue | 0.08s | 0.31s | 0.59s |
| Q9 — product type profit | 1.12s | 2.84s | 4.97s |
| Q18 — large volume customer | 0.74s | 1.96s | 3.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.
| Capability | Stratabase | Cindergraph | Querium |
|---|---|---|---|
| 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 |
| License | Apache-2.0 | BSL | proprietary |
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
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
Maintainer
popularFor 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
Foundry
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
$ 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.