ScramDB vs Apache Druid
Druid is a real-time analytics database with a hard constraint at the centre of it: its documentation states that it does not support single-record updates by primary key, and deleting individual records means rewriting segments. Around that sits a cluster of coordinator, overlord, broker, historical and middle manager processes, plus ZooKeeper, a metadata database and deep storage. ScramDB is one binary where UPDATE is just UPDATE, and it answered the same analytical workload far faster.
Side by side
| ScramDB | Apache Druid | |
|---|---|---|
| Updating a row | An ordinary transactional UPDATE | Not supported by primary key. Updates mean replacing a time range or reindexing |
| Deleting a row | An ordinary transactional DELETE | Reindexing with a filter, which rewrites segments |
| What you deploy | One binary, one process | Coordinator, overlord, broker, historical and middle manager, plus ZooKeeper, a metadata database and deep storage |
| Transactions | Full ACID up to serializable isolation | No multi-statement transaction model documented |
| Joins | Every SQL join, planned and compiled | Equality joins, with documented performance overhead and a recommendation to avoid them at query time |
| Wire protocol | PostgreSQL wire protocol, every standard driver and BI tool | Its own SQL API |
| Referential integrity | Foreign keys, CHECK constraints, triggers, stored procedures | Not part of the model |
| AI and agents | A semantic layer inside the engine that agents connect to directly, bound by the caller’s own permissions | No native vector search documented |
A database where you cannot update a row
Druid is built for immutable event streams, and it says so: no single-record updates by primary key, and per-record deletes handled by rewriting segments. If your data is append-only telemetry that is a reasonable trade. If a customer can change their email address, it is a design problem you will carry forever.
Five services against one file
A Druid cluster is coordinator, overlord, broker, historical and middle manager processes, with ZooKeeper for coordination, a metadata database for state and deep storage for segments. That is a lot of moving parts to keep alive before the first query. ScramDB is one static binary that you start by typing its name.
When Druid is the right answer
Very high volume event streams with sub-second slice-and-dice over time ranges, where the data never changes after it lands and the operational footprint is worth it.
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