Chương 2: XỬ LÝ CÂU TRUY VẤN SQL
2.2. Cƣỡng chế thi hành các phán đoán toàn vẹn phân tán
Cƣỡng chế thi hành các phán đoán toàn vẹn phân tán rõ ràng phức tạp hơn so với các DBMS tập trung. Vấn đề chính là quyết định, xem vị trí nào sẽ thực hiện cƣỡng chế. Lựa chọn phụ thuộc vào lớp phán đoán, kiểu cập nhật, và bản chất của vị trí đƣa ra yêu cầu cập nhật (đƣợc gọi là vị trí vấn tin chính). Vị trí này.có thể có hoặc không có quan hệ cần cập nhật hoặc một số quan hệ cố mặt trong phán đoán toàn vẹn. Tham số quan trọng cần xem xét là chi phí truyền dữ liệu, kể cả các thông báo, từ vị trí này đến vị trí khác. Bây giờ chúng ta sẽ phân tích một số chiến lƣợc khác nhau theo những tiêu chuẩn này.
2.2.1. Phán đoán riêng
Hai trường hợp có thể xẩy ra: Trường hợp thứ nhất, nếu cập nhật là yêu cầu chèn, phán đoán riêng có thể bị ép buộc thi hành tại vị trí đưa ra cập nhật. Trường hợp nếu cập nhật là xóa hoặc sửa đổi, yêu cầu sẽ gửi đến các vị trí có quan hệ cần cập nhật. Xử lý truy vấn sẽ thực hiện bằng cách lƣợng từ hóa cập nhật cho mỗi mảnh. Các bộ đƣợc tạo ra tại các vị trí sẽ hợp lại thành một quan hệ tạm thời trong trường hợp câu lệnh xóa, hoặc hiệu chỉnh (nghĩa là R+ và R-). Mỗi vị trí có mặt trong cập nhật đều thảm tra các phán đoán có liên quan đến vị trí đó (ví dụ ràng buộc miền khi xóa).
2.2.2. Phán đoán hướng tập hợp
Trước tiên chúng ta nghiên cứu các ràng buộc đơn quan hệ qua một ví dụ.
Xét phụ thuộc hàm của ví dụ 2.2. Phán đoán biên dịch kèm với kiểu cập nhật INSERT là
(EMP, INSERT, C) trong đó C là
( e EMP)( NEW1 EMP)( NEW2 EMP) (1)
(NEW1.ENO = e.ENO NEW1.ENAME = e.ENAME) ^ (2)
(NEW1.ENO = NEW2.ENO NEW1.ENAME = NEW2.ENAME) (3) Dòng thứ hai trong định nghĩa của C kiểm tra ràng buộc giữa các bộ đƣợc chèn (NEWI) và các bộ hiện có (e), còn dòng thứ ba kiểm tra giữa các bộ đƣợc chèn. Điếu
Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/
này cho thấy tại sao chúng ta khai báo hai biến (NEWl và NEW2) ở dòng thứ nhất.
Bây giờ chúng ta xét một thao tác cập nhật EMP. Trước tiên lượng từ hoá cập nhật đƣợc thực hiện bởi thể xử lý vấn tin và trả về một hoặc hai quan hệ tạm thời như trong trường hợp trước. Sau đó những quan hệ tạm thời được gửi đến tất cả mọi vị trí lưu EMP. Giả sử rằng cập nhật này là một câu lệnh INSERT. Thế thì mỗi vị trí có chứa một mảnh của EMP sẽ phải thi hành phán đoán C đƣợc mô tả ở trên . Bởi vì e trong C đƣợc lƣợng từ hóa phổ dụng, dữ liệu cục bộ tại mỗi vị trí phải thoả C.
Điều này do sự kiện x {a1, a2, …, an)f(x) tương đương với [f(a1) f(a2) … f(an)]. Vì vậy vị trí đƣa ra yêu cầu cập nhật phải nhận đƣợc các thông báo từ mỗi vị trí, cho biết rằng phán đoán này đƣợc thỏa và là một điều kiện cho tất cả mọi vị trí.
Nếu phán đoán không được thỏa mãn tại một vị trí, vị trí này sẽ gửi thông báo lưu cho biết rằng phán đoán bị vi phạm. Do vậy cập nhật sẽ không có giá trị và khi đó nhiệm vụ của tiểu hệ thống kiểm tra toàn vẹn là quyết định xem toàn bộ chương trình phải đƣợc loại bỏ hay không.
Bây giờ chúng ta xem xét các phán đoán đa quan hệ. Để cho đơn giản, chúng ta giả sử rằng các phán đoán toàn vẹn không có quá một biến bộ biến thiên trên cùng một quan hệ. Có lẽ đây là trường hợp hay gặp nhất. Giống như với các phán đoán đơn quan hệ, cập nhật đƣợc tính toán tại vị trí đƣa ra yêu cầu này. Cƣỡng chế thi hành được thực hiện tại vị trí vấn tin chính nhờ thuật toán ENFORCE dưới đây.
Thuật toán 2.1 ENFORCE
Nguyên liệu: T: kiểu cập nhật; R: quan hệ begin
truy xuất tất cả các phán đoán biện dịch (R, T, Ci) inconsistency false
for mỗi phán đoán biên dịch do begin
result truy xuất tất cả cỏc bộ mới (tương ứng là bộ cũ) của R với ơ(Ci) if Card(result) 0 then
Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/
begin
inconsistency true exit
end if end for
if not (inconsistency) then
gửi các bộ cập nhật đến tất cá các vị trí đang có các mảnh của R else phế bỏ cập nhật
end if
end. {ENFORCE}
Ví dụ 2.5
Chúng ta minh họa thuật toán này qua một thí dụ dựa trên phán đoán khóa ngoại của ví dụ 2.1. Gọi u là một thao tác chèn một bộ mới vào ASG. Thuật toán bên trên dùng phán đoán biên dịch (ASG, INSERT, C), trong đó C là
NEW ASG+ , j PROJ : NEW.PNO = j.PNO
Đối với phán đoán này, câu lệnh lấy dữ liệu là truy xuất tất cả các bộ mới trong ASG+ không thỏa C.
Câu lệnh này có thể đƣợc diễn tả bằng SQL nhƣ sau SELECT NEW. *
FROM ASG+ NEW , PROJ
WHERE COUNT (PROJ.PNO WHERE NEW.PNO = PROJ.PNO) = 0 Chú ý rằng NEW.* biểu thị tất cả các bộ của ASG+.
Vì vậy chiến lược của chúng ta là gửi các bộ mới đến các vị trí có lưu quan hệ PROJ để thực hiện nối rồi tập trung tất cả mọi kết quả về vị trí vấn tin chính. Với mỗi vị trí có lưu một mảnh của PROJ, nó sẽ nối mảnh đó với ASG+ và gửi kết quả về vị trí vấn tin chính. Nơi đây sẽ lấy hợp tất cả mọi kết quả. Nếu hợp rỗng thì CSDL nhất quán. Bằng không cập nhật này sẽ dẫn đến một trạng thái không nhất quán. Phế bỏ chương trình khi đó phụ thuộc vào chiến lược được chọn bởi bộ quản lý chương trình của DBMS phân tán.
Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/
2.2.3. Phán đoán có hàm gộp
Loại phán đoán này có chi phí kiểm tra cao nhất vì chúng đòi hỏi phải tính các hàm gộp. Hàm gộp thường được dùng là MIN, MAX, SUM và COUNT. Mỗi hàm gộp chứa một phần chiếu và một phần chọn. Để cƣỡng chế các phán đoán này một cách hiệu quả, chúng ta có thể tạo ra các phán đoán biên dịch nhằm cô lập dữ liệu thừa được lưu tại mỗi vị ta có chứa quan hệ đi kèm [Bernstein and 1 Blaustein, 1982]. Dữ liệu này đƣợc gọi là các khung nhìn cụ thể (concrete view).
Tóm tắt về vấn đề kiểm soát toàn vẹn phân tán
Vấn đề chính của kiểm soát toàn vẹn phân tán đó là chi phí truyền và chi phí xử lý việc cƣỡng chế thi hành các phán đoán phân tán. Hai vấn đề chính trong khi thiết kế một tiểu hệ thống toàn vẹn phân tán là định nghĩa các phán đoán phân tán và các thuật toán cƣỡng chế nhằm hạ thấp tối đa chi phí kiểm tra toàn vẹn phân tán.
Chúng ta đã chứng minh rằng việc kiểm soát ràng buộc phân tán có thể đạt đƣợc bằng cách mở rộng một phương pháp ngăn cản dựa trên quá trình biên dịch các phán đoán toàn vẹn ngữ nghĩa. Đây là phương pháp tổng quát vì tất cả mọi kiểu phán đoán diễn tả bằng logic vị từ bậc nhất đều có thể xử lý được. Nó cũng tương thích với định nghĩa phân mảnh và hạ thấp tối đa việc truyền thông qua lại giữa các vị trí. Chúng ta có thể có đƣợc một hiệu năng cƣỡng chế toàn vẹn phân tán tốt hơn nếu các mảnh đƣợc định nghĩa một cách cẩn thận. Vì thế đặc tả ràng buộc toàn vẹn phân tán là một vấn đề quan trọng trong quá trình thiết kế CSDL phân tán.