Tech comparisons at scale, from real engineering write-ups
11 head-to-heads where our database has first-party stories for both sides, often a team that migrated from one to the other. No synthetic benchmarks, no invented numbers.
Cassandra vs ScyllaDB at scale: why Discord switched
The clearest real-world comparison is Discord. It moved messages from MongoDB to Cassandra in 2017, then moved its message store from Cassandra to ScyllaDB and put Rust data services in front that coalesce requests for hot partitions, at trillions of messages. Discord's post describes ScyllaDB as Cassandra-compatible and written in C++, with no garbage collector, after years of JVM garbage-collection pauses on Cassandra.
MongoDB vs Cassandra at scale: Discord's switch and Stripe's path
Discord is the direct comparison: its 2017 post explains outgrowing MongoDB and moving messages to Cassandra with a partition key of channel plus time bucket, at billions of messages and 120 million messages a day. Stripe shows the other path: it stayed on document databases (MongoDB, then its own DocDB) and invested in zero-downtime migrations between shards, citing 1.5 PB and 99.999% uptime.
Go vs Rust for backend services at scale: what real teams chose
The best-known direct comparison is Discord's 2020 post: it rewrote its Read States service from Go to Rust to get rid of garbage-collection latency spikes in a large in-memory cache. Elsewhere in our database the two languages coexist: Dropbox lists both Rust and Go for Magic Pocket, Datadog built Husky in Go and redid timeseries indexing in Rust, and Cloudflare uses Go for Quicksilver and its HTTP analytics pipeline and Rust for Pingora.
Envoy vs Nginx at scale: why Dropbox and Cloudflare moved off Nginx
Dropbox is the direct case: it moved its edge traffic proxy from Nginx to Envoy for better observability and extensibility. Cloudflare also moved off Nginx, but to Pingora, its own Rust proxy that reuses connections better and needs less CPU and memory, at 1 trillion requests a day. OpenAI uses Envoy for connection fan-in in its Habitat storage platform.
Redis vs MySQL at scale: why Shopify moved inventory to MySQL
Shopify's 2026 post is the direct comparison: it moved checkout inventory reservations from Redis to MySQL, using one row per sellable unit, a bounded pool of 1,000 rows per item and location, and SELECT ... FOR UPDATE SKIP LOCKED. The real ceiling turned out to be connections held by other checkout code. Elsewhere Redis plays supporting roles: Stripe's rate limiters and Stack Overflow's caching.
ClickHouse vs Postgres for analytics at scale: real examples
Cloudflare's 2018 post is the direct case: it rebuilt its HTTP analytics pipeline on ClickHouse, replacing a Postgres/Citus setup, at 6M requests per second. Staying on Postgres for analytics-style data is possible too: Timescale scaled a 350 TB+ dataset (10 billion new records a day) on PostgreSQL with its TimescaleDB extension, using hypertables, columnar compression and tiered storage.
PostgreSQL vs MySQL at scale: how real companies scaled each
Both scale to very large workloads in our database. On PostgreSQL, OpenAI runs ChatGPT on a single primary with nearly 50 read replicas, and Figma and Notion sharded Postgres themselves (a custom query proxy at Figma, workspace-keyed logical shards at Notion). On MySQL, GitHub runs 5.5 million QPS across 50+ clusters, Slack (2.3 million QPS) and Shopify's Shop app shard with Vitess, and Meta's TAO caches a graph stored in sharded MySQL.
etcd vs SQLite for a control plane: Tailscale's migration
Tailscale's post is the direct comparison: it replaced etcd with SQLite plus Litestream replication for a simpler control-plane datastore. SQLite shows up at scale elsewhere too: Cloudflare's D1 manages millions of SQLite databases at the edge, and Notion caches data in the browser with WASM SQLite.
Aurora vs RDS Postgres: Atlassian's 4 million database migration
Atlassian's 2025 post is the direct case: it migrated about four million Jira databases from RDS Postgres to Aurora, balancing reliability, downtime and cost. Teams have also scaled a long way on RDS Postgres: Figma vertically partitioned and then horizontally sharded Postgres on RDS, and Notion sharded its Postgres monolith by workspace on RDS.
Sharding vs partitioning: real examples from Figma, GitHub and Notion
Partitioning splits data into smaller pieces; sharding is partitioning rows across separate database servers. In our database, vertical partitioning means moving whole table groups to their own database, as Figma, GitHub (schema domains) and GitLab (a separate CI database) did. Horizontal sharding splits rows of the same tables across servers, as Figma, Notion, Slack and Shopify did. Figma's posts show both in order: vertical partitioning (2023), then horizontal sharding (2024).
Read replicas vs sharding: how far replicas got OpenAI, and when teams sharded
OpenAI is the strongest case for going far with replicas: ChatGPT runs on a single-primary Postgres with nearly 50 global read replicas, while write-heavy shardable workloads moved to Cosmos DB. Replicas scale reads, not writes, so the teams here whose writes outgrew one primary sharded instead: Figma, Notion, Slack and Shopify.
Need numbers for your own database? Try the free Postgres connection pool size calculator.