Skip to main content
All comparisons/ScramDB vs QuestDB

ScramDB vs QuestDB

QuestDB is built for one shape of data: every table needs a designated timestamp, there is no row-level DELETE statement (its documentation points you at dropping partitions instead), and there are no foreign keys, triggers or stored procedures. Replication, role-based access control and point-in-time recovery are Enterprise features. ScramDB is a general-purpose database that is also fast on time ranges, and it read this dataset from cold, loaded it and stored it far more efficiently.

Faster from cold
2.4x
ScramDB 189s against QuestDB 447s. First touch, nothing cached.
Faster to load
7.6x
ScramDB 717s against QuestDB 5,434s. Full 100 million row ingest.
Smaller on disk
4.2x
ScramDB 16.1 GiB against QuestDB 67.9 GiB. Same data, after load.
At a glance

Side by side

ScramDBQuestDB
Deleting rowsAn ordinary transactional DELETENo row-level DELETE statement; the documented path is dropping or rewriting partitions
Schema requirementsOrdinary tables, ordinary keysA designated timestamp column is required for partitioning and time-series queries
Referential integrityForeign keys, CHECK constraints, triggers, PL/pgSQL proceduresNone of the four
Access controlRoles, grants and row-level security in the free editionRole-based access control is an Enterprise feature
High availabilityClustering across machinesReplication and read replicas are Enterprise features; open source is a single instance
Wire protocolPostgreSQL wire protocol, every standard driverPostgreSQL wire protocol, plus its own ingestion protocols
BranchingFork the database instantly, or open it as it was at any past timestampBackup and point-in-time recovery are Enterprise features
AI and agentsA semantic layer inside the engine that agents connect to directly, bound by the caller’s own permissionsN-dimensional array type; no vector index

Fast at one thing, missing several others

QuestDB is genuinely quick on time-window queries, and it pays for that with the rest of a database. No DELETE, no foreign keys, no triggers, no procedures, and a mandatory timestamp on every table. If your data is a tick stream that is a fair trade; if it is an application, it is a long list of things you now do in application code.

And the operational pieces you expect from a database, replication, role-based access control, backups with point-in-time recovery, sit behind the Enterprise edition.

When QuestDB is the right answer

Financial tick data and high-frequency IoT telemetry where ingest rate and time-window queries are the whole workload, and the timestamp is genuinely the primary axis of everything you ask.

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.