Lớp phán đoán riêng

Một phần của tài liệu Xử lý câu truy vấn SQL qua phán đoán và cưỡng chế (Trang 28)

6. Các kết quả dự kiến đạt đƣợc

2.1.1 Lớp phán đoán riêng

Là các phán đoán đơn biến và đơn quan hệ. Chúng chỉ đề cập đến các bộ đƣợc cập nhật, độc lập với phần còn lại của CSDL.

Định nghĩa phán đoán riêng đƣợc gửi đến tất cả vị trí lƣu các mảnh của quan hệ có mặt trong phán đoán. Các phán đoán phải tƣơng thích với vị trí phân mảnh ở hai cấp: cấp vị trí và cấp dữ liệu. Phán đoán C xem là không tƣơng thích với vị trí phân mảnh P, nếu C đúng suy ra p sai. Khi đó p’ đoán C bị loại bỏ toàn cục. Nếu có tƣơng thích, thì phán đoán C sẽ đƣợc lƣu lại tại mọi vị trí.

Chú ý, việc thẩm tra tính tƣơng thích đƣợc thực hiện cho các phán đoán biên dịch kiểu cập nhật chèn.

Xét CSDL sau:

EMP (ENO, ENAME, TITLE) PROJ(PNO, PNAME, BUDGET) ASG(ENO, PNO, RESP, DUR)

Ví dụ 2.1

Khoá ngoại

PNO IN ASG REFERENCES PNO IN PROJ

Khoá, mã số PNO trong quan hệ ASG là khoá ngoại tƣơng ứng với khoá chính PNO trong quan hệ PROJ. Nói cách khác, một dự án đƣợc tham chiếu trong quan hệ ASG phải tồn tại trong quan hệ PROJ.

Ví dụ 2.2

Phụ thuộc hàm

ENO IN EMP DETERMINES ENAME

Giá trị mã số nhân viên ENO, xác định giá trị hàm tên nhân viên ENAME.

Ví dụ 2.3

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

P1 : 0 ENO “E3” P2: “E3” < ENO “E6” P3: ENO > “E6”

Và cho phán đoán miền biến thiên C: ENO < “E4” thì phán đoán C tƣơng thích với p1 (nếu C đúng thì p1 đúng) và p2 (nếu C đúng thì chƣa chắc p2 sai, nhƣng không tƣơng thích với p3) nếu C đúng thì p3 sai. Nhƣng rõ ràng là P3 sai (vì ENO > “E6”) nên phán đoán C không tƣơng thích với P3 khi đó C bị loại bỏ và EMP không thoả mãn phán đoán C.

2.1.2. Phán đoán hướng tập hợp

Phán đoán hƣớng tập hợp thuộc loại đa biến; nghĩa là chúng chứa vị từ nối biến đơn quan hệ (nhƣ phụ thuộc hàm ở ví dụ 2.2), mã số nhân viên xác định phụ thuộc hàm tên nhân viên là:

ENO IN EMP DETEMINES ENAME

Và đa biến đa quan hệ nhƣng ràng buộc khoá ngoại ở ví dụ 2.1: Mã số PNO dự án trong quan hệ ASG là khoá ngoại tƣơng ứng với khoá chính PNO của hệ PROJ. Nói cách khác là một dự án đƣợc tham chiếu trong quan hệ ASG phải tồn tại trong quan hệ PROJ.

Mặc dù vị từ phán đoán có thể thuộc loại đa quan hệ nhƣng một phán đoán biên dịch chỉ đƣợc liên kết với một quan hệ. Vì thế định nghĩa phán đoán có thể đƣợc gửi đến tất cả các vị trí có chứa các mảnh đƣợc các biến này thảm chiếu. Việc thẩm tra tính tƣơng thích cũng gồm cả các mảnh của quan hệ đƣợc sử dụng trong vị từ nối. Tƣơng thích vị từ không có tác dụng gì ở đây vì chúng ta không thể suy ra rằng một vị từ mảnh p sai nếu phán đoán C (dựa trên vị từ nối) đúng. Vì thế chúng. ta cần phải thẩm tra C theo dữ liệu. Điều này đòi hỏi phải nối mảnh của quan hệ R

với tất cả các mảnh của quan hệ S, là hai quan hệ có trong vị từ nối. Nhƣ thế, rõ ràng là chi phí sẽ rất cao, và nhƣ mọi phép nối khác, nó cần đƣợc tối ƣu hóa bằng thể xử lý vấn tin phân tán.

Ba tình huốngsau có thể xảy ra đƣợc liệt kê theo mức chi phí.

1. Phân mảnh của R đƣợc dẫn xuất, từ phân mảnh của S dựa vào một nối nửa trên thuộc tính đƣợc dùng trong vị trí nối

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

2. S đƣợc phân mảnh trên thuộc.tính nối.

3. S không đƣợc phân mảnh trên thuộc tính nối.

Trong trƣờng hợp đầu tiên, việc kiểm tra tƣơng thích có chí phí thấp bởi vì bộ của S đối sánh đƣợc với một bộ của R sẽ ở cùng một vị trí. Trong trƣờng hợp thứ hai; mỗi bộ của R phái đƣợc so sánh với tối đa một mảnh của S, bởi vì giá trị thuộc tính nối của bộ thuộc R có thể đƣợc dùng để tìm vị trí mảnh tƣơng ứng của S. Trong trƣờng hợp thứ ba, mỗi bộ của R phải đƣợc so sánh với tất cả các mảnh của S. Nếu tất cả các bộ của R đều bảo đảm tƣơng thích thì phán đoán sẽ đƣợc lƣu tại mỗi vị trí.

Ví dụ 2.4

Xét phán đoán biên dịch hƣớng tập hợp (ASG, INSERT, Cl) đƣợc định nghĩa trong ví dụ 1.12; trong đó C1 là

NEW ASG+ , j PROJ : NEW.PNO = j.PNO

Chúng ta xét ba trƣờng hợp sau. 1. ASG dƣợc phân mảnh theo vị từ ASG PNO PROJi

trong đó PROJi, là một mảnh của quan hệ PROJ. Trong trƣờng hợp này, mỗi bộ NEW của ASG đã đƣợc đặt tại cùng vị trí với bộ j sao cho NEW.PNO = j.PNO. Bởi vì vị từ phân mảnh giống với vị từ của Cl, việc thẩm tra tƣơng thích không mất chi phí truyền dữ liệu.

2. PROJ đƣợc phân mảnh ngang theo hai vị từ : .

pl: PNO < “P3” p2: PNO "P3"

Trong trƣờng hợp này, mỗi bộ NEW của ASG đƣợc so sánh với mảnh PROJ1

nếu NEW.PNO < “P3”, hoặc với mảnh PROJ2 nếu NEW.PNO “P3". 3. PROJ đƣợc phân mảnh ngang theo hai vị từ

p1 : PNAME = "CAD/CAM" p2; PNAMF "CAD/CAM"

Trong trƣờng hợp này, mỗi bộ của ASG phải đƣợc so với cả hai mảnh PROJ1 và PROJ2

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

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 Rvới ¬(Ci)

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.

2.3. Các phƣơng pháp rút gọn dựa vào phán đoán và cƣỡng chế

2.3.1Rút gọn cho phân mảnh ngang nguyên thuỷ

Phân mảnh ngang phân tán một quan hệ dựa trên các vị từ chọn (Select Predicate).

Ví dụ 2.6

Quan hệ EMP có thể đƣợc tách thành ba mảnh ngang nhƣ sau EMPH1 = ENO “E3” (EMP)

EMPH2 = “E3” < ENO “E6” (EMP) EMPH3 = ENO “E6” (EMP)

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

Chƣơng trình cục bộ hoá cho phân mảnh ngang trên là hợp các mảnh lại: EMP = EMPH1 EMPH2 EMPH3

Vì vậy câu vấn tin gốc thực hiện trên EMP sẽ đƣợc thực hiện trên EMPH1 EMPH2 EMPH3

Rút gọn vấn tin trên các quan hệ phân mảnh ngang chủ yếu là xác định, sau khi đã tái cấu trúc lại cây con, xem cây nào tạo ra quan hệ rỗng thì bỏ cây con đó đi. Phân mảnh ngang sẽ đƣợc sử dụng để làm đơn giản hoá các phép chọn và phép kết nối.

2.3.1.1 Rút gọn với phép chọn

Nếu chọn trên các mảnh có lớp vị từ mâu thuẫn với lƣợng từ hoá của qui tắc phân mảnh sẽ sinh ra các quan hệ rỗng. Cho quan hệ R đƣợc phân mảnh ngang thành RH1, RH2,…, RHn trong đó RHi = Pi(R).

Qui tắc 1:

Pi(RHj) = nếu x R: (pi(x) pj(x))

Trong đó pi(x) là vị từ chọn và pj(x) là vị từ phân mảnh còn x biểu thị một bộ (bản ghi), khi viết p(x) có nghĩa là “vị từ p đúng với x”.

Chẳng hạn vị từ chọn ENO = “E1” mâu thuẫn với các vị từ phân mảnh EMPH2 và EMPH3 (nghĩa là không có bộ nào trong EMPH2 và EMPH3 thoả vị từ chọn ENO = “E1”).

Ví dụ 2.7

Rút gọn cho phân mảnh ngang khi dùng câu vấn tin mẫu sau: SELECT *

FROM EMP

WHERE ENO = “E5”

Chƣơng trình cục bộ hoá cho phân mảnh ngang EMP = EMPH1 EMPH2 EMPH3

cho ra cây vấn tin gốc (hình 2.1a). Bằng cách hoán vị phép chọn với phép hợp (hình 2.1b), chúng ta dễ dàng phát hiện ra rằng vị từ chọn ENO = “E5” mâu thuẫn với vị từ phân mảnh EMPH1 (ENO “E3”)và vị từ phân mảnh EMPH3 (ENO “E6”) do vậy tạo ra quan hệ rỗng. Câu vấn tin bây giờ chỉ cần áp dụng trên EMPH2 (hình 2.1c).

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

Hình 2.1. Rút gọn cho phân mảnh ngang (với phép chọn)

2.3.1.2. Rút gọn với phép nối

Nối trên các quan hệ phân mảnh ngang có thể đƣợc đơn giản khi các quan hệ nối đƣợc phân mảnh theo thuộc tính nối. Đơn giản hóa gồm có phân phối nối trên các hợp rồi bỏ đi các nối vô dụng. Từ phép phân phối nối và hợp:

(R1 R2) S = (R1 S) (R2 S) , trong đó Ri là các mảnh của Rcòn S là một quan hệ. Các hợp có thể đƣợc di chuyển trên cây toán tử để tất cả các nối có thể có của các mảnh đều thấy đƣợc. Các nối vô dụng có thể xác định đƣợc khi lƣợng từ hoá của các mảnh nối có mâu thuẫn. Gả sử rằng các mảnh Ri, Rj đƣợc định nghĩa tƣơng ứng theo các vị từ pi, pjtrên cùng một quan hệ, qui tắc đơn giản hoá có thể đƣợc phát biến nhƣ sau:

Qui tắc 2:

Ri Rj = nếu x Ri, y Rj: (pi(x) pj(y))

Việc xác định các kết nối vô dụng có thể đƣợc thực hiện bằng cách chỉ xét các vị từ của các mảnh. Áp dụng quy tắc này cho phép kết nối hai quan hệ đƣợc cài đặt nhƣ các nối từng phần song song các mảnh. Câu truy vấn rút gọn chƣa chắc đã đơn giản hơn câu truy vấn gốc, nếu nhƣ trong câu truy vấn gốc có rất nhiều nối từng phần, vì rất

Một phần của tài liệu Xử lý câu truy vấn SQL qua phán đoán và cưỡng chế (Trang 28)

Tải bản đầy đủ (PDF)

(61 trang)