Tính nhất quán (hệ cơ sở dữ liệu)
Tính nhất quán (tiếng Anh: consistency) trong hệ thống cơ sở dữ liệu là yêu cầu rằng giao dịch cơ sở dữ liệu đã cho bất kỳ chỉ có thể thay đổi dữ liệu theo những cách được cho phép. Bất kỳ dữ liệu nào được ghi vào cơ sở dữ liệu cũng đều phải tuân theo theo tất cả các quy tắc định sẵn, bao gồm ràng buộc, cascade, trigger, và bất kỳ cách phối trộn nào của các quy tắc trong đó. Điều này không có nghĩa là để đảm bảo giao dịch sẽ hoạt động đúng như mong muốn của lập trình viên, mà chỉ là để lỗi lập trình bất kì nào đó không gây ra vi phạm ràng buộc cơ sở dữ liệu đã định.[1]
Tính nhất quán cũng có thể hiểu sau khi ghi, sửa hoặc xóa bản ghi thành công, yêu cầu đọc bất kỳ sẽ ngay lập tức nhận được giá trị mới đây nhất của bản ghi đấy.
Như là bảo đảm ACID
[sửa | sửa mã nguồn]Tính nhất quán là một trong bốn bảo đảm làm nên giao dịch ACID; tuy nhiên, bảo đảm ở đây bản chất là như thế nào thì lại có mơ hồ đáng kể. Có nhiều định nghĩa khác nhau về nó như là:
- Sự bảo đảm rằng bất kỳ giao dịch nào đã bắt đầu trong tương lai thì đều tất yếu sẽ nhìn thấy hiệu quả của các giao dịch khác mà đã commit trong quá khứ;[2][3]
- Sự bảo đảm rằng ràng buộc cơ sở dữ liệu không bị vi phạm, đặc biệt là khi giao dịch nào đó commit;[4][5][6][7]
- Sự bảo đảm rằng các thao tác trong giao dịch đều được thực thi một cách chuẩn xác, đúng đắn và hợp lệ, làm đúng theo ngữ nghĩa của ứng dụng.[8]
Vì các định nghĩa khác nhau này không loại trừ lẫn nhau, nên hoàn toàn có thể thiết kế ra hệ thống có "tính nhất quán" mang tất cả các ý về sự bảo đảm nêu ở trên đây, như hầu hết các hệ quản trị cơ sở dữ liệu quan hệ đang thông dụng ngày nay đều làm.
Như là sự đánh đổi CAP
[sửa | sửa mã nguồn]Định lý CAP dựa trên ba sự đánh đổi, một trong số này là "tính nhất quán nguyên tử", về sự đánh đổi này thì có nhóm tác giả chú rằng "Bàn luận về tính nhất quán nguyên tử thì có phần khác với bàn về cơ sở dữ liệu ACID, vì tính nhất quán cơ sở dữ liệu là nói về giao dịch, còn tính nhất quán nguyên tử thì chỉ nói đến tính chất của thao tác 'yêu cầu' / 'hồi đáp' đơn mà thôi. Và nó cũng có nghĩa khác với tính nguyên tử trong ACID, vì nó gộp ý niệm cơ dữ liệu của cả tính nguyên lẫn tính nhất quán luôn."[9] Trong định lý CAP, ta chỉ có thể có được hai trong ba tính chất sau: tính nhất quán, tính sẵn có, hoặc tính dung sai phân vùng. Do đó, tính nhất quán có thể phải bị đánh đổi đi trong một số hệ cơ sở dữ liệu.
Xem thêm
[sửa | sửa mã nguồn]Tham khảo
[sửa | sửa mã nguồn]- ^ C. J. Date, "SQL and Relational Theory: How to Write Accurate SQL Code 2nd edition", O'reilly Media, Inc., 2012, pg. 180.
- ^ “Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services” (PDF). Bản gốc (PDF) lưu trữ ngày 29 tháng 6 năm 2019.
- ^ Ports, D.R.K.; Clements, A.T.; Zhang, I.; Madden, S.; Liskov, B. “Transactional Consistency and Automatic Management in an Application Data Cache” (PDF). Mit Csail.
- ^ Haerder, T; Reuter, A. (tháng 12 năm 1983). “Principles of Transaction-Oriented Database Recovery” (PDF). Computing Surveys. 15 (4): 287–317. doi:10.1145/289.291.
- ^ Mike Chapple. “The ACID Model”. About. Bản gốc lưu trữ ngày 29 tháng 12 năm 2016. Truy cập ngày 31 tháng 7 năm 2022.
- ^ “ACID properties”.
- ^ Cory Janssen. “What is ACID in Databases? - Definition from Techopedia”. Techopedia.com.
- ^ “ISO/IEC 10026-1:1998 - Information technology -- Open Systems Interconnection -- Distributed Transaction Processing -- Part 1: OSI TP Model”.
- ^ “Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services” (PDF). Bản gốc (PDF) lưu trữ ngày 29 tháng 6 năm 2019.
Discussing atomic consistency is somewhat different than talking about an ACID database, as database consistency refers to transactions, while atomic consistency refers only to a property of a single request/response operation sequence. And it has a different meaning than the Atomic in ACID, as it subsumes the database notions of both Atomic and Consistent.