Skip to main content
All comparisons/ScramDB vs Elasticsearch

ScramDB vs Elasticsearch

Elasticsearch is a search engine, and using it as an analytical database means living with its model: no cross-document transactions, updates implemented as get-modify-reindex rather than in-place mutation, and joins that its own documentation calls prohibitively expensive in a distributed system. ScramDB answered the same analytical workload many times faster, with ordinary SQL joins, ordinary transactions and ordinary updates.

Faster
15x
ScramDB 31.6s against Elasticsearch 460s. Elasticsearch left a query unanswered on this run.
Faster from cold
2.6x
ScramDB 189s against Elasticsearch 497s. First touch, nothing cached.
Faster to load
13x
ScramDB 717s against Elasticsearch 9,531s. Full 100 million row ingest.
Smaller on disk
5.0x
ScramDB 16.1 GiB against Elasticsearch 80.0 GiB. Same data, after load.
At a glance

Side by side

ScramDBElasticsearch
TransactionsFull ACID up to serializable isolation across many rowsOptimistic concurrency on a single document. No cross-document transactions
Updating a rowAn in-place transactional UPDATEGet, modify and reindex the document
JoinsEvery SQL joinDenormalisation, nested or parent-child queries, or a single-field lookup join
Query languagePostgreSQL SQL, on the PostgreSQL wire protocolQuery DSL, or its own SQL and pipeline languages
Referential integrityForeign keys, CHECK constraints, triggers, stored proceduresNot part of the model
Storage footprintColumnar and compressedInverted indexes, which are larger than the source data
AI and agentsA semantic layer inside the engine that agents connect to directly, bound by the caller’s own permissionsDense vector fields with approximate nearest neighbour search, a genuine strength
LicenseCommunity free up to 64 GiB stored, Enterprise beyondElastic License 2.0, SSPL or AGPLv3

Search-shaped storage costs you at analysis time

Inverted indexes are built to find documents, not to scan and aggregate columns. That shows up twice: in the time an aggregation over a hundred million rows takes, and in the disk it occupies to get there.

The relational parts are the parts that are missing

No cross-document transactions, no foreign keys, no triggers, no procedures, and joins that its documentation steers you away from. Teams work around all of it by denormalising, which means writing the same fact in several places and hoping every writer agrees. ScramDB gives you the relational guarantees and the analytical speed in one engine.

When Elasticsearch is the right answer

Full text search. Analyzed text, relevance scoring, fuzzy and phrase matching at scale, plus a mature vector search story. If search is the product, Elasticsearch is the right tool and ScramDB is not trying to replace it.

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.