ScramDB vs Apache Pinot
Pinot is built for user-facing dashboards with very low latency on pre-shaped data, and the shape is the point: joins live in a separate multi-stage engine rather than the default query path, and a cluster means controller, broker and server processes plus ZooKeeper and deep storage. ScramDB answered the same analytical workload several times faster from one process, with ordinary SQL joins and ordinary transactions.
Side by side
| ScramDB | Apache Pinot | |
|---|---|---|
| Joins | Every SQL join in the default query path | Available through the multi-stage engine, not the single-stage default |
| What you deploy | One binary, one process | Controller, broker and server processes, plus ZooKeeper and deep storage |
| Transactions | Full ACID up to serializable isolation | Upserts by primary key and soft deletes; no multi-statement transactions documented |
| Referential integrity | Foreign keys, CHECK constraints, triggers, stored procedures | Not part of the model |
| Wire protocol | PostgreSQL wire protocol, every standard driver and BI tool | Its own SQL API |
| Row-level security | Policies enforced in the engine for every reader | Not part of the model |
| Branching | Fork the database instantly, or open it as it was at any past timestamp | Not applicable |
| AI and agents | A semantic layer inside the engine that agents connect to directly, bound by the caller’s own permissions | Vector index for similarity search |
Low latency on data you shaped in advance
Pinot gets its speed by knowing the question ahead of time: pre-aggregated tables, star-tree indexes, denormalised data. Ask a question it was not shaped for, especially one with a join, and you are into the multi-stage engine and a different performance profile.
ScramDB compiles whatever query you send to native machine code and reads only the column blocks it needs, so an ad hoc question and a planned one cost roughly what the data says they should.
One process, and it is your database too
Pinot is downstream of a real database and needs ZooKeeper and three service types to serve a query. ScramDB is the database, on one binary, with the analytics in the same engine.
When Pinot is the right answer
User-facing analytics at extreme concurrency where the queries are known in advance and ten millisecond latency at very high query rates is the requirement.
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