Skip to main content
All comparisons/ScramDB vs DuckDB

ScramDB vs DuckDB

DuckDB is an excellent analytical library, and its documentation is clear about what that means: it runs inside your process, there is no server to install, and across operating system processes it "only allows one writer at a time". That is fine for a notebook and impossible for an application with more than one service. ScramDB is a real server on the PostgreSQL wire protocol, with roles, row-level security, concurrent writers and a columnar engine that answers the same analytical questions.

Concurrent writers
Many
DuckDB’s own documentation allows one writer process at a time on a database file.
Clients
Everything
A network server on the PostgreSQL wire protocol, so psql, your ORM and every BI tool connect to it. DuckDB has no server to connect to.
Access control
Roles and RLS
Users, grants and row-level security policies. An embedded library has none of that.
Durability
Rewind to any moment
Transactions, crash recovery, backups to object storage and restore to any timestamp.
At a glance

Side by side

ScramDBDuckDB
What it isA database server you connect to over the networkA library that runs inside your process
ConcurrencyMany clients reading and writing at onceOne writer process at a time on a database file
Access controlRoles, grants, column privileges, row-level securityNone: whoever can open the file can read it
ClientsEvery PostgreSQL driver and BI toolLanguage bindings inside one process
Operational workloadTransactions, triggers, foreign keys, proceduresAnalytical SQL; triggers are not in the current stable release
ClusteringTurn it on when you need it, across machines and regionsSingle process, by design
AI and agentsA semantic layer inside the engine that agents connect to directly, bound by the caller’s own permissionsWhatever your host application builds
Where it shinesThe system of record for an applicationLocal analysis, notebooks, embedded analytics inside one program

The single writer is the whole story

A database that allows one writing process is a wonderful analysis tool and cannot be the heart of an application. The moment a second service, a second worker or a colleague needs to write, you need a server, and DuckDB does not ship one in its stable release.

ScramDB starts as one binary and behaves like a database: many connections, concurrent transactions, roles and privileges, and a wire protocol every tool already speaks.

Same columnar speed, plus everything a server owes you

You do not have to trade the analytical performance for that. ScramDB is columnar, compiles queries to native machine code, and answers a full analytical workload over 100 million rows in 31.6 seconds, while holding transactions, enforcing foreign keys and applying row-level security to every reader.

When DuckDB is the right answer

Local analysis, a notebook, a data science pipeline, or analytics embedded inside a single application process. DuckDB is superb at exactly that, and it is MIT licensed.

The measurement, as of 5 September 2026. A full analytical workload over 100 million rows of real web analytics data, run on a 16 vCPU AWS instance. Ours is a single ScramDB node in its stock configuration, with the GPU off and nothing tuned for the test. Rival figures are those systems’ own published results for the same instance type. These are the numbers as of that date, not a permanent scoreboard: the engine is tuned continuously and it has got faster through every round of this work, so a later run should read better than this one.

Run it yourself in one line

One static binary, no dependencies. It picks its own config, listens on the postgres port 5432 and runs in the background.

$curl -fsSL https://scramdb.com/install | bash

Quick start · How the engine works · Talk to us

A full analytical workload over 100 million rows of real web analytics data, run on a 16 vCPU AWS instance, measured 5 September 2026. Ours is a single ScramDB node in its stock configuration, with the GPU off and nothing tuned for the test. Rival figures are those systems’ own published results for the same instance type. These are the numbers as of that date, not a permanent scoreboard: the engine is tuned continuously and it has got faster through every round of this work, so a later run should read better than this one.