Sự khác biệt giữa tính toàn vẹn và tính nhất quán là gì?


7

Cho dù tôi đã đọc về CAP hay ACID, tôi thấy rằng tính nhất quán được đề cập để đảm bảo các ràng buộc toàn vẹn DB. Vì vậy, tôi không hiểu, tại sao hai thuật ngữ được sử dụng để chỉ cùng một điều hoặc có sự khác biệt giữa tính toàn vẹn và tính nhất quán?

Tôi đọc

Dù sao đi nữa, nguyên tử, nhất quán, biệt lập, bền là tài sản của các giao dịch. Đúng là tính nguyên tử + sự cô lập là đủ để bạn có được sự nhất quán của chính mình. Nhưng chúng ta cũng có thể cuộn nguyên tử của riêng mình, cuộn sự cô lập của chính chúng ta và cuộn sự bền bỉ của chính chúng ta (độ bền). Khi chúng ta tự lăn, chúng ta phải trả tiền cho các tính năng bằng máu, mồ hôi và dấu ngoặc đơn của chính chúng ta. Chúng tôi không nói rằng các tài sản đã được trao cho chúng tôi bởi một hệ thống giao dịch.

trong đó gợi ý rằng tính nhất quán là những gì ứng dụng người dùng có thể cung cấp cho mình trên các ràng buộc toàn vẹn cơ sở dữ liệu. Đây không phải là thuộc tính được cung cấp bởi cơ sở dữ liệu, như các thuộc tính AID. Tại sao phải đặt C tiêu đề như bạn làm cho các thuộc tính AID khác do hệ thống cung cấp?

Câu trả lời:


6

Tôi nghĩ rằng sự khác biệt là hai thuật ngữ đề cập đến những điều khác nhau:

  • Tính nhất quán đề cập đến Giao dịch (đó là C trong ACID).

  • Tính toàn vẹn đề cập đến cơ sở dữ liệu.

Một giao dịch được cho là nhất quán nếu nó giữ tính toàn vẹn của cơ sở dữ liệu (nghĩa là nếu nó chuyển đổi cơ sở dữ liệu từ trạng thái hợp lệ sang trạng thái hợp lệ khác).


Đợi đã, trong tính tuần tự, tôi đọc nó Serializability is used to keep the data in the data item in a consistent state. Nếu bạn đúng, họ nên nói consistency is used to maintain the integrity/correctness, phải không? Họ dường như áp dụng thuộc tính nhất quán cho DB, thay vì giao dịch. Vì vậy, chúng ta cũng có thể nói về tính nhất quán của DB. Nó phải giống hệt với tính toàn vẹn sau đó, phải không?
Người ngoài hành tinh nhỏ

5

CAP và ACID đang thảo luận về những điều khác nhau, mặc dù cả hai đều sử dụng C cho tính nhất quán.

Đọc bài đăng của John Huggs: https://www.voltdb.com/blog/disambiguating-acid-and-cap

ACID đang xác định những gì cần thiết để thực hiện một điều thường được mô tả là thực hiện "giao dịch thực sự" hoàn thành các mục tiêu ACID. Trong thực tế, có vẻ như C for Consistency dành cho từ viết tắt nhiều hơn là xác định bất kỳ quy tắc nhất quán thực sự nào. Giao dịch là những gì xác định ranh giới của sự nhất quán.

CAP dành cho các hệ thống phân tán và hứa rằng mọi bản sao có cùng giá trị logic, trải đều trên các nút trong hệ thống phân tán, luôn có cùng một giá trị chính xác.

Tuy nhiên, do các vấn đề về độ trễ với các hệ thống phân tán, CAP không nhất thiết phải xác định giá trị logic mới nhất nào được duy trì.

Do đó, tính nhất quán trong CAP có nghĩa là mọi lần đọc đều nhận được (1) lần ghi gần đây nhất hoặc nếu không (2) xảy ra lỗi .

Xem thêm câu trả lời được chấp nhận bởi RolandoMySQLDBA (tháng 1 năm 2013) tại: Tính nhất quán trong định lý ACID và CAP, chúng có giống nhau không?

Tóm tắt về câu trả lời ngắn gọn này phân biệt như sau:

  • ACID giải quyết tính nhất quán dữ liệu của một nút riêng lẻ
  • CAP giải quyết thống nhất dữ liệu trên toàn cụm

Giải quyết hai điều khoản:

Tính toàn vẹn - Sự phù hợp trong việc áp dụng một cái gì đó vì mục đích logic, chính xác hoặc công bằng.

Tính nhất quán - Không chứa bất kỳ mâu thuẫn logic nào.

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.