Research · December 5, 2024

The case for boring databases in messaging.

Cassandra, ScyllaDB, and DynamoDB are the right answer at scale and a needless complexity tax before that. A note on when boring wins.

The default reading on messaging storage is that it requires a wide-column database. The reading is correct at sufficient scale. It is wrong at the scale at which most products operate, and the operational cost of the wrong choice early is meaningful.

What Postgres does well, longer than you think

Modern Postgres on modern hardware will comfortably hold tens of billions of rows in a partitioned table. Append-heavy workloads with predictable access patterns are the easiest case for it. Messaging is exactly that.

The operational cost of running Postgres is paid every day by people who already know how to run Postgres. The operational cost of running Cassandra is paid by people who have to learn first. The asymmetry compounds for years.

When to switch, and how

The signal is when your largest partition starts to exceed comfortable disk capacity on a single primary. Long before that, you will have other signals: read latency drift on the longest threads, replica lag during peak, write amplification on the busiest accounts.

When you do switch, switch the storage tier first and leave the application contracts unchanged. The migration that surprises the application is the migration that fails. The one that swaps the storage under a stable contract succeeds quietly.

Get in touch

Building the systems that bring people together.

Questions about our brands, press, or partnerships? Send a note and we'll reply within two business days.