Kritim Yantra
Apr 12, 2025
When designing distributed systems (like databases, microservices, or cloud applications), you face a fundamental trade-off: Can your system be consistent, highly available, and partition-tolerant at the same time?
The CAP Theorem (proposed by Eric Brewer) states that in a distributed system, you can only guarantee two out of three properties:
In this blog, we’ll break down:
✔ What the CAP Theorem really means.
✔ Real-world examples (MongoDB, Cassandra, PostgreSQL).
✔ How companies like Netflix, Amazon, and Google handle CAP trade-offs.
✔ Common misconceptions and best practices.
Let’s dive in!
System | CAP Choice | Why? |
---|---|---|
PostgreSQL (Single Server) | CA | No partitions → Strong consistency & availability. |
MongoDB (Replica Set) | CP | Defaults to strong consistency but may block writes during partitions. |
Cassandra | AP | Prioritizes availability; eventual consistency. |
Kafka | CP | Ensures no data loss but may delay availability. |
Netflix (Microservices) | AP | Prefers uptime over perfect consistency. |
CP Approach (Consistency First)
AP Approach (Availability First)
Which would you choose?
❌ "You must always sacrifice one property."
→ In practice, systems temporarily relax consistency or availability during partitions.
❌ "Partitions are rare, so CA is fine."
→ Network failures do happen (cloud outages, crashes).
❌ "NoSQL is always AP, SQL is always CP."
→ Databases can be configured differently (e.g., MongoDB can run in AP mode).
Since CAP only applies during partitions, the PACELC Theorem extends it:
Example:
✅ Choose based on use case:
✅ Use hybrid approaches:
✅ Monitor partitions: Detect and recover quickly.
✅ Leverage idempotency & retries for AP systems.
Which CAP trade-off does your system use? Share below! 👇
No comments yet. Be the first to comment!
Please log in to post a comment:
Sign in with Google