Skip to main content
All comparisons/ScramDB vs Apache Doris

ScramDB vs Apache Doris

Apache Doris describes its unique-key tables as the way to keep dimension tables synchronised from upstream transactional databases. That is the shape of the product: it is downstream of your database, in a frontend and backend cluster of its own. ScramDB answered the same analytical workload faster, from one process, and it is the upstream database too.

Faster
1.5x
ScramDB 31.6s against Doris 48.4s. Both systems answered every query.
Faster from cold
1.1x
ScramDB 189s against Doris 208s. First touch, nothing cached.
Faster to load
3.5x behind
ScramDB 717s against Doris 205s. Full 100 million row ingest.
Smaller on disk
1.3x behind
ScramDB 16.1 GiB against Doris 12.8 GiB. Same data, after load.
At a glance

Side by side

ScramDBApache Doris
Position in your stackThe database itselfDownstream of it, kept in step by upserts
What you deployOne binary, one processFrontend and backend nodes
TransactionsFull ACID up to serializable isolationTransactional at the load level, with merge-on-write upserts
Wire protocolPostgreSQL wire protocolMySQL protocol
Referential integrityForeign keys, CHECK constraints, triggers, stored proceduresNot documented
Row-level securityPolicies enforced in the engine for every readerNot documented
BranchingFork the database instantly, or open it as it was at any past timestampBackup and restore
AI and agentsA semantic layer inside the engine that agents connect to directly, bound by the caller’s own permissionsVector index for approximate nearest neighbour search

Being downstream has a cost

Every system that receives a copy of your data inherits a pipeline, a lag and a schema that has to be kept in step by hand. Doris is built to be good at receiving that copy. ScramDB removes the copy: the analytical query reads the rows the transaction wrote, so there is nothing to synchronise and nothing to fall behind.

And it was faster here

On the same machine and the same data, ScramDB answered the analytical workload faster than Doris did, from a single process rather than a frontend and backend cluster.

When Doris is the right answer

High-concurrency real-time analytics at a scale that needs many machines, with upsert-heavy ingestion from upstream systems, under Apache 2.0.

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.