5. Các kết quả dự kiến đạt đƣợc
2.4.2 Thuật toán SYSTEM R
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
do phân tích một truy vấn SQL, đầu ra là sơ đồ thực hiện cây đại số quan hệ "tối ưu".
Thuật toán tối ưu bao gồm hai bước chính:
- Dự đoán phương pháp truy nhập tới mỗi quan hệ đơn tốt nhất dựa trên một giả thiết chọn.
- Với mỗi quan hệ R, đánh giá thứ tự kết nối tốt nhất, trong đó R được truy nhập trước tiên sử dụng phương pháp truy nhập quan hệ - đơn tốt nhất của nó.
Có hai thuật toán có thể để xét các phép kết nối. Khi kết nối hai quan hệ, quan hệ có các bộ đọc trước gọi là quan hệ ngoài, quan hệ có các bộ được tìm thấy tùy theo các giá trị có được từ quan hệ ngoài gọi là quan hệ trong. Quyết định quan trọng với mỗi phương pháp kết nối là xác định hướng truy nhập tới quan hệ trong rẻ nhất.
Phương pháp 1, gọi là các vòng lặp lồng nhau, thực hiện tích hai quan hệ. Với mỗi bộ của quan hệ ngoài, các bộ của quan hệ trong thoả mãn giả thiết kết nối được gọi ra để tạo quan hệ kết quả. Nếu không đánh chỉ số, với các quan hệ được lưu trữ theo thứ tự trên n1, n2 bộ bản ghi, thuật toán này có chi phí là n1* n2.
Phương pháp 2, gọi là kết nối trộn, kết nối hai quan hệ đã sắp xếp trên thuộc tính kết nối. Nếu là kết nối bằng, chi phí của việc kết nối hai quan hệ được lưu trữ trên n1 và n2 bộ bản ghi là n1+ n2. Vì vậy, phương pháp này luôn được chọn khi có kết nối bằng, và khi các quan hệ được sắp xếp trước. Nếu chỉ một hoặc không có quan hệ nào được sắp xếp, chi phí của vòng lặp lồng nhau được so sánh với chi phí của phương pháp trộn + chi phí sắp xếp. Chi phí sắp xếp n bộ bản ghi là nlog2n. Thuật toán tối ưu hoá System R (R- QOA), gồm hai vòng lặp [7]:
- Chọn phương pháp truy nhập quan hệ đơn tốt nhất tới mỗi quan hệ trong truy vấn.
- Xét tất cả các hoán vị có thể của thứ tự kết nối (có n! hoán vị với n quan hệ) và chọn chiến lược truy nhập tốt nhất đối với câu truy vấn. Các hoán vị được đưa ra bởi cấu trúc động của cây các chiến lược luân phiên.
Thuật toán: R-QOA
input: QT: Cây truy vấn với n quan hệ output: Output: kết quả thực hiện Begin
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
begin
for mỗi đường truy nhập APij to Ri do xác định cost(APij)
endfor
best_APi ơ APij với chi phí tối thiểu endfor
for mỗi order(Ri1,Ri2,...,Rin) với i=1,..., n! do begin
build strategy(...((best APi1 ⊲⊳Ri2) ⊲ ⊳Ri3) ⊲⊳...⊲⊳Rin) tính toán chi phí của chiến lược
endfor
outputChiến lược với chi phí tối thiểu
End. {R-QOA}
Ví dụ 2.8: Thuật toán R-QOA cho câu truy vấn q1 (trong ví dụ 2.6) Đồ thị kết nối của q1 như sau:
Hình 2.8: Đồ thị kết nối của câu truy vấn q1
KYSU index trên SHKS HOSODA index trên SHDA
DUAN index trên SHDA và TENDA
Giả sử vòng lặp ngoài chọn hướng truy nhập quan hệ đơn tốt nhất sau: KYSU: Quét tuần tự (vì không có phép chọn trên KYSU)
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
DUAN: index trên TENDA (vì có một phép chọn trên HOSODA dựa trên TENDA) Cấu trúc động của cây các chiến lược luân phiên như hình 2.9. Các phép toán có đánh dấu "loại bỏ" sẽ được loại bỏ tự động. Mức 1 của cây chỉ ra phương pháp truy nhập tốt nhất. Mức 2 chỉ ra phương pháp kết nối tốt nhất. Các chiến lược (KYSUDUAN) và (DUAN KYSU) bị loại bỏ. Giả sử (KYSU ⊲⊳ HOSODA) và (HOSODA ⊲⊳ DUAN) có chi phí cao hơn (HOSODA ⊲⊳ KYSU) và (DUAN ⊲⊳ HOSODA) tương ứng. Như vậy chúng có thể bị loại bỏ, vì bằng cách hoán vị có các thứ tự kết nối tương ứng tốt hơn. Mức 3 đưa ra hai khả năng còn lại, thứ tự kết nối tốt nhất là chi phí ít nhất của ((HOSODA ⊲⊳ KYSU) ⊲⊳ DUAN) và ((DUAN ⊲⊳ HOSODA) ⊲⊳ KYSU). Cuối cùng dựa vào chỉ dẫn trên thuộc tính chọn và truy nhập trực tiếp tới các bộ kết nối của HOSODA và KYSU, chọn phương pháp truy nhập sau:
Hình 2.9: Các thứ tự kết nối luân phiên 2.5 Kết luận
Trong chương này đã trình bày hai kỹ thuật tối ưu hóa câu truy vấn dựa trên việc sắp xếp lại các phép toán và phân rã câu truy vấn thành những câu truy vấn con. Việc kết hợp các kỹ thuật với nhau và phát triển trên mô hình phân tán sẽ được trình bày trong chương sau.
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Chƣơng 3. TỐI ƢU HÓA TRUY VẤN PHÂN TÁN 3.1 Phân rã câu truy vấn
Phân rã truy vấn biến đổi một câu truy vấn các phép tính quan hệ thành câu truy vấn đại số trên các quan hệ tổng thể. Cả hai câu truy vấn vào và ra đều trên các quan hệ tổng thể và không quan tâm đến tính phân tán của dữ liệu. Vì vậy, phân rã câu truy vấn là chung cho cả quan hệ tập trung và phân tán. Trong phần này, giả sử câu truy vấn vào là đúng đắn (chỉnh). Khi việc phân rã được thực hiện xong câu truy vấn ra là chỉnh và tránh được các công việc dư thừa. Giai đoạn này chia làm 4 bước [3]:
3.1.1 Chuẩn hoá
Mục đích của chuẩn hoá là biến đổi câu truy vấn về dạng chuẩn để thuận lợi cho các xử lý tiếp theo. Với các ngôn ngữ quan hệ như SQL, có hai dạng chuẩn cho tân từ trong mệnh đề WHERE
Dạng chuẩn hội (conjunctive normal form) là hội () của những phép tuyển (): (p11 p12 p13 ... p1n)…(pm1 pm2 pm3 ... pmn) trong đó pij là công thức nguyên tố.
Dạng chuẩn tuyển (disjunctive normal form) là tuyển () của những phép hội (): (p11 p12 p13 ... p1n)… (pm1 pm2 pm3 … pmn) .
Phép biến đổi của tân từ không có lượng từ (,) là dễ dàng, sử dụng các qui tắc tương đương đối với các phép toán logic ((,, vµ) đã biết.
Ví dụ 3.1: Xét các lược đồ quan hệ sau: KYSU(SHKS, TENKS, NGHE) HOSODA(SHKS, SHDA, TRNH, THOIGIAN)
DUAN(SHDA, TENDA, NGANSACH) Trong đó:
SHKS: Số hiệu kỹ sư TENKS: Tên kỹ sư
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
SHDA: Số hiệu dự án TENDA: Tên dự án. TRNH : Trách nhiệm
Câu truy vấn : "Tìm tên kỹ sư làm việc cho dự án J1 12 hoặc 24 tháng” SELECT TENKS
FROM KYSU, HOSODA
WHERE KYSU.SHKS=HOSODA.SHKS AND HOSODA.SHDA= “J1”
AND THOIGIAN = 12 OR THOIGIAN = 24 Điều kiện tìm kiếm theo dạng chuẩn hội là:
KYSU.SHKS = HOSODA.SHKS HOSODA.SHDA = “J1”
(THOIGIAN = 12 THOIGIAN = 24). Điều kiện theo dạng chuẩn tuyển là:
(KYSU.SHKS = HOSODA.SHKS HOSODA.SHDA = “J1” THOIGIAN = 12) (KYSU.SHKS = HOSODA.SHKS HOSODA.SHDA = “J1” THOIGIAN = 24)
Trong dạng chuẩn tuyển, xử lý hai biểu thức hội độc lập có thể dẫn đến công việc thừa nếu có biểu thức con chung.
3.1.2 Phân tích
Câu truy vấn ở dạng chuẩn được phân tích (về mặt ngữ nghĩa) để phát hiện ra những câu truy vấn không chỉnh (sai kiểu và sai ngữ nghĩa) và loại bỏ chúng sớm nhất có thể.
Một câu truy vấn sai kiểu nếu một thuộc tính nào đó của nó hoặc tên quan hệ không được định nghĩa trong lược đồ tổng thể, hoặc phép toán áp dụng cho các thuộc tính sai kiểu.
Một câu truy vấn sai ngữ nghĩa nếu các thành phần của nó không tham gia vào việc tạo ra kết quả. Để xác định một câu truy vấn có sai ngữ nghĩa hay không, ta dựa trên việc biểu diễn câu truy vấn như một đồ thị, gọi là đồ thị câu truy vấn hoặc đồ thị nối. Đồ thị này xác định với các câu truy vấn có liên quan đến
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
phép chọn, chiếu và kết nối. Trong một đồ thị câu truy vấn, một nút chỉ ra quan hệ kết quả còn các nút khác chỉ ra toán hạng quan hệ. Cạnh nối giữa hai nút không phải nút kết quả biểu diễn một phép kết nối, còn cạnh có nút đích là kết quả biểu diễn một phép chiếu. Một nút không phải kết quả có thể được gán nhãn bởi phép chọn hoặc phép nữa kết nối. Một đồ thị con quan trọng của đồ thị câu truy vấn là đồ thị kết nối, trong đó chỉ các phép kết nối được xem xét. Đồ thị này đặc biệt có lợi trong lớp tối ưu hoá câu truy vấn.
Ví dụ 3.2: Với các quan hệ tổng thể KYSU, HOSODA, DUAN đề cập trong phần trước:
Xét câu truy vấn “Tìm tên và trách nhiệm của người kỹ sư đang làm việc cho dự án CAD/CAM hơn ba năm”.
SELECT TENKS, TRNH
FROM KYSU, HOSODA, DUAN WHERE KYSU.SHKS = HOSODA.SHKS AND HOSODA.SHDA = DUAN.SHDA AND TENDA=”CAD/CAM”
AND THOIGIAN 36 and NGHE= “lập trình viên”
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn (b) Đồ thị kết nối tương ứng
Hình 3.1: Các đồ thị quan hệ
Đồ thị câu truy vấn có lợi để xác định sự sai ngữ nghĩa của một câu truy vấn hội không có phép phủ định. Như vậy, một câu truy vấn là sai ngữ nghĩa nếu đồ thị câu truy vấn của nó không liên thông, nghĩa là có một hoặc nhiều đồ thị con tách khỏi đồ thị chứa quan hệ kết quả. Câu truy vấn có thể được xem là chỉnh nếu loại bỏ những phần vô ích. Nhưng nói chung, vấn đề là ở chỗ thiếu các tân từ kết nối và câu truy vấn trên bị huỷ bỏ.
Ví dụ 3.3:
SELECT TENKS, TRNH
FROM KYSU, HOSODA, DUAN
WHERE KYSU.SHKS = HOSODA.SHKS AND HOSODA.SHDA=DUAN.SHDA AND TENDA=”CAD/CAM”
AND THOIGIAN 36 and NGHE=”lập trình viên”
Câu truy vấn này có ngữ nghĩa không chỉnh vì đồ thị của nó (hình 3.2) không liên thông. Có ba giải pháp cơ bản cho vấn đề này:
- Huỷ bỏ câu truy vấn
- Cho rằng việc truy nhập tới quan hệ DUAN là vô ích và loại bỏ tân từ TENDA = “CAD/CAM” ra khỏi câu truy vấn.
- Suy ra (sử dụng lược đồ) thiếu tân từ kết nối HOSODA.SHDA = DUAN.SHDA để đưa về câu truy vấn như ở ví dụ 3.2
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 3.2: Đồ thị câu truy vấn không liên thông 3.1.3 Loại bỏ dư thừa
Điều kiện trong câu truy vấn có thể chứa các tân từ dư thừa và dẫn đến công việc dư thừa. Nó có thể được loại bỏ bằng cách đơn giản hoá điều kiện với các luật luỹ đẳng đã biết.
Ví dụ 3.4: Xét câu truy vấn SQL sau: SELECT NGHE
FROM KYSU
WHERE (NOT(NGHE=”Lập trình viên”)
AND ((NGHE=”Lập trình viên”) OR (NGHE = “KS điện tử”)) AND NOT(NGHE=”KS điện tử”))
OR TENKS = “J.Doe”
Sử dụng các luật luỹ đẳng đó để đơn giản câu truy vấn này: SELECT NGHE
FROM KYSU
WHERE TENKS=”J.Doe”
Gọi p1 là <NGHE = “Lập trình viên”>, p2 là <NGHE= “KS điện tử”>, p3 là <TENKS = “J.Doe”>. Điều kiện câu truy vấn là:
(p1 (p1 p2)p2) p3
(p1 p1 p2) (p1 p2p2) p3 (Áp dụng pp false)
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
false false p3 (Áp dụng p false p)
p3
3.1.4 Viết lại
Bước cuối cùng của phân rã câu truy vấn là viết lại câu truy vấn dưới dạng đại số quan hệ. Có thể được chia làm hai bước sau:
- Biến đổi trực tiếp câu truy vấn phép tính quan hệ sang đại số quan hệ. - Cấu trúc lại câu truy vấn đại số quan hệ để cải tiến hiệu năng.
Để cho rõ ràng, thông thường người ta biểu diễn câu truy vấn đại số quan hệ bởi một cây đại số quan hệ. Một cây đại số quan hệ là một cây trong đó một nút lá biểu diễn một quan hệ trong cơ sở dữ liệu, còn một nút khác nút lá biểu diễn một quan hệ trung gian sinh bởi một phép toán đại số quan hệ. Dãy các phép toán trực tiếp từ lá đến gốc biểu diễn lời giải của câu truy vấn.
Sự biến đổi từ câu truy vấn trong phép tính quan hệ bộ thành cây đại số quan hệ được thực hiện như sau:
- Mỗi nút lá khác nhau được tạo cho một 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 xem như một phép chiếu lên các thuộc tính kết quả. Trong SQL, nút gốc được tìm thấy trong 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, kết nối, phép hợp,…) đi từ lá tới gốc, có thể theo thứ tự xuất hiện của các tân từ và các phép toán.
Ví dụ 3.5: Với các quan hệ tổng thể KYSU, HOSODA, DUAN đề cập trong phần trước: Xét câu truy vấn: “Tìm tên các nhân viên khác J.Doe làm việc cho dự án CAD/CAM một hoặc hai năm”.
SELECT TENKS
FROM DUAN, HOSODA, KYSU
WHERE HOSODA.SHKS = KYSU.SHKS AND HOSODA.SHDA = DUAN.SHDA
AND TENKS “J.Doe” and TENDA = “CAD/CAM” AND (THOIGIAN = 12 or THOIGIAN = 24)
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 3.3: Cây đại số quan hệ
Có thể biến đổi cây thành các cây tương ứng nhờ các qui tắc đã trình bày trong chương II (mục biến đổi đại số). Ví dụ cây hình 3.4 tương đương cây hình 3.3. Tuy nhiên cây hình 3.4 chứa tích Decartes, nên chi phí thực hiện có thể lớn hơn cây ban đầu.
Hình 3.4: Cây đại số quan hệ tương đương
Trong giai đoạn tối ưu, có thể so sánh tất cả các cây có thể có dựa trên chi phí dự đoán của chúng. Tuy nhiên, nếu số lượng các cây có thể quá lớn sẽ dẫn đến cách tiếp cận này không khả thi. Các quy tắc trên có thể đựơc dùng để cấu trúc lại cây để loại bỏ những cây đại số quan hệ “tồi”. Các quy tắc đó có thể sử dụng theo bốn cách khác nhau:
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
- Nhóm các phép toán một ngôi trên cùng một quan hệ để giảm số lần thực hiện.
Giao hoán các phép toán một ngôi với các phép toán hai ngôi để ưu tiên cho một số phép toán (chẳng hạn phép chọn).
- Sắp thứ tự các phép toán hai ngôi trong thực thi câu truy vấn.
Ví dụ 3.6: Cấu trúc lại cây trong hình 3.4, cho cây kết quả tốt hơn cây ban đầu, tuy nhiên vẫn còn xa tối ưu.
Hình 3.5: Cây đại số quan hệ đã viết lại
3.2 Định vị dữ liệu phân tán
Như đã biết, tầng định vị biến đổi một câu truy vấn đại số trên các quan hệ tổng thể, thành một câu truy vấn đại số được hiển thị trên các phân đoạn vật lý. Việc định vị sử dụng thông tin được lưu trữ trên lược đồ phân đoạn. Chương trình đại số quan hệ xây dựng lại quan hệ tổng thể từ các phân đoạn của nó gọi là chương trình định vị. Để đơn giản, trong phần này không xét đến sự nhân bản của các đoạn dữ liệu, mặc dù điều này có thể cải tiến hiệu năng. Sự nhân bản sẽ được xét trong phần sau.
Một giải pháp tự nhiên để định vị một câu truy vấn phân tán là sinh ra một câu truy vấn trong đó mỗi quan hệ tổng thể được thay thế bởi chương trình định vị của nó. Cách này có thể được xem như việc thay thế các nút lá của cây đại số
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
quan hệ của câu truy vấn phân tán bởi các cây con tương ứng với các chương trình định vị. Nói chung, cách tiếp cận này không hiệu quả vì câu truy vấn ban đầu vẫn có thể cấu trúc lại và đơn giản hoá. Trong phần này, với mỗi kiểu phân đoạn sẽ có các kỹ thuật rút gọn để sinh ra các câu truy vấn được tối ưu và đơn giản hơn [7].
3.2.1 Rút gọn phân đoạn ngang nguyên thuỷ
Phân đoạn ngang tách một quan hệ dựa trên các tân từ chọn
Ví dụ 3.7: Quan hệ KYSU(SHKS, TENKS, NGHE) được tách thành 3 phân đoạn ngang KYSU1, KYSU2, KYSU3 như sau:
KYSU1= SHKS ≤ “E3”(KYSU) KYSU2= ”E3”<SHKS ≤ “E6”(KYSU) KYSU3= SHKS > “E6”(KYSU)
Chương trình định vị cho một quan hệ đã được phân đoạn ngang là hợp của các đoạn: KYSU = KYSU1 KYSU2 KYSU3
Như vậy, dạng ban đầu của bất kỳ câu truy vấn nào xác định trên KYSU là có được bằng cách thay thế nó bởi (KYSU1 KYSU2 KYSU3 ).