Định lý CAP

Bách khoa toàn thư mở Wikipedia
Buớc tưới chuyển hướng Bước tới tìm kiếm


Định lý CAP là một định lý được áp dụng trong lý thuyết khoa học máy tính. Còn có tên là Định lý của Brewer sau khi nhà khoa học Eric Brewer, nói rằng không thể lưu trữ dữ liệu phân tán đồng thời cung cấp hơn hai trong số ba yếu tố sau đây[1]

Tính nhất quán Tính sẵn sàng Dung sai phân vùng
Mỗi lần đọc dữ liệu, sẽ nhận được nội dung mới nhất hoặc lỗi Mỗi yêu cầu nhận được phản hồi (không phải lỗi) - không đảm bảo rằng nó chứa các ghi chép mới nhất Hệ thống tiếp tục hoạt động bất chấp một số lượng tùy ý các tin nhắn đang bị rớt (hoặc trì hoãn) bởi mạng giữa các nút

Nói cách khác, định lý CAP chỉ ra rằng trong sự hiện diện của một phân vùng mạng, người ta phải lựa chọn giữa tính nhất quán và tính khả dụng. Lưu ý rằng tính nhất quán như định nghĩa trong định lý CAP khá khác so với sự nhất quán được đảm bảo trong các giao dịch cơ sở dữ liệu ACID.

Không có hệ thống phân tán nào được an toàn trước các sự cố mạng, do đó phân vùng mạng thường phải có dung sai. Nếu ta có sự hiện diện của một phân vùng, thì sau đó sẽ loại một trong hai yếu tố còn lại: Tính nhất quán hoặc sẵn có. Khi chọn độ nhất quán về tính khả dụng, hệ thống sẽ trả lại lỗi hoặc thời gian chờ nếu thông tin cụ thể không thể đảm bảo được cập nhật do phân vùng mạng. Khi chọn tính sẵn có qua tính nhất quán, hệ thống sẽ luôn luôn xử lý truy vấn và cố gắng trả lại phiên bản hiện có của thông tin, ngay cả khi nó không thể đảm bảo nó được cập nhật do phân vùng mạng[2].

Trong trường hợp Lỗi mạng - đó là, khi hệ thống phân phối chạy bình thường - có thể thỏa mãn cả tính sẵn có và tính nhất quán.

CAP thường bị hiểu nhầm như thể người ta phải luôn luôn từ bỏ một trong ba đảm bảo. Trên thực tế, sự lựa chọn thực sự giữa tính nhất quán và tính khả dụng chỉ khi phân vùng mạng hoặc lỗi xảy ra; ở tất cả các lần khác, không có thương mại phải được thực hiện.

Các hệ thống cơ sở dữ liệu được thiết kế với các đảm bảo ACID truyền thống như RDBMS chọn sự nhất quán về tính khả dụng, trong khi các hệ thống được thiết kế dựa trên lý thuyết BASE, ví dụ như trong các mô hình về NoSQL.

Tham khảo[sửa | sửa mã nguồn]

Liên kết ngoài[sửa | sửa mã nguồn]