Nguồn của quỏ trỡnh xử lý truy vấn là cõu truy vấn dạng phộp tớnh trờn cỏc quan hệ phõn tỏn. Cỏc tầng tham gia vào việc phõn tớch xử lý truy vấn thành một dóy tối ưu cỏc phộp toỏn cục bộ là: Phõn ró cõu truy vấn, định vị dữ liệu, tối ưu
Lược đồ toàn cục Lược đồ toàn cục Lược đồ cục bộ Số liệu trờn cỏc đoạn Phõn ró truy vấn Định vị dữ liệu
Tối ưu hoỏ toàn cục
Tối ưu hoỏ cục bộ Truy vấn dạng phộp tớnh trờn
cỏc quan hệ phõn tỏn
Truy vấn dạng đại số trờn cỏc quan hệ phõn tỏn
Truy vấn theo đoạn
Truy vấn theo đoạn đó tối ưu kốm với cỏc phộp toỏn truyền
Truy vấn cục bộ đó tối ưu
T R Ạ M Đ IỀ U K H IỂ N C Á C T R Ạ M C Ụ C B Ộ
ứng với quỏ trỡnh viết lại truy vấn. Ba tầng đầu tiờn được thực hiện bởi một trạm trung tõm và sử dụng thụng tin toàn cục, tầng thứ tư được thực hiện tại cỏc trạm cục bộ. Cỏc tầng này sẽ được trỡnh bày chi tiết ở phần sau.
2.3.2.4 Phõn ró truy vấn và định vị dữ liệu [2, 6, 9].
Hai tầng phõn ró truy vấn và định vị dữ liệu được thực hiện liờn tiếp và chịu trỏch nhiệm biến đổi cõu truy vấn ở dạng phộp tớnh quan hệ ban đầu thành cõu truy vấn dạng đại số quan hệ được định nghĩa trờn cỏc đoạn.
Phõn ró truy vấn.
Phõn ró cõu truy vấn chịu trỏch nhiệm ỏnh xạ cõu truy vấn phõn tỏn dạng phộp tớnh quan hệ thành cõu truy vấn đại số trờn quan hệ toàn cục. Cỏc kỹ thuật được sử dụng ở phần này là những kỹ thuật của cỏc Hệ quản trị CSDL tập trung. Cõu truy vấn thu được được coi như đạt “chất lượng” nếu như cỏc tầng sau cú sử dụng cỏc thuật toỏn tầm thường thỡ vẫn trỏnh được cỏc thực hiện kộm hiệu quả nhất.
Trong phần này chỳng ta giả sử là cõu truy vấn đó nhập đỳng cỳ phỏp. Khi kết thỳc giai đoạn này cõu truy vấn thu được sẽ đỳng về ngữ nghĩa và đạt chất lượng.
Cỏc bước phõn ró truy vấn:
Bước 1: Đưa về dạng chuẩn tắc.
Bước 2: Phõn tớch.
Bước 3: Loại dữ liệu thừa.
Bước 4: Viết lại truy vấn.
- Đƣa cõu truy vấn về dạng chuẩn tắc.
Mục đớch của chuẩn hoỏ cõu truy vấn là biến đổi cõu truy vấn thành một dạng chuẩn để xử lý tiếp. Trong ngụn ngữ quan hệ SQL, biến đổi quan trọng nhất là lượng từ hoỏ vấn tin, cú thể là một vị từ phi lượng từ với độ phức tạp nào đú, với tất cả cỏc lượng từ cần thiết đặt phớa trước.
Cú hai dạng chuẩn cú thể cú cho vị từ: Dạng chuẩn tắc hội là hội của cỏc tuyển: (p11p12 ... p1n) ... (pm1pm2 ... pmn)
Dạng chuẩn tắc tuyển là tuyển của cỏc hội: (p11p12 ... p1n) ... (pm1pm2 ... pmn)
Biến đổi cỏc vị từ phi lượng từ là chuẩn hoỏ bằng cỏch sử dụng cỏc qui tắc tương đương trong toỏn logic:
1) p1 p2 p2 p1 2) p1 p2 p2 p1 3) p1 (p2 p3) (p1 p2) p3 4) p1 (p2 p3) (p1 p2) p3 5) p1 (p2 p3) (p1 p2) (p1 p3) 6) p1 (p2 p3) (p1 p2) (p1 p2) 7) (p1 p2) p2 p1 8) (p1 p2) p2p1 9) (p) p
Vớ dụ: Với cõu truy vấn: “ Đưa ra tờn cỏc nhà cung cấp ở Hà nội đó cung cấp cỏc thiết bị cú mó thiết bị là MT hoặc MI ”.
Viết dưới dạng SQL như sau: SELECT TENNCC
FROM NHACC, CUNGCAP
WHERE NHACC.MANCC = CUNGCAP.MANCC AND THANHPHO=”Hà nội”
AND (MATB = “MT” OR MATB = “MI”) Viết dưới dạng chuẩn tắc hội:
NHACC.MANCC = CUNGCAP.MANCC THANHPHO = ”Hà nội” (MATB = “MT” MATB = “MI”)
Viết dưới dạng chuẩn tắc tuyển:
(NHACC.MANCC = CUNGCAP.MANCC THANHPHO = ”Hà nội” MATB = “MT”)(NHACC.MANCC=CUNGCAP.MANCCTHANHPHO=”Hà nội”MATB=“MI”)
Việc phõn tớch cõu truy vấn giỳp chỳng ta loại bỏ cỏc cõu truy vấn khụng đỳng. Lý do cú thể là do chỳng bị sai kiểu hoặc sai nghĩa.
+ Sai kiểu: Nếu như nú cú một thuộc tớnh, hoặc tờn quan hệ chưa được khai bỏo trong lược đồ toàn cục hoặc cỏc phộp toỏn được ỏp dụng cho cỏc thuộc tớnh cú kiểu khụng thớch hợp.
+ Sai 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ả, trong ngữ cảnh của phộp tớnh quan hệ chỉ cú thể kiểm tra được tớnh đỳng đắn cho tập con của phộp tớnh quan hệ. Chỳng thường khụng chứa cỏc tuyển và phủ định. Để xỏc định lỗi này thường sử dụng cỏch biểu diễn cõu truy vấn dưới dạng đồ thị, được gọi là đồ thị nối tương ứng (join graph) và đồ thị kết nối (connection graph) hay cũn gọi là đồ thị truy vấn (query graph).
Trong đồ thị truy vấn, một nỳt biểu thị cho một quan hệ kết quả, cỏc nỳt khỏc biểu thị cho cỏc quan hệ toỏn hạng. Cạnh giữa cỏc nỳt là toỏn hạng biểu diễn cho một nối, vũng khuyờn biểu diễn cho phộp chọn, cạnh nối với nỳt kết quả sẽ biểu thị cho phộp chiếu.
Vớ dụ: Với cõu truy vấn: “ Đưa ra tờn cỏc nhà cung cấp ở Hà nội đó cung cấp thiết bị cho cỏc đơn vị ở Miền nam”.
Viết dưới dạng SQL như sau: SELECT TENNCC
FROM NHACC, CUNGCAP, DONVI
WHERE NHACC.MANCC = CUNGCAP.MANCC AND CUNGCAP.MADV = DONVI.MADV
AND THANHPHO=”Hà nội” AND MIEN = “Miền nam” Ta cú đồ thị nối và đồ thị truy vấn như hỡnh 2.8.
Nếu như đồ thị khụng liờn thụng thỡ cõu truy vấn đú cú lỗi. Chẳng hạn với cõu lệnh SQL như sau:
SELECT TENNCC
FROM NHACC, CUNGCAP, DONVI
WHERE NHACC.MANCC = CUNGCAP.MANCC AND THANHPHO=”Hà nội”
AND MIEN = “Miền nam” Ta cú đồ thị truy vấn như hỡnh 2.9 Đồ thị nối Đồ thị truy vấn Hỡnh 2.8 Cỏc đồ thị quan hệ CUNGCAP NHACC DONVI CUNGCAP NHACC DONVI KETQUA
MIEN = “Miền nam” THANHPHO=”Hà nội”
TENNCC
CUNGCAP
Hỡnh 2.9 Đồ thị truy vấn khụng liờn thụng
- Loại bỏ dƣ thừa. Sau khi lượng tử hoỏ truy vấn, kết quả cú thể chứa cỏc vị từ dư thừa. Cỏc vị từ này cú thể loại bỏ bằng cỏch giản ước lượng tử hoỏ dựng cỏc qui tắc luỹ đẳng sau:
1) p p p 2) p p p 3) p true p 4) p false p 5) p false false 6) p true p 7) p p false 8) p p true 9) p1 (p1 p2) p1 10) p1 (p1 p2) p1
- Viết lại truy vấn. Bước này được chia thành hai bước nhỏ: (1) biến đổi cõu truy vấn (query tree) sang dạng đại số quan hệ, (2) cấu trỳc lại cõu truy vấn đại số nhằm cải thiện hiệu năng. Cõu truy vấn sẽ được biểu diễn dưới dạng cõy toỏn tử. Mỗi nỳt lỏ biểu thị cho một quan hệ của CSDL, cỏc nỳt khụng phải lỏ biểu thị cho quan hệ trung gian được sinh ra bởi cỏc phộp tớnh quan hệ. Chuỗi cỏc phộp toỏn theo hướng từ lỏ đến gốc biểu thị cho kết quả truy vấn.
Vớ dụ: Với cõu truy vấn: “ Tỡm tờn cỏc nhà cung cấp đó cung cấp Mỏy Photo cho đơn vị cú mó đơn vị là P01”.
SELECT TENNCC
FROM NHACC, CUNGCAP, THIETBI
WHERE NHACC.MANCC = CUNGCAP.MANCC AND CUNGCAP.MATB = THIETBI.MATB AND TENTB = “Mỏy Photo” AND MADV=”P01” Ta cú cõy truy vấn: TENNCC
NHACC.MANCC = CUNGCAP.MANCC AND CUNGCAP.MATB = THIETBI.MATB AND TENTB = “Mỏy Photo” AND MADV = ”P01”
Hỡnh 2.10 Vớ dụ về cõy truy vấn
Bằng cỏch sử dụng cỏc quy tắc biến đổi sau đõy ta cú thể thu được nhiều cõy tương đương từ cõy trờn.
Quy tắc biến đổi:
1) C1 and C2 and ... and Cn(R) C1(C2( ... (Cn(R)) ... )) 2) C1(C2(R)) C2(C1(R))
3) DS1(DS2( ... (DSn(R)) DS1(R)
4) Nếu điều kiện chọn C chỉ bao gồm cỏc thuộc A1, ..., An trong danh sỏch chiếu thỡ: A1, A2, ..., An (C(R)) C(A1, A2, ..., An (R))
5) R x S S x R R C S S C R R S S R R S S R
6) C(R S) (C(R) S) Nếu điều kiện C chỉ liờn quan đến R.
(R C(S) Nếu điều kiện C chỉ liờn quan đến S.
C1(R) C2(S) Nếu điều kiện C = C1 and C2
7) DS(R C S) DS1(R) C DS2(S) với DS = DS1R DS2S 8) Gọi là một trong bốn phộp toỏn , x, , ta cú:
(R S) T R (S T) 9) C(R S) (C(R) C(S) 10) C(R x S) R C S
Áp dụng cỏc quy tắc trờn để biến đổi cõy truy vấn hỡnh 2.10 ta thu được cõy truy vấn tương đương hỡnh 2.11. Ta nhận thấy cõy truy vấn trong hỡnh 2.11 tốt hơn cõy truy vấn trong hỡnh 2.10 do khụng phải sử dụng tớch Descartes.
TENNCC
TENTB = “Mỏy Photo” AND MADV = ”P01” CUNGCAP.MATB = THIETBI.MATB
NHACC.MANCC = CUNGCAP.MANCC
THIETBI
NHACC CUNGCAP
Hỡnh 2.11 Cõy truy vấn tương đương
Trong giai đoạn tối ưu hoỏ, người ta thử so sỏnh tất cả cỏc cõy tương đương dựa trờn chi phớ dự đoỏn. Tuy nhiờn số lượng cõy tương đương cú thể là rất lớn làm cho cỏch tiếp cận này phi thực tế. Người ta thường sử dụng tối ưu truy vấn theo heuristic để tỏi cấu trỳc cõy theo bốn quy tắc sau:
1) Tỏch phộp toỏn một ngụi, làm đơn giản biểu thức truy vấn.
2) Cỏc phộp toỏn một ngụi trờn cựng một quan hệ cú thể được nhúm lại, để chỉ truy xuất đến quan hệ đú một lần.
3) Cỏc phộp toỏn một ngụi cú thể giao hoỏn với phộp toỏn hai ngụi để cho phộp cỏc phộp toỏn một ngụi thực hiện trước.
4) Cỏc phộp toỏn hai ngụi cú thể được sắp xếp lại, để làm giảm kớch thước cỏc quan hệ trung gian.
Sau khi tỏi cấu trỳc ta thu được cõy như hỡnh 2.12. Một thuật toỏn tỏi cấu trỳc đơn giản được trỡnh bày trong [Ullman, 1982] cú sử dụng heuristic, trong đú ỏp dụng cỏc phộp toỏn một ngụi (chọn, chiếu) càng sớm càng tốt nhằm giảm kớch thước của cỏc quan hệ trung gian.
TENNCC MADV = ”P01” CUNGCAP.MATB = THIETBI.MATB NHACC.MANCC = CUNGCAP.MANCC THIETBI NHACC CUNGCAP MATB TENNCC, MANCC
TENTB = “Mỏy Photo”
MATB,
MANCC
Hỡnh 2.12 Cõy truy vấn đó được viết lại
Định vị dữ liệu.
Tầng định vị dữ liệu cú nhiệm vụ biến đổi một cõu truy vấn đại số trờn quan hệ tổng thể thành cõu truy vấn đại số được biểu thị trờn cỏc đoạn. Việc định vị dữ liệu sử dụng cỏc thụng tin về sự phõn bố dữ liệu được lưu trong lược đồ phõn đoạn. Tầng này xỏc định những đoạn nào cần cho truy vấn, và biến đổi rỳt gọn cõu truy vấn phõn tỏn thành cõu truy vấn cú “chất lượng” được xỏc định trờn cỏc đoạn. Để cho đơn giản chỳng ta khụng xột tỡnh huống cỏc đoạn được nhõn bản. Chương trỡnh, cú cỏc toỏn hạng là cỏc đoạn, cú nhiệm vụ tỏi thiết quan hệ toàn cục từ cỏc đoạn được gọi là chương trỡnh định vị (localization program).
Một cỏch định vị đơn giản là thay thế quan hệ toàn cục trong cõu truy vấn bằng chương trỡnh định vị của nú. Cõu truy vấn thu được được gọi là cõu truy vấn gốc. Tuy nhiờn cỏch này khụng được hiệu quả, vỡ cõu truy vấn gốc vẫn cú thể được cấu trỳc lại và đơn giản hoỏ. Với việc ỏp dụng cỏc heuristic và cỏc quy tắc biến đổi ta sẽ cú với mỗi kiểu phõn đoạn sẽ cú cỏc kỹ thuật biến đổi, rỳt gọn để cõu truy vấn được tối ưu và đơn giản hơn.
- Rỳt gọn cho phõn đoạn ngang.
Để nhận được dạng chớnh tắc của truy vấn đoạn ta thay thế cỏc quan hệ toàn cục trong cõu truy vấn bằng biểu thức xõy dựng lại cỏc quan hệ đú (chương trỡnh định vị của quan hệ đú).
Giả sử: Quan hệ NHACC được phõn đoạn ngang như sau (cỏc nhà cung cấp hoặc ở Hà nội, hoặc ở TP HCM (khụng cú giỏ trị null):
NHACC2 = THANHPHO = “TP HCM” NHACC
Quan hệ CUNGCAP cũng được phõn đoạn ngang giỏn tiếp theo quan hệ NHACC:
CUNGCAP1 = CUNGCAP NHACC1 CUNGCAP2 = CUNGCAP NHACC2
Khi đú, với cõy truy vấn trong hỡnh 2.10 ta cú thể xõy dựng lại cõy truy vấn như hỡnh 2.13:
Hỡnh 2.13 Cõy truy vấn sau khi thay thế+ Rỳt gọn với phộp chọn. + Rỳt gọn với phộp chọn.
Cho một quan hệ R được phõn đoạn ngang thành R1, R2, ..., Ru, ... trong đú Rj = pj(R).
Qui tắc 1:pj(Rj) = nếu x R:(pi(x) pj(x)) với pi, pj là cỏc vị từ chọn, x biểu thị cho một bộ, và p(x) biểu thị vị từ p đỳng với x.
Tuy nhiờn việc xỏc định cỏc vị từ mõu thuẫn đũi hỏi phải sử dụng cỏc kỹ thuật chứng minh định lý nếu cỏc vị từ này ở dạng hoàn toàn tổng quỏt. Trờn thực tế cỏc hệ quản trị CSDL núi chung sẽ đơn giản hoỏ bằng cỏch chỉ hỗ trợ những vị từ đơn giản khi định nghĩa cỏc quy tắc phõn đoạn.
Vớ dụ: Với cõu truy vấn: “ Cho biết thụng tin về cỏc nhà cung cấp ở Hà nội”.
TENNCC
NHACC.MANCC = CUNGCAP.MANCC AND CUNGCAP.MATB = THIETBI.MATB AND TENTB = “Mỏy Photo” AND MADV = ”P01”
X
X
NHACC1 NHACC2 CUNGCAP1 1
CUNGCAP2 THIETBI
SELECT *
FROM NHACC
WHERE THANHPHO = “Hà nội”
Ta có cây truy vấn gốc và cây rút gọn như sau:
Hỡnh 2.14 Rỳt gọn phõn đoạn ngang (với phộp chọn) + Rỳt gọn với phộp nối.
Cỏc phộp nối trờn cỏc quan hệ được phõn đoạn ngang cú thể được đơn giản khi chỳng được phõn đoạn ngang theo thuộc tớnh kết nối hoặc chỳng được phõn đoạn ngang giỏn tiếp. Sự đơn giản bao gồm việc phõn phối cỏc phộp nối trờn cỏc hợp và loại bỏ cỏc phộp nối vụ ớch. Việc phõn phối phộp nối trờn hợp cú thể phỏt biểu như sau:
(R1 R2) S (R1 S) (R2 S)
Trong đú Ri là cỏc đoạn của R tức Ri = pi(R), S là một quan hệ.
Quy tắc 2: Ri Rj = nếu x Ri, y Rj :(pi(x) pj(y))
Vớ dụ: Với cõu truy vấn: “ Tỡm tờn cỏc nhà cung cấp đó cung cấp thiết bị cho cụng ty”.
SELECT TENNCC
FROM NHACC, CUNGCAP
WHERE NHACC.MANCC = CUNGCAP.MANCC Ta cú cõy truy vấn gốc và cõy rỳt gọn như sau:
THANHPHO = “Hà nội” NHACC1 NHACC2 1 THANHPHO = “Hà nội” NHACC1 TENNCC NHACC.MANCC = CUNGCAP.MANCC
Hỡnh 2.15 Rỳt gọn phõn đoạn ngang (với phộp nối)
- Rỳt gọn cho phõn đoạn dọc
Cụng việc phõn đoạn dọc một quan hệ trong CSDL phõn tỏn dựa trờn cỏc thuộc tớnh chiếu. Chương trỡnh định vị cho một quan hệ phõn đoạn dọc gồm cú nối của cỏc đoạn theo thuộc tớnh chung.
Giả sử quan hệ NHANVIEN( MANV, HOTEN, LUONG, THUE, MADV, MAQL) được phõn đoạn dọc thành cỏc đoạn:
NHANVIEN1 = MANV, HOTEN, LUONG, THUE NHANVIEN NHANVIEN2 = MANV, MADV, MAQL NHANVIEN Khi đú chương trỡnh định vị sẽ là:
NHANVIEN = NHANVIEN1 NHANVIEN2
Tương tự như phõn đoạn ngang, cõu truy vấn trờn phõn đoạn dọc cũng cú thể rỳt gọn. Cho trước quan hệ R được định nghĩa trờn cỏc thuộc tớnh A={A1, ..., An} được phõn đoạn dọc thành Ri=A’(R), A’A, quy tắc cú thể được phỏt biểu như sau:
Quy tắc 3: D, K(Ri) là vụ ớch nếu D A’ = , với D: tập cỏc thuộc tớnh chiếu, D A và K là khoỏ của quan hệ.
Vớ dụ: Với cõu truy vấn: “ Đưa ra danh sỏch tờn nhõn viờn của cụng ty”. SELECT HOTEN
FROM NHANVIEN
TENNCC
NHACC1 CUNGCAP1 NHACC2
1 CUNGCAP2 NHACC.MANCC = CUNGCAP.MANCC NHACC.MANCC = CUNGCAP.MANCC
Ta cú cõy truy vấn gốc và cõy rỳt gọn như sau:
Hỡnh 2.16 Rỳt gọn phõn đoạn dọc
- Rỳt gọn cho phõn đoạn hỗn hợp
Phõn đoạn hỗn hợp là tổ hợp của cỏc phõn đoạn ngang và phõn đoạn dọc. Mục tiờu là hỗ trợ hiệu quả cỏc cõu truy vấn cú chứa phộp chọn, chiếu và nối. Cõu truy vấn trờn phõn đoạn hỗn hợp cũng cú thể rỳt gọn theo cỏc quy tắc sau:
+ Loại bỏ cỏc quan hệ rỗng được tạo ra bởi cỏc phộp chọn mõu thuẫn trờn cỏc đoạn ngang.
+ Loại bỏ cỏc quan hệvụ dụng tạo ra bởi cỏc phộp chiếu trờn cỏcđoạn dọc. + Phõn phối cỏc nối cho cỏc hợp nhằm cụ lập và loại bỏ cỏc nối cụ lập.
Giả sử quan hệ NHANVIEN( MANV, HOTEN, LUONG, THUE, MADV, MAQL) được phõn đoạn hỗn hợp thành cỏc đoạn:
NHANVIEN1 = MANV, HOTEN, LUONG, THUE NHANVIEN NHANVIEN2 = MADV 5 ( MANV, MADV, MAQL NHANVIEN) NHANVIEN3 = MADV > 5 ( MANV, MADV, MAQL NHANVIEN)
Vớ dụ: Với cõu truy vấn: “ Đưa ra danh sỏch họ tờn, lương của nhõn viờn trong cụng ty”.
SELECT HOTEN, LUONG FROM NHANVIEN
Ta có cây truy vấn gốc và cây rút gọn như sau:
HOTEN NHANVIEN1 NHANVIEN2 HOTEN NHANVIEN1 HOTEN, LUONG NHANVIEN1 HOTEN, LUONG NHANVIEN1
Hỡnh 2.17 Rỳt gọn phõn đoạn hỗn hợp
2.3.3 Tối ƣu hoỏ cõu hỏi.
Cõu truy vấn thu được từ quỏ trỡnh phõn ró và cục bộ hoỏ dữ liệu cú thể cho thực hiện bằng cỏch đưa thờm vào cỏc yếu tố truyền tin một cỏch cú hệ thống. Việc hoỏn vị thứ tự cỏc phộp toỏn trong cõu truy vấn cú thể đưa ra nhiều chiến lược truy vấn. Để tỡm ra một cỏch sắp xếp tối ưu cỏc phộp toỏn cho một cõu truy vấn là nhiệm vụ của bộ tối ưu hoỏ (optimizer). Chọn một chiến lược tối ưu là một bài toỏn NP –