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.
Side by side
| ScramDB | DuckDB | |
|---|---|---|
| What it is | A database server you connect to over the network | A library that runs inside your process |
| Concurrency | Many clients reading and writing at once | One writer process at a time on a database file |
| Access control | Roles, grants, column privileges, row-level security | None: whoever can open the file can read it |
| Clients | Every PostgreSQL driver and BI tool | Language bindings inside one process |
| Operational workload | Transactions, triggers, foreign keys, procedures | Analytical SQL; triggers are not in the current stable release |
| Clustering | Turn it on when you need it, across machines and regions | Single process, by design |
| AI and agents | A semantic layer inside the engine that agents connect to directly, bound by the caller’s own permissions | Whatever your host application builds |
| Where it shines | The system of record for an application | Local 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.
Other head to heads
Same wire protocol, same drivers, same SQL. A columnar engine and native-code execution underneath.
ClickHouse cannot hold your transactions, so it lives next to a real database with a pipeline between them. ScramDB is both.
No columnar storage, no vectorized execution, no parallel query in the community server. Every analytical scan is a row walk.
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