Trong lý thuyết khoa học máy tính, định lý CAP, còn được gọi là định lý Brewer theo tên nhà nghiên cứu Eric Brewer và được công bố năm 2000, tuyên bố rằng bất kỳ hệ thống dữ liệu phân tán nào chỉ có thể đảm bảo hai trong ba yếu tố sau đây:
| Tính nhất quán (Consistency) | Tính khả dụng
(Availability) |
Tính chịu thương tổn phân vùng
(Partition Fault Tolerance) |
|---|---|---|
| Mỗi lần đọc sẽ nhận được dữ liệu mới nhất hoặc lỗi (error). | Mỗi truy vấn luôn nhận được một trả lời không lỗi (non-error response), nhưng không đảm bảo dữ liệu trả về chứa thông tin mới nhất. | Hệ thống tiếp tục hoạt động bình thường mặc dù một số lượng bất kỳ các thông điệp (message) bị mất (hoặc trễ) vì lỗi mạng giữa các node. |
Khi xảy ra lỗi phân vùng mạng (network partition failure), hệ thống phải lựa chọn giữa hai phương án sau:
- Hủy bỏ các tác vụ, điều này giảm tính khả dụng (availability) nhưng đảm bảo tính nhất quán (consistency) của hệ thống.
- Tiếp tục thực hiện các tác vụ để duy trì tính khả dụng, nhưng có thể dẫn đến sự không nhất quán trong dữ liệu trả về.
Tóm lại, định lý CAP cho thấy rằng khi có phân vùng mạng (network partition), bạn phải chọn giữa tính nhất quán và tính khả dụng. Cần lưu ý rằng tính nhất quán theo định lý CAP khác biệt so với sự nhất quán trong các giao dịch cơ sở dữ liệu ACID.

Giải thích
Không có hệ thống phân tán nào có thể đảm bảo sự ổn định hoàn toàn khi gặp sự cố mạng; vì vậy, phân vùng mạng là một yếu tố cần xem xét. Khi mạng bị phân tách, hệ thống chỉ có thể đáp ứng một trong hai yếu tố còn lại: tính nhất quán hoặc tính khả dụng. Nếu ưu tiên tính nhất quán, hệ thống có thể trả về lỗi hoặc thông báo hết thời gian chờ nếu thông tin không được đảm bảo là mới nhất. Nếu ưu tiên tính khả dụng, hệ thống sẽ xử lý truy vấn và cung cấp thông tin hiện có, mặc dù không thể xác nhận là phiên bản mới nhất.
Việc chọn giữa tính nhất quán và tính khả dụng chỉ cần thiết khi mạng bị phân vùng; khi mạng không bị phân chia, cả tính nhất quán và tính khả dụng đều được đảm bảo.
Các hệ thống cơ sở dữ liệu truyền thống, như RDBMS, thường ưu tiên tính nhất quán hơn tính khả dụng dựa trên các tính chất ACID, trong khi các hệ thống dựa trên lý thuyết BASE, chẳng hạn như các mô hình NoSQL, thường ưu tiên tính khả dụng hơn là tính nhất quán.
Liên kết bên ngoài
- Bài viết của Brewer năm 2012 về CRDTs (kiểu dữ liệu sao chép không xung đột): CAP Mười hai năm sau và sự thay đổi của các 'quy tắc'.
- https://research.google.com/pubs/pub45855.html Spanner, TrueTime và Định lý CAP
