Note: CAP is asymptotic — in absence of partition, systems can be both C and A. Real choice is between C and A only when P occurs.
2. Understanding PACELC Theorem
Condition
Choice
Examples
P (partition)
A vs C
Same as CAP
E (else, normal ops)
L (latency) vs C (consistency)
—
PA/EL
Available + low latency
Cassandra, DynamoDB, Riak
PC/EC
Always consistent
HBase, BigTable, Spanner (mostly)
PA/EC
Available on partition, consistent normally
MongoDB
3. Understanding ACID vs BASE Properties
ACID (Strong)
Atomicity: All-or-nothing
Consistency: Invariants preserved
Isolation: Concurrent txns appear serial
Durability: Committed survives crash
Examples: PostgreSQL, MySQL, Oracle
BASE (Relaxed)
Basically Available: Always responds
Soft state: May change without input
Eventual consistency: Converges over time
Examples: Cassandra, DynamoDB, Riak
4. Understanding Fault Models
Model
Assumption
Tolerance Cost
Crash-Stop
Failed nodes halt forever
f+1 nodes for f failures
Crash-Recovery
Nodes may recover with persistent state
2f+1 (Paxos/Raft)
Omission
Messages may be dropped
Retransmission protocols
Byzantine
Arbitrary/malicious behavior
3f+1 (PBFT)
5. Understanding Timing Models
Model
Bound Assumption
Practicality
Synchronous
Known bounds on delay & clock drift
Real-time/embedded only
Asynchronous
No timing assumptions
FLP impossibility for consensus
Partial Synchrony
Bounds exist but unknown, eventually hold
Real-world model (Raft, Paxos)
Note: FLP Impossibility — In a fully async system with even one crash failure, deterministic consensus is impossible. Real systems use timeouts (partial synchrony).