Breaking up a monolith: How we're unwinding a shared database at scale
Datadog is splitting its large shared Postgres database into team-owned instances in three phases. Logical separation moves tables into about 30 private domain schemas with explicit ACLs, using query samples and interviews with 30+ teams. Access reduction routes services through per-team PG Proxies so ACLs can be narrowed safely, and physical separation replicates each schema to a managed OrgStore instance, moves reads first and then writes with under five seconds of downtime, and replicates back for rollback. Two workloads have fully migrated and more than 70 dead tables were deleted along the way.
- Published
- 2025-06-17
- Scale
- 30+ teams consulted, ~30 domain schemas created, 326 to 257 tables (Dec 2023 to Apr 2025), 70+ dead tables removed, <5 s downtime at write cutover
- Techniques
- database decomposition logical separation proxy-based cutover migration automation
- Stack
- PostgreSQL PgBouncer PG Proxy OrgStore
Try this stack yourself
- Railway · Deploy something like this on Railway: spin up PostgreSQL plus your app in a few clicks. New accounts get $20 in credit (applied when you pick a paid plan).
Railway isn't part of Datadog's setup in this story. It's just an easy place to try the same building blocks.
Some links above are affiliate links: if you sign up, How They Scaled may earn a commission at no extra cost to you. We only list tools that fit the stack in the story.