Chương 1: CƠ SỞ LÝ THUYẾT
1.2.1. Kiểm soát toàn vẹn ngữ nghĩa phân tán
Định nghĩa: Mỗi phán đoán đƣợc xem là một lƣợng từ hoá vấn tin, trong đó nó nhận giá trị đúng hoặc sai với mỗi bộ trong tích Descartes của các quan hệ đƣợc xác định bởi các biến bộ. Do các phán đoán liên quan đến dữ liệu lưu ở nhiều vị trí khác nhau, nơi lưu trữ chúng cần phải được cân nhắc để giảm chi phí thẩm tra toàn vẹn.
Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/
Định nghĩa một phán đoán toàn vẹn có thể bắt đầu tại một trong các vị trí có lưu các quan hệ có mặt trong phán đoán. Vì cơ sở dữ liệu đƣợc phân mảnh, do đó một phán đoán toàn vẹn trở thành một thao tác phân tán và được thực hiện theo hai bước.
Bước 1, biến đổi các phán đoán ở cấp cao thành các phán đoán biên dịch.
Bước 2, lưu các phán đoán biên dịch tuỳ theo lớp, các lớp phán đoán gồm: Lớp phán đoán riêng, lớp phán đoán hướng tập hợp và lớp phán đoán có các hàm gộp.
Các phán đoán lớp 3 đƣợc xử lý nhƣ lớp 1 hoặc lớp 2, tùy thuộc vào đặc tính của chúng là riêng hay hướng tập.
1.2.3 Khái niệm về cưỡng chế và phán đoán
Cưỡng chế thi hành ràng buộc toàn vẹn bao gồm việc loại bỏ các chương trình cập nhật vi phạm 1 số ràng buộc nào đó. Một ràng buộc bị vi phạm khi trạng thái mới của CSDL do cập nhật sinh ra, các phán đoán ràng buộc trở nên sai. Có hai phương pháp cơ bản cho phép phế bỏ các cập nhật sinh ra mâu thuẫn là: Dựa vào việc phát hiện mâu thuẫn và dựa trên việc ngăn chặn mâu thuẫn.
i. Dựa vào việc phát hiện mâu thuẫn (Phán đoán): Giả sử khi thực hiện cập nhật u sẽ chuyển CSDL từ D sang Du. Thuật toán cƣỡng chế phải xác nhận rằng tất cả các ràng buộc liên đới vẫn đúng trong Du. Nếu trạng thái Du không nhất quán thì DBMS sẽ cố gắng chuyển sang trạng thái khác là D’u bằng cách hiệu chỉnh Du qua các thao tác “bù trừ” để có D’u nhất quán, nếu không đƣợc thì phải quay lại trạng thái D. Cách kiểm tra này đƣợc áp dụng sau khi trạng thái của SCDL đã thay đổi nên nó đƣợc gọi là kiểm tra sau (Posttest). Cách tiếp cận này sẽ không hiệu quả nếu hệ thống phản hồi lại rất nhiều thao tác khi ràng buộc bị vi phạm.
ii. Dựa trên việc ngăn chặn mâu thuẫn (Cƣỡng chế). Một thao tác cập nhật chỉ đƣợc thực hiện nếu nó chuyển CSDL sang một trạng thái nhất quán khác. Thuật toán cƣỡng chế xác nhận rằng tất cả các ràng buộc liên đới đều đúng sau khi cập nhật các bộ. Các bộ cập nhật đã có sẵn (trường hợp chèn) hoặc phải truy xuất trong CSDL (trường hợp xóa hoặc sửa). Như vậy việc kiểm tra được thực hiện trước khi trạng thái CSDL được thay đổi và vì vậy cách kiểm tra được gọi là kiểm tra trước (pretest).
Phương pháp ngăn chặn mâu thuẫn hiệu quả hơn phương pháp phát hiện vì chúng ta không phải quay lại trang CSDL trước đó khi có ràng buộc bị vi phạm.
Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/
Thuật toán hiệu chỉnh vấn tin là một ví dụ về phương pháp ngăn chặn có hiệu quả đặc biệt trong việc cƣỡng chế các ràng buộc miền biến thiên. Nó đƣa thêm lƣợng từ hoá phán đoán vào lƣợng từ hoá vấn tin bằng toán tử AND cho nên câu vấn tin đƣợc hiệu chỉnh có thể đƣợc cƣỡng chế toàn vẹn.
Ví dụ 1.10
Tăng ngân sách cho các dự án CAD/CAM lên 10% với đặc tả UPDATE PROJ
SET BUDGET = BUDGET*1.1 WHERE PNAME = “CAD/CAM”
sẽ biến đổi thành câu vấn tin sau, trong đó có thêm điều kiện nhằm cƣỡng chế ràng buộc miền giá trị nhƣ đã thấy ở ví dụ 1.10
UPDATE PROJ
SET BUDGET = BUDGET*1.1 WHERE PNAME = “CAD/CAM”
AND NEW. BUDGET 500000 AND NEW. BUDGET 1000000
Thuật toán hiệu chỉnh vấn tin tạo ra các kiểm tra trước lúc thực thi bằng cách lấy hội các vị từ phán đoán với các vị từ cập nhật của mỗi chỉ thị của giao dịch. Tuy nhiên, thuật toán chỉ áp dụng cho phép tính bộ và đƣợc đặc tả nhƣ sau:
Xét phán đoán ( x R) F(x) trong đó F là biểu thức quan hệ bộ, x là biến bộ duy nhất. Thao tác cập nhật của R có thể đƣợc viết là ( x R)(Q(x) update(x)) trong đó Q là biểu thức phép tính bộ có biến tự do duy nhất. Hay nói ngắn gọn hơn, hiệu chỉnh vấn tin cần sinh ra thao tác cập nhật ( x R)((Q(x) and F(x) update(x). Vì thế x cần phải đƣợc lƣợng từ hoá phổ dụng .
Ví dụ 1.11
g ASG, j PROJ: g.PNO = j.PNO
Đây là phán đoán khoá ngoại, nói rằng một dự án đƣợc tham chiếu trong quan hệ ASG phải tồn tại (chứ không phải là ) trong quan hệ PROJ, do đó j không đƣợc lƣợng từ hoá phổ dụng cho nên câu vấn tin trên không thể đƣợc xử lý bởi phép hiệu chỉnh vấn tin.
Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/
Phương pháp ngăn chặn mâu thuẫn (kiểm tra trước) khác là dựa vào việc tạo ra các phán đoán. Biên dịch vào lúc định nghĩa phán đoán và có thể sử dụng để ngăn chặn sự xuất hiện các mâu thuẫn trong CSDL. Đây là một phương pháp ngăn chặn tổng quát, có thể xử lý đƣợc toàn bộ các phán đoán đã đƣợc giới thiệu ở trên.
Định nghĩa các phán đoán biên dịch dựa trên khái niệm quan hệ vi phân (differentinal relation). Gọi u là một cập nhật trên quan hệ R; R+ và R- là các quan hệ vi phân của R do u gây ra; R+ gồm các bộ đƣợc chèn vào R, còn R- gồm các bộ đƣợc xoá khỏi R; R+ = nếu u là thao tác xoá, R- = nếu u là thao tác chèn và R+ (R-R-) là tập các bộ (từ R) nếu u là sửa đổi bộ.
Một phán đoán biên dịch là bộ ba (R,T,C), trong đó R là quan hệ, T là kiểu cập nhật; C là một phán đoán biến thiên trên các quan hệ vi phân có mặt trong một cập nhật kiểu T. Khi một ràng buộc I đƣợc định nghĩa, một tập phán đoán biên dịch có thể đƣợc sinh ra cho các quan hệ.
Mỗi khi một quan hệ có trong I được cập nhật bởi chương trình u, các phán đoán biên dịch cần phải đƣợc kiểm tra chỉ là các phán đoán đƣợc định nghĩa trên I cho kiểu cập nhật của u. Cách làm này sẽ làm giảm số lƣợng phán đoán vì chỉ có các phán đoán thuộc kiểu u cần đƣợc kiểm tra, chi phí cƣỡng chế thi hành cũng nhỏ hơn chi phí cƣỡng chế I vì các hệ vi phân nhỏ hơn nhiều so với quan hệ gốc.
Phán đoán biên dịch, thu đƣợc bằng cách dùng các qui tắc biến đổi cho phán đoán gốc. Các qui tắc này dựa trên ngữ nghĩa của phán đoán và các hoán vị lƣợng từ. Chúng cho phép thay các quan hệ cơ sở bằng các quan hệ vi phân. Quá trình tạo ra phán đoán biên dịch từ các quan hệ gốc đƣợc gọi là quá trình đơn giản hoá.
Ví dụ 1.12
Xét lại ví dụ 1.11. Phán đoán biên dịch đi kèm với ràng buộc này là:
(ASG, INSERT, C1), (PROJ, DELETE, C2), và (PROJ, MODIFI, C3) Trong đó: C1 là
NEW ASG+, j PROJ : NEW.PNO = j.PNO C2 là
g ASG , OLD PROJ- : g.PNO OLD.PNO