A database engine that's
3-10x faster than SQLite

From-scratch Rust database with PowQL -- a pipeline query language that reads left to right. No SQL parsing overhead. Compiled predicates. Pure-Rust core.

$ cargo install powdb-cli

Benchmarks

PowDB vs SQLite on 100K rows. Both engines in memory-mode. Real numbers, no cherry-picking.

Workload PowDB SQLite Speedup
agg_min 236µs 2.34ms 9.9x
agg_max 236µs 2.10ms 8.9x
agg_sum 231µs 1.87ms 8.1x
update_by_pk 55ns 412ns 7.5x
agg_avg 401µs 2.30ms 5.7x
scan_filter_count 381µs 1.95ms 5.1x
scan_filter_sort_limit 2.66ms 9.77ms 3.7x
update_by_filter 2.16ms 6.77ms 3.1x
point_lookup_indexed 93ns 282ns 3.0x

PowQL vs SQL

PowQL reads left to right like a pipeline. No SELECT ... FROM ... WHERE juggling.

Filter and project

SQL
SELECT name, price
FROM Product
WHERE price > 10
ORDER BY name;
PowQL
Product filter .price > 10
order .name
{ .name, .price }

Aggregate with filter

SQL
SELECT AVG(age)
FROM User
WHERE city = 'NYC';
PowQL
avg(User filter .city = "NYC"
{ .age })

Group by with having

SQL
SELECT status, COUNT(*)
FROM User
GROUP BY status
HAVING COUNT(*) > 5;
PowQL
User group .status
having count(*) > 5
{ .status, count(*) }

Insert a row

SQL
INSERT INTO User (name, email, age)
VALUES ('Alice', 'alice@example.com', 30);
PowQL
insert User {
  name := "Alice",
  email := "alice@example.com",
  age := 30
}

Built for Performance

Every layer of PowDB is written in Rust, from the storage engine to the query executor.

Compiled Predicates

Filter expressions compile into byte-level operations that skip full row decoding. This is why aggregate and scan workloads run up to 10x faster than SQLite.

B+ Tree Indexes

Disk-persisted B+ tree indexes in a custom BIDX binary format. Point lookups resolve in under 150ns. Indexes survive restarts and are used automatically.

WAL + Crash Recovery

Write-ahead log with statement-boundary group commit. Full crash recovery via WAL replay, page-zero recovery, and automatic index rebuild.

Plan Cache

FNV-1a hashed plan cache with literal substitution. Parse and plan once, execute thousands of times. Prepared queries skip the entire front-end pipeline.

TypeScript Client

First-class TypeScript client (@zvndev/powdb-client) with a clean async API. Connect to PowDB server over TCP with full type safety.

TLS + Authentication

Production-ready security with TLS encryption and password authentication. Set POWDB_PASSWORD to lock down your server.

Zero C Dependencies

Pure Rust, end to end. No C FFI, no libsqlite3-sys, no bindgen. Single cargo install on any platform Rust supports.

Pipeline Query Language

PowQL reads left to right: table, filter, order, limit, project. No inside-out clause structure. Queries read like sentences.