Database DesignACID vs BASEMedium⏱️ ~3 min

When to Choose ACID vs BASE

Choose ACID When

Choose ACID when invariants must never be violated: financial ledgers (atomic debits and credits), inventory at checkout (prevent overselling), entitlements (one seat per ticket). ACID within a single region keeps coordination cheap (10-40ms P99 versus 100-200ms cross-region).

Choose BASE When

Choose BASE when low latency and availability matter more than immediate consistency. Read-heavy catalogs benefit from eventual reads (single-digit ms, 3K reads/sec per partition). Activity feeds, profiles, sessions, telemetry tolerate staleness. Shopping carts merge concurrent adds (union of items) without coordination because the operation is commutative (order does not matter).

Hybrid Approach

Use ACID for source of truth (orders, 15ms) and BASE for projections (100-200ms lag). CDC connects them. Scales reads 10x: ACID handles 10K QPS, BASE projections handle 100K QPS.

Geographic Considerations

For global users, BASE multi-region writes keep latency under 10ms locally with async replication lag. ACID cross-region costs 100-200ms but guarantees correctness. Middle ground: ACID within region, BASE across regions.

💡 Key Takeaways
ACID for correctness-critical: financial ledgers, inventory decrements, entitlements where double-spend is unacceptable
BASE for availability-critical: catalogs, activity feeds, session data where staleness is tolerable and operations can merge
Hybrid pattern: ACID source of truth (10K QPS) with CDC to BASE projections (100K QPS), accepting 100-200ms staleness
Geographic: BASE multi-region keeps local writes under 10ms; ACID cross-region costs 100-200ms but guarantees correctness
📌 Interview Tips
1Shopping cart as BASE ideal: concurrent adds merge as union (commutative operation), no coordination needed
2Inventory as ACID requirement: concurrent decrements must serialize to prevent overselling below zero
3Hybrid example: write order to ACID (15ms), emit event via CDC, update status in BASE projection (200ms lag acceptable)
← Back to ACID vs BASE Overview
When to Choose ACID vs BASE | ACID vs BASE - System Overflow