CAP theorem: một hệ dữ liệu phân tán chỉ đảm bảo tối đa 2 trong 3 tính chất:
- Consistency: mọi đọc thấy lần ghi mới nhất (hoặc báo lỗi) — mọi node cùng một dữ liệu.
- Availability: mọi request tới node không lỗi đều nhận phản hồi (dù có thể không mới nhất).
- Partition tolerance: hệ vẫn chạy dù mạng giữa các node bị mất/trễ gói.
Khi KHÔNG có partition, hệ có thể vừa C vừa A. Nhưng khi có partition, phải chọn:
- CP: ưu tiên nhất quán, chịu trả lỗi (vd MongoDB, etcd/ZooKeeper).
- AP: ưu tiên sẵn sàng, chấp nhận dữ liệu tạm thời lệch (vd Cassandra, CouchDB).
Vì partition là điều không tránh được trong hệ phân tán, thực chất là chọn C hay A khi partition xảy ra.