Lý do đằng sau định lý CAP là gì?


21

http://en.wikipedia.org/wiki/CAP_theorem

http: //www.cs.ber đề.edu/~brewer/cs262b-2004/PODC-keynote.pdf

Tôi nghĩ rằng nó không phải là rất đơn giản tại sao chỉ có hai của

  1. Tính nhất quán
  2. khả dụng
  3. Dung sai phân vùng

có thể giữ cho bất kỳ hệ thống cơ sở dữ liệu phân tán nhất định. Phỏng đoán này đã được chứng minh nhưng có một cách dễ dàng hơn để xem tại sao có lẽ điều này có thể giữ?

Tôi không tìm kiếm một bằng chứng, chỉ là một cách tốt để hiểu tại sao định lý này có thể có ý nghĩa. Lý do là gì?

Câu trả lời:


23

OK, hãy tưởng tượng rằng bạn có một cơ sở dữ liệu phân tán. Giả sử bạn có một nút ở Oregon và một nút ở California. Lý thuyết CAP nói rằng bạn sẽ gặp vấn đề khi thiết lập loại cơ sở dữ liệu này.

Ví dụ: nếu bạn truy vấn dữ liệu từ một cơ sở dữ liệu, nó cần giống với dữ liệu trong cơ sở dữ liệu khác. Điều này bảo đảm rằng bất kỳ giá trị nào bạn có trong một cơ sở dữ liệu đều được đảm bảo ở cơ sở dữ liệu khác ( Tính nhất quán của lý thuyết CAP). Làm điều này cho phép bạn cập nhật dữ liệu trong một cơ sở dữ liệu và truy vấn nó từ cơ sở dữ liệu khác, nhận được kết quả tương tự.

Một máy tính cập nhật dữ liệu ở Oregon, chuyển dữ liệu sang California

Khi chúng tôi cập nhật dữ liệu trong nút Oregon, dữ liệu được gửi đến nút California để cơ sở dữ liệu phù hợp. Để thực sự duy trì tính nhất quán, chúng tôi phải đảm bảo rằng cả hai cơ sở dữ liệu đều nhận được bản cập nhật trước khi được phép thực sự lưu dữ liệu (cam kết hai pha sử dụng giao dịch phân tán). Nói cách khác, nếu cơ sở dữ liệu California không thể lưu dữ liệu vì một số lý do (ví dụ như lỗi ổ cứng), thì cơ sở dữ liệu ở Oregon sẽ không lưu dữ liệu và sẽ thất bại trong giao dịch.

Vấn đề với các giao dịch phân tán như giao dịch ở trên xuất hiện khi chúng tôi muốn có tính sẵn sàng cao. Trong kịch bản này ở trên, quá trình cố gắng để đồng bộ hóa cả hai cơ sở dữ liệu là một quá trình rất, rất chậm. (Hãy tưởng tượng, chúng tôi phải gửi dữ liệu từ Oregon đến California, đảm bảo dữ liệu được gửi đến đó, đảm bảo rằng cả hai cơ sở dữ liệu đều có khóa trên dữ liệu, v.v.) Điều này gây ra sự cố lớn khi chúng tôi muốn một hệ thống nhanh và phản hồi ngay cả trong khi thời điểm nhu cầu cao. (Đây là tính khả dụng của định lý CAP.)

Thông thường, những gì chúng tôi làm để đảm bảo tính sẵn sàng cao là chúng tôi sử dụng bản sao thay vì giao dịch phân tán. Vì vậy, thay vì đảm bảo rằng California có thể chấp nhận dữ liệu, chúng tôi chỉ tiếp tục và lưu trữ dữ liệu đó trong nút Oregon và sau đó gửi dữ liệu tới California khi chúng tôi tiếp cận dữ liệu đó. Điều này đảm bảo rằng chúng tôi luôn có thể lưu trữ dữ liệu, bất kể California có sẵn sàng lưu trữ dữ liệu hay không.

Nút Oregon cập nhật dữ liệu trong khi California đọc dữ liệu.  Sau đó, dữ liệu được chuyển đến California

Điều này cải thiện Tính khả dụng, nhưng với chi phí nhất quán. Xem, nếu ai đó cập nhật dữ liệu ở Oregon và sau đó ai đó (cùng lúc) đọc dữ liệu ở California, họ sẽ không nhận được dữ liệu mới - cơ sở dữ liệu không còn phù hợp. Trên thực tế, họ sẽ không nhất quán cho đến khi Oregon gửi dữ liệu tới California!

Vì vậy, đó là sự sẵn có -vs- Sự đánh đổi nhất quán.

Dung sai phân vùng là khía cạnh thứ ba của lý thuyết CAP. Phân vùng là, trong bối cảnh này, ý tưởng rằng một cơ sở dữ liệu (hoặc hệ thống phân tán khác) có thể chia thành các phần riêng biệt và vẫn hoạt động chính xác.

Câu hỏi trở thành, điều gì xảy ra khi cả hai cơ sở dữ liệu đang chạy chính xác, nhưng liên kết từ Oregon đến California bị cắt đứt?

Oregon đang được cập nhật trong khi nút California đang được đọc.  Mạng giữa các nút bị cắt đứt.

Nếu chúng tôi cập nhật cơ sở dữ liệu ở Oregon, chúng tôi cần đưa dữ liệu đến California bằng cách này hay cách khác (giao dịch phân phối hoặc sao chép). Tuy nhiên, nếu liên kết giữa hai người bị cắt đứt, thì hệ thống đã bị phân vùng và cơ sở dữ liệu không còn được liên kết với nhau.

Khi điều này xảy ra, các lựa chọn của bạn là ngừng cho phép cập nhật (để duy trì tính nhất quán) với chi phí Sẵn có hoặc cho phép các bản cập nhật (để duy trì Tính khả dụng) với chi phí nhất quán.

Như bạn có thể thấy, dung sai phân vùng tạo ra sự đánh đổi trực tiếp giữa Tính nhất quán và Tính khả dụng.


Rõ ràng có nhiều điều hơn thế, nhưng đó là một vài ví dụ về cách ba khía cạnh chính của các hệ thống phân tán này hoạt động và chống lại nhau. Giải thích về lý thuyết CAP của Julian Browne là một nơi tuyệt vời để tìm hiểu thêm.



Với một bức tranh đẹp hơn nhiều ở đó!
Richard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.