Loại bỏ dư thừa

Một phần của tài liệu Đề tài nghiên cứu một số vấn đề về truy vấn và tối ưu hóa truy vấn cơ sở dữ liệu phân tán trong hệ thống thông tin (Trang 35)

1. Phân rã câu truy vấn

1.3.Loại bỏ dư thừa

Trong một câu truy vấn, có thể loại bỏ các vị từ dư thừa và các thao tác dư thừa bằng cách giản ước các lượng từ hóa bằng các qui tắc lũy đẳng sau đây:

Ví dụ: Xét câu truy vấn: SELECT TITLE FROM EMP

WHERE (NOT (TITLE="Programmer") AND (TITLE="Programmer") OR TITLE="Elect.Eng")

AND NOT (TITLE="Elect.Eng")) OR ENAME="J.Doe"

36 Đặt p1 là TITLE="Programmer",

p2=TITLE="Elect.Eng" và p3=ENAME="J.Doe"

Lượng từ hóa câu truy vấn trên ta được:

Áp dụng quy tắc: p1(p2 p3)(p1 p2)(p1 p3) và ) ) ( ) ( 2 3 1 2 3 1 p p p p p p      , khi đó 3 3 1 3 2 2 1 3 2 2 1 1 1 2 2 1 1 )) ( (( ) ) ( ) (( ) ) ( ( p p false p p p p p p p p p p p p p p p                          Tức là: SELECT TITLE FROM EMP WHERE ENAME="J.Doe" 1.4. Viết lại

Bước cuối cùng của việc phân rã truy vấn là viết lại truy vấn dưới dạng đại số quan hệ. Bước này bao gồm các giai đoạn sau:

- Chuyển đổi truy vấn từ phép tính quan hệ sang đại số quan hệ. - Xây dựng lại truy vấn đại số quan hệ để cải thiện khả năng thực hiện Cách chuyển một truy vấn phép tính quan hệ thành một cây đại số quan hệ:

- Các nút lá khác nhau được tạo cho mỗi biến bộ khác nhau (tương ứng một quan hệ). Trong SQL các nút lá chính là các quan hệ trong mệnh đề FROM.

- Nút gốc được tạo ra bởi một phép chiếu lên các thuộc tính kết quả. Trong SQL nút gốc được xác định qua mệnh đề SELECT.

- Điều kiện (mệnh đề WHERE trong SQL) được biến đổi thành dãy các phép toán đại số thích hợp (phép chọn, nối, phép hợp, v.v...) đi từ lá đến gốc, có thể thực hiện theo thứ tự xuất hiện của các vị từ và các phép toán.Định vị dữ liệu phân tán.

Ví dụ: Xét câu truy vấn "Tìm tên các nhân viên trừ J.Doe đã làm cho dự án CAD/CAM trong 1 hoặc 2 năm".

Câu lệnh SQL như sau: SELECT ENAME

FROM EMP, ASG, PROJ WHERE EMP.ENO=ASG.ENO

AND PROJ.PNO=ASG.PNO AND ENAME<>"J.Doe"

37

AND PROJ.NAME="CAD/CAM" AND (DUR=12 OR DUR =24) Cây đại số quan hệ như sau:

Hình 11: Ví dụ về cây đại số quan hệ

2. Định vị dữ liệu phân tán

Sau khi phân rã câu truy vấn, bước thứ hai của quá trình truy vấn là cục bộ hóa dữ liệu, hay nói cách xác là xác định các phân mảnhtương ứng từ lược đồ phân mảnh phục vụ cho câu truy vấn đã được phân rã. Giai đoạn này xác định các phân mảnh được sử dụng và chuyển đổi câu truy vấn phân tán thành một câu truy vấn trên mảnh cụ thể. Để xây dựng một câu truy vấn trên các phân mảnhcần thực hiện hai bước:

Bước 1: Truy vấn phân tán được ánh xạ sang một truy vấn trên phân mảnhbằng việc thay thế mỗi quan hệ phân tán bằng chương trình xây dựng lại có chứa các phép toán đại số quan hệ thao tác trên mảnh, gọi là chương trình cục bộ hóa (localization program).

Bước 2: Truy vấn trên mảnh được đơn giản hóa và xây dựng lại để tạo ra một câu truy vấn khác tốt hơn. Quá trình đơn giản hóa và xây dựng lại có thể được thực hiện dựa theo cùng một quy tắc được sử dụng trong lúc phân rã cách quan hệtổng thể thành lược đồ phân mảnh.

38

Phân mảnh được định nghĩa bằng các quy tắc phân mảnh bao gồm phân mảnh ngang, phân mảnh dọc, và phân mảnh hỗn hợp, trong đó các mảnh được biểu diễn bởi các quan hệ. Do đó một quan hệ toàn cục có thể được xây dựng lại bằngcách áp dụng các quy tắc phân mảnhđảo và dẫn xuất một chương trình cục bộ hóa mà các toán hạng quan hệ là các mảnh. Để đơn giản, giả thiết không có các mảnh nhân bản, ta có các trường hợp rút gọn phân đoạn phổ biến như sau:

- Rút gọn phân đoạn ngang nguyên thủy - Rút gọn phân đoạn dọc

- Rút gọn phân đoạn dẫn xuất - Rút gọn phân đoạn hỗn hợp

2.1Rút gọn phân mảnhngang nguyên thủy

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ụ quan hệ EMP(ENO, ENAME, TITLE) có thể được phân mảnh ngang thành:

(EMP) (adsbygoogle = window.adsbygoogle || []).push({});

σ

=

EMP1 ENO≤E3"

) (EM

σ

=

EMP2 ENO>"E3"∧3"∧<"E6" P

) (EMP

σ

=

EMP3 ENO>"E6"

Khi đó chương trình cục bộ hóa cho quan hệ phân mảnh ngang là hợp các mảnh: EMP= EMP1  EMP2  EMP3

Vì vậy dạng truy vấn gốc được xác minh dựa trên EMP sẽ thu được bằng cách thay EMP bởi (EMP1  EMP2  EMP3). Như vậy để giảm các thao tác truy vấn trên quan hệ đã được phân mảnh theo chiều ngang, trước hết phải các định rõ cần thao tác trên mảnh nào và sau đó xây dựng lại cây con, xem xét loại bỏ các quan hệ rổng. Phân mảnhngang sẽ được sử dụng để làm đơn giản hóa các phép chọn và phép kết nối.

2.1.1 Rút gọn phép chọn

Phép chọn thực hiện trên các mảnh có lượng từ hóa mâu thuẩn với lượng từ hóa của quy tắc phân mảnh sinh ra các quan hệ rổng. Cho một quan hệ R được phân mảnh theo chiều ngang là Rj =σpj(R),j=1..n, quy tắc này có thể được biểu diễn một cách hình thức như sau:

Qui tắc 1: σpj(Rj)=Φnếu ∀ xR:¬(pi(x)∧ pj(x))

Trong đó pi, pjlà các vị từ chọn, x là một bộ.

Ví dụ vị từ ENO= “E1” mâu thuẩn với các vị từ của mảnh EMP2, EMP3 nghĩa là không có bộ nào thỏa vị từ ENO= “E1”.

Ví dụ: Xét câu truy vấn sau: SELECT *

39

WHERE ENO=:E5”

Áp dụng cách tiếp cận thô sơ để cục bộ hóa EMP từ EMP1 , EMP2 ,EMP3 cho câu truy vấn gốc ở hình a dưới đây bằng các hoán vị phép chọn và phép hợp. Dễ dàng nhận thấy vị từ chọn mâu thuẩn vơi EMP1, EMP3. Câu truy vấn đã rút gọn chỉ ứng dụng có một mảnh EMP2như trong hình b:

Hình 12: Rút gọn phân mảnhngang với phép chọn

2.1.2 Rút gọn với phép kết nối

Phép kết nối được thực hiện trên các phân mảnh ngang có thể đơn giản khi kết nối dựa theo các thuộc tính kết nối, bằng cách phân phối kết nối trên các hợp và sau đó loại bỏ các kết nối không tác dụng. Việc phân phổi các kết nối trên phép hợp được phát biểu như sau:

) S 2 (R ∪ S) 1 (R = S ) 2 R ∪ 1 (R   

Trong đó, Rilà các mảnh của R và S là một quan hệ.

Bằng phép biến đổi này, các phép hợp có thể được di chuyển xuống dưới trong cây đại số quan hệ, nên tất cả các phép kết nối có thể của các mảnh đều được lộ ra. Các phép kết nốivô dụng được xác định khi lượng từ hóa các mảnh có mâu thuẫn. Giả sử các mảnh Ri và Rjđược xác định theo cac vị từ chọn pi và pjtrên cùng một quan hệ, quy tắc đơn giản hóa có thể được phát biểu như sau:

Quy tắc 2: Ri Rj=Φnếu ∀xRi,∀yRj :¬(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. (adsbygoogle = window.adsbygoogle || []).push({});

Ví dụ: Giả sử xét quan hệ EMP(ENO, ENAME, TITLE) được phân mảnh ngang thành EMP1 , EMP2 ,EMP3:

40

(EMP)

σ

=

EMP1 ENO≤"E3"

) (EM

σ

=

EMP2 ENO>"E3"∧3"∧<"E6" P

) (EMP

σ

=

EMP3 ENO>"E6"

Quan hệ ASG(ENO, PNO, RESP, DUR) được phân mảnh như sau:

(ASG)

σ

=

ASG1 ENO≤E3" ) (ASG

σ

=

ASG2 ENO>"E3"

EMP1 và ASG1 cùng định nghĩa bởi vị từ ENO≤“E3”. Vị từ định nghĩa trong ASG2là hợp của các vị từ được định nghĩa trong EMP2 và EMP3:

ENO > “E3”= ((“E3”<ENO) (ENO < “E6”)) (ENO> “E6” ) Xét câu truy vấn sau:

SELECT *

FROM EMP, ASG

WHERE EMP.ENO=ASG.ENO

Câu truy vấn được rút gọn bằng cách phân phối các nối trên các hợp và áp dụng quy tắc 2 có thể cài đặt như hợp của ba nối từng phần được thực hiện song song:

Hình 13: Cây đại số quan hệ truy vấn gốc

Hình 14: Rút gọn phân mảnh ngang với phép kết nối (adsbygoogle = window.adsbygoogle || []).push({});

2.2Rút gọn phân mảnhdọc

Phân mảnh dọc phân tán một quan hệ dựa trên các thuộc tính chiếu. Vì vậy phép kết nối sẽ là phép toán tái xây dựng phân mảnh dọc. Chương trình cục bộ hóa cho quan hệ phân mảnh dọc bao gồm các kết nối của các mảnh trên các thuộc tính chung.

41

Ví dụ: Giả sử quan hệ EMP(ENO, ENAME, TITLE) được phân mảnh như sau: 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ụ quan hệ EMP(ENO, ENAME, TITLE) có thể được phân mảnh ngang thành:

EMP1= ENO, ENAME (EMP) EMP2= πENO,TITLE (EMP)

Khi đó chương trình cục bộ hóa cho quan hệ phân mảnh dọc là: EMP=EMP1ENO EMP2

Cũng như phân mảnh ngang, các câu truy vấn trên các phân mảnh dọc được rút gọn bằng cách xác định các quan hệ trung gian vô dụng và loại bỏ các cây con đã sinh ra chúng. Phép chiếu trên một phân mảnh dọc không có thuộc tính chung với các thuộc tính chiếu sinh ra các quan hệ vô dụng có thể không rỗng.

Cho một quan hệ R định nghĩa trên các tập thuộc tính A={A1, A2, …, An} và được phân thành Ri=πA’(R), i=1..k, A’A. Quy tắc được phát biểu một cách hình thức như sau:

Quy tắc 3: πD,K(Ri) là vô dụng nếu tập các thuộc tính chiếu D không nằm trong A’.

Ví dụ: Giả sử:

EMP1= ENO, ENAME (EMP) EMP2= πENO,TITLE (EMP) Xét câu truy vấn SQL như sau: SELECT ENAME

FROM EMP

Bằng cách hoán vị phép chiếu và phép kết nối, ta nhận thấy rằng phép chiếu trên thuộc tính ENAME trên quan hệ EMP2 là vô dụng, vì ENAME không phải là thuộc tính của EMP2. Vì vậy phép chiếu chỉ cần thực hiện trên EMP1.

42

2.3Rút gọn phân mảnhdẫn xuất

Phép kết nối thường xuyên xảy ra và có chi phí cao. Tối ưu hóa bằng phân mảnh ngang nguyên thủy khi các quan hệ nối được phân mảnh theo các thuộc tính nối. Trong trường hợp này nối của haiquan hệ được cài đặt như hợp của các nối từng phần. Tuy nhiên phương pháp này ngăn cản không cho một trong các quan hệ phân mảnh theo một phép chọn trên một thuộc tính khác. Phân mảnh ngang dẫn xuất phân phối hai quan hệ, cải thiện khả năng xử lý các điểm giao nhau giữa các phép chọn và phép kết nối. Nếu quan hệ R phân mảnh dẫn xuất theo quan hệ S, các mảnh của R và S có giá trị như nha ở thuộc tính kết nối sẽ nằm cùng vị trí. Quan hệ S có thể phân mảnh theo một vị từ được chọn.

Vì các bộ của quan hệ R được đặt tùy chọn theo các bộ của S, để cho đơn giản, giả sử chỉ xét phân mảnh dẫn xuất chỉ được sử dụng cho mối liên hệ 1-n, trong đó một bộ của S tương ứng với n bộ của R và 1 bộ của R chỉ khớp đúng với 1 bộ của S.

Ví dụ: Cho mối quan hệ 1-n EMP  ASG. Giả sử ASG được phân mảnh gián tiếp theo các qui tắc sau:

2 1 1 ASG = ASG2 ASG = ASG EMP EMP ENO ENO  

Trong đó, EMP1 =σTITLE="Programmer"(EMP)và EMP2=σTITLE≠"Programmer"(EMP)

Chương trình cục bộ hóa cho quan hệ phân mảnh ngang là: ASG=ASG1  ASG2

Các câu truy vấn trên các mảnh dẫn xuất có thể được rút gọn bằng cách phân phối các nối trên các phép hợp và áp dụng quy tắc 2. Vì quy tắc phân mảnh chỉ rõ các bộ sẽ khớp với nhau, một số nối sinh ra quan hệ rỗng, các vị từ phân mảnh có mâu thuẫn. Ví dụ như các vị từ của ASG1 và EMP2có mâu thuẫn vì vậyASG1EMP2 = 

Xét câu truy vấn sau: SELECT ENAME FROM EMP, ASG

WHERE EMP.ENO=ASG.ENO AND TITLE= “Mech, Eng”

Câu truy vấn gốc được thao tác trên các mảnh EMP1, EMP2, ASG1, ASG2 như hình a bên dưới). Thực hiện phép chọn trên các mảnh EMP1, EMP2, vì vị từ chọn mâu thuẫn trên mảnh EMP1 nên kết quả câu truy vấn rút gọn thu được như hình b. Nhằm xác định các vị từ kết nối mâu thuẫn, cần phải phân phối các nối trên các hợp. Kết quả là cây hình c. Cây con bên trái nối 2 mảnh ASG1 và EMP2 với các lượng từ hóa mâu thuẫn bởi các vị từ chọn TITLE= “Programmar” trong ASG1 và TITLE≠ “Programmar” trong EMP2. Vì vậy có thể loại bỏ cây bên trái và thu được kết quả câu

43

truy vấn rút gọn được chỉ ra trong hình d. Ví dụn này minh họa giá trị phân mảnh trong việc cải thiện hiệu năng của các câu truy vấn phân tán.

(a)Câu truy vấn gốc

(b)Câu truy vấn sau khi đẩy phép chọn xuống

(c)Truy vấn sau khi đẩy các phép hợp xuống (adsbygoogle = window.adsbygoogle || []).push({});

(d)Câu truy vấn đã rút gọn sau khi loại cây con bên trái Hình 16: Rút gọn phân mảnh dẫn xuất

2.4Rút gọn phân mảnhhỗn hợp

Phân mảnh hỗn hợp bao gồm việc phân mảnh ngang và phân mảnh dọc. Mục đích của phân mảnh hỗn hợp là hỗ trợ một cách hiệu quả các câu truy vấn có chứa các phép chọn, phép chiếu và phép kết nối. Chương trình hóa cục bộ cho một quan hệ

44

phân mảnh hỗn hợp có sử dụng phép hợp và kết nối các mảnh. Để tối ưu hóa một phép toán hay tổ hợp các phép toán luôn luôn phải trả chi phí cao cho các phép toán khác. Ví dụ phân mảnh hỗn hợp dựa trên phép chiếu-chọn sẽ làm cho phép chiếu hoặc phép chọn kém hiệu quả hơn so với phân mảnh ngang hoặc phân mảnh dọc.

Ví dụ: phân mảnh hỗn hợp của quan hệ EMP như sau:

(EMP)) (π

σ

=

EMP1 ENO≤"E4" ENO,ENAME

(EMP)) (π

σ

=

EMP2 ENO>"E4" ENO,ENAME (EMP)

π

=

EMP3 ENO,ENAME

Chương trình cục bộ hóa như sau:

3 ENO 2 1∪EMP) EMP (EMP = EMP 

Các truy vấn trên những mảnh hỗn hợp có thể được rút gọn bằng cách kết hợp lần lượt các quy tắc trong phân mảnh ngang nguyên thủy, phân mảnh dọc và phân mảnh ngang dẫn xuất. Các quy tắc có thể tóm tắt như sau:

1. Loại bỏ các quan hệ rỗng được tạo ra do các phép chọn mâu thuẫn nhau trên các mảnh ngang.

2. Loại bỏ các kết nối vô dụngđược tạo ra do các phép chiếu trên các phân mảnh dọc 3. Phân phối các kết nối cho các phép hợp nhằm cô lập và loại bỏ các kết nối vô dụng

Ví dụ: Xét câu truy vấn sau: SELECT ENAME FROM EMP

WHERE EMP = “E5” 

Hình 17: Rút gọn phân mảnh hỗn hợp

3. Tối ưu hóa các truy vấn phân tán

Một câu truy vấn trong phép tính quan hệ biểu diễn trên các quan hệ phân tán có thể được ánh xạ thành một câu truy vấn trên các đoạn quan hệ bằng cách phân rã và

45

định vị dữ liệu,ánh xạ này sử dụng lược đồ phân đoạn. Trong xử lý này, việc áp dụng các luật biến đổi cho phép đơn giản hoá câu truy vấn bằng cách tìm các biểu thức con chung và loại bỏ các biểu thức vô ích. Câu truy vấn thu được từ giai đoạn phân rã và định vị dữ liệu có thể được thực thi một cách đơn giản bằng việc thêm vào các thao tác truyền thông. Tuy nhiên, hoán vị thứ tự các phép toán trong câu truy vấn có thể cung cấp nhiều chiến lược tương đương để thực thi chúng. Tìm một thứ tự “tối ưu” của các phép toán cho một câu truy vấn đã cho là chức năng chính của bộ tối ưu hoá câu truy vấn.

Sự lựa chọn thứ tự tối ưu đối với một câu truy vấn là bài toán khó thực hiện nên mục đích thực sự của bộ tối ưu là tìm một chiến lược gần tối ưu. Sau đây ta sẽ gọi chiến lược (hoặc thao tác sắp thứ tự) được đưa ra bởi bộ tối ưu là chiến lược tối ưu (hoặc sắp chiến lược tối ưu). Đầu ra của bộ tối ưu là một lịch trình được tối ưu bao (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Đề tài nghiên cứu một số vấn đề về truy vấn và tối ưu hóa truy vấn cơ sở dữ liệu phân tán trong hệ thống thông tin (Trang 35)