6. Cỏc kết quả dự kiến
2.6. Định vị dữ liệu phõn tỏn
• Lớp định vị biến đổi một truy vấn đại số quan hệ tổng thể thành một truy vấn đại số được biểu thị trờn cỏc mảnh vật lý.
• Sử dụng thụng tin được lưu trữ trờn cỏc lược đồ phõn mảnh để định vị. • Chương trỡnh đại số quan hệ xõy dựng lại quan hệ tổng thể từ cỏc phõn
mảnh của nú gọi là chương trỡnh định vị.
• Truy vấn cú được từ chương trỡnh định vị gọi là truy vấn ban đầụ
• Trong phần dưới đõy, với mỗi kiểu phõn mảnh chỳng ta sẽ biểu diễn
một kỹ thuật rỳt gọn để sinh ra truy vấn được tối ưu và đơn giản hoỏ.
2.6.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ụ 2.16: 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 ).
Việc rỳt gọn cỏc cõu truy vấn trờn cỏc quan hệ đó được phõn đoạn ngang bao gồm việc xỏc định, sau khi đó cấu trỳc lại cỏc cõy con, cỏc cõy con đú sẽ sinh ra cỏc quan hệ rỗng và loại bỏ chỳng. Phõn đoạn ngang cú thể được khai thỏc để làm đơn giản cả hai phộp chọn và kết nốị
Rỳt gọn với phộp chọn: R được phõn đoạn ngang thành R1, R2, …,Rw‟: Rj=pj(R)
Luật 1:
pj(Rj) =nếu x € R:(pi(x) pj(x))
Trong đú pi, pj: tõn từ chọn, x: bộ dữ liệu, p(x): tõn từ p đỳng với x Vớ dụ 2.17:
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn
SELECT * FROM KYSU WHERE SHKS=”E5”
Cõu truy vấn ban đầu tương ứng với hỡnh 2.14a, bằng cỏch giao hoỏn phộp chọn với phộp hợp để tỡm ra cỏc quan hệ rỗng, ta được cõu truy vấn rỳt gọn hỡnh 2.14b.
(a) Cõu truy vấn ban đầu (b) Cõu truy vấn rỳt gọn
Hỡnh 2.14: Rỳt gọn cho phõn đoạn ngang với phộp chọn
Rỳt gọn với phộp kết nối:
Cỏc phộp kết nối trờn cỏc quan hệ đó được phõn đoạn ngang cú thể đơn giản khi chỳng được phõn đoạn theo thuộc tớnh kết nốị Sự đơn giản bao gồm việc phõn phối cỏc phộp kết nối trờn cỏc phộp hợp và loại bỏ cỏc phộp kết nối vụ ớch. Sự phõn phối của phộp kết nối trờn phộp hợp cú thể bắt đầu như sau:
(R1 R2) ⊲⊳ R3 = (R1 ⊲⊳ R3) (R2 ⊲⊳ R3) trong đú Ri là cỏc phõn đoạn
Với biến đổi này, cú thể xỏc định được cỏc phộp kết nối vụ ớch của cỏc đoạn khi cỏc điều kiện kết nối mõu thuẫn nhaụ ỏp dụng luật 2 để loại bỏ cỏc phộp kết nối vụ ớch.
Luật 2:
(Ri ⊲⊳ Rj) =nếuxRi ,yRj :(pi(x) pj(y))
Trong đú Ri, Rj được xỏc định theo cỏc tõn từ pi, pj trờn cựng thuộc tớnh Như vậy, việc xỏc định cỏc phộp kết nối vụ ớch cú thể được thực hiện bằng cỏch chỉ xột cỏc tõn từ kết nốị ỏp dụng luật này cho phộp thực hiện phộp kết nối hai
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn
quan hệ như thực hiện song song cỏc phộp kết nối bộ phận của cỏc phõn đoạn. Khụng phải cõu truy vấn rỳt gọn luụn tốt hơn (đơn giản hơn) cõu truy vấn ban đầụ Cõu truy vấn ban đầu là tốt hơn khi số cỏc phộp kết nối bộ phận trong cõu truy vấn rỳt gọn lớn. Trường hợp này xuất hiện khi cú ớt cỏc tõn từ phõn đoạn mõu thuẫn nhaụ Trường hợp xấu nhất xuất hiện khi mỗi đoạn của một quan hệ phải được kết nối với mỗi đoạn của quan hệ khỏc. Đõy chớnh là tớch Decartes của hai tập cỏc đoạn, mỗi tập tương ứng với một quan hệ. Cõu truy vấn rỳt gọn là tốt hơn khi số cỏc phộp kết nối bộ phận là nhỏ. Lợi ớch của cõu truy vấn rỳt gọn là cỏc phộp kết nối cú thể được thực hiện song song, vỡ vậy tăng thời gian đỏp ứng.
Vớ dụ 2.18: Quan hệ KYSU được phõn đoạn như trờn, quan hệ HOSODA được phõn đoạn như sau:
HOSODA1 = SHKS ≤ "E3"(HOSODA) HOSODA2 = SHKS > "E3"(HOSODA) Xột cõu truy vấn:
SELECT *
FROM KYSU, HOSODA
WHERE KYSỤSHKS=HOSODẠSHKS
Cõu truy vấn ban đầu tương ứng với hỡnh 2.15ạ Phõn phối phộp kết nối trờn cỏc phộp hợp và ỏp dụng qui tắc 2, ta được cõu truy vấn rỳt gọn hỡnh 2.15b, và ba phộp kết nối bộ phận cú thể được thực hiện song song.
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn
(b) Cõu truy vấn rỳt gọn
Hỡnh 2.15: Rỳt gọn phõn đoạn ngang với phộp kết nối 2.6.2 Rỳt gọn phõn đoạn dọc
Phõn đoạn dọc tỏch một quan hệ dựa trờn cỏc thuộc tớnh chiếụ Vỡ phộp toỏn xõy dựng lại đối với phõn đoạn dọc là kết nối, nờn chương trỡnh định vị một quan hệ đó được phõn đoạn dọc là kết nối của cỏc đoạn trờn thuộc tớnh chung. Vớ dụ 2.19: KYSU được phõn đoạn dọc thành KYSU1, KYSU2 như sau:
KYSU1 = SHKS,TENKS(KYSU)
KYSU2 = SHKS,NGHE(KYSU)
Chương trỡnh định vị là: KYSU = KYSU1 ⊲⊳SHKS KYSU2
Tương tự phõn đoạn ngang, cỏc cõu truy vấn trờn cỏc phõn đoạn dọc cú thể được rỳt gọn bằng cỏch xỏc định cỏc quan hệ trung gian vụ ớch và loại bỏ cỏc cõy con chứa chỳng. Cỏc phộp chiếu trờn một phõn đoạn dọc khụng cú cỏc thuộc tớnh chung với cỏc thuộc tớnh chiếu (ngoại trừ khoỏ K của quan hệ) là vụ ớch, mặc dự cỏc quan hệ là khỏc rỗng.
Luật 3:
D.K(Ri) là vô ích nếu DA’ =
Trong đú: Quan hệ R xỏc định trờn A = {A1, …, An}; Ri =A’(R); A’ A K là khoỏ của quan hệ; K A; D là tập cỏc thuộc tớnh chiếu; DA Vớ dụ 2.20:
SELECT TENKS FROM KYSU
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn
phộp chiếu với phộp kết nối, suy ra cõu truy vấn rỳt gọn hỡnh 2.16b.
(a) Cõu truy vấn ban đầu (b) Cõu truy vấn rỳt gọn Hỡnh 2.16: Rỳt gọn đối với việc phõn đoạn dọc
2.6.3 Rỳt gọn phõn đoạn giỏn tiếp
Cõu truy vấn trờn cỏc phõn đoỏn giỏn tiếp cũng cú thể rỳt gọn, nếu cỏc tõn từ phõn đoạn mõu thuẫn nhau thỡ phộp kết nối sẽ đưa ra quan hệ rỗng. Chương trỡnh định vị một quan hệ đó phõn đoạn ngang giỏn tiếp là hợp của cỏc đoạn.
Vớ dụ 2.21: Xột quan hệ HOSODĂSHKS, SHDA, TRNH, THOIGIAN) cú thể được phõn đoạn giỏn tiếp như sau:
HOSODA1 = HOSODA ⋉SHKS KYSU1 HOSODA2 = HOSODA ⋉SHKS KYSU2
Trong đú quan hệ KYSU được phõn đoạn ngang như sau:
KYSU1 = NGHE =“Lập trỡnh viờn”(KYSU)
KYSU2 = NGHE ạ“Lậptrỡnh viờn”(KYSU)
Chương trỡnh định vị cho một quan hệ đó được phõn đoạn ngang giỏn tiếp là hợp của cỏc đoạn: HOSODA = HOSODA1 HOSODA2
Cõu truy vấn trờn cỏc phõn đoạn giỏn tiếp cũng cú thể rỳt gọn. Phộp kết nối sẽ đưa ra quan hệ rỗng nếu cỏc tõn từ phõn đoạn mõu thuẫn nhaụ Vớ dụ tõn từ của HOSODA1 và KYSU2 mõu thuẫn nhau nờn HOSODA1 ⊲⊳ KYSU2 =
Vớ dụ 2.21: Xột cõu truy vấn SQL sau: SELECT *
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn
WHERE HOSODẠSHKS = KYSỤSHKS AND NGHE = “KS cơ khớ”
Cõu truy vấn ban đầu trờn cỏc đoạn KYSU1, KYSU2, HOSODA1, và HOSODA2 tương ứng hỡnh 2.17a bằng cỏch đẩy phộp chọn xuống cỏc đoạn KYSU1
và KYSU2, được cõu truy vấn rỳt gọn hỡnh 2.17b. Phõn phối phộp kết nối với phộp hợp, được cõy hỡnh 2.17c. Cõy con bờn trỏi đưa ra một quan hệ rỗng, nờn cõy rỳt gọn cú được trong hỡnh 2.17d.
(a) Cõu truy vấn ban đầu
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn
(c) Cõu truy vấn sau khi đẩy phộp hợp lờn
(d) Cõu truy vấn rỳt gọn sau khi loại bỏ cõy con bờn trỏi
Hỡnh 2.17: Rỳt gọn phõn đoạn giỏn tiếp
2.6.4 Rỳt gọn phõn đoạn hỗn hợp
Mục đớch của phõn đoạn hỗn hợp là hỗ trợ cỏc cõu truy vấn liờn quan đến phộp chiếu, chọn, kết nối một cỏch hiệu quả. Chương trỡnh định vị cho một quan hệ đó phõn đoạn hỗn hợp sử dụng phộp hợp và phộp kết nối của cỏc đoạn.
Vớ dụ 2.22: Quan hệ KYSU được phõn đoạn hỗn hợp như sau: KYSU1 =SHKS ≤”E4” ( SHKS.TENKS(KYSU))
KYSU2 =SHKS >”E4” ( SHKS.TENKS(KYSU)) KYSU3 =SHKS.NGHE(KYSU)
Chương trỡnh định vị là: KYSU = (KYSU1 KYSU2) ⊲⊳SHKS KYSU3
Cỏc cõu truy vấn trờn cỏc phõn đoạn hỗn hợp cú thể được rỳt gọn bằng cỏch kết hợp quy tắc sử dụng trong phõn đoạn ngang nguyờn thuỷ, phõn đoạn dọc, phõn đoạn ngang giỏn tiếp, tương ứng như sau:
1. Loại bỏ cỏc quan hệ rỗng sinh bởi mõu thuẫn giữa cỏc phộp chọn trờn cỏc đoạn ngang.
2. Loại bỏ cỏc quan hệ vụ ớch sinh bởi cỏc phộp chiếu trờn cỏc phõn đoạn dọc
3. Phõn phối cỏc phộp kết nối với cỏc phộp hợp để tỏch và loại bỏ cỏc phộp kết nối vụ ớch.
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn
SELECT TENKS FROM KYSU WHERE SHKS = ”E5”
Cõu truy vấn ban đầu tương ứng hỡnh 2.23a được rỳt gọn thành hỡnh 2.23b
(a) Cõu truy vấn ban đầu (b) Cõu truy vấn rỳt gọn
Hỡnh 2.18: Rỳt gọn phõn đoạn hỗn hợp
2.7. Khỏi quỏt về xử lý cõu truy vấn
Trong một hệ quản trị cơ sở dữ liệu phõn tỏn, việc thực hiện cỏc cõu truy vấn trờn cỏc ngụn ngữ bậc cao rất tốn kộm thời gian. Do vậy trước khi thực hiện cõu truy vấn cần phải biến đổi để giảm thời gian tớnh toỏn, khối lượng truyền thụng giữa cỏc trạm. Việc đú gọi là tối ưu hoỏ cõu truy vấn phõn tỏn. Chương này sẽ trỡnh bày khỏi quỏt về xử lý cõu truy vấn trong hệ quản trị cơ sở dữ liệu phõn tỏn; cụ thể phõn tớch cỏc vấn đề liờn quan trong bốn giai đoạn xử lý cõu truy vấn: Phõn ró cõu truy vấn, định vị dữ liệu, tối ưu hoỏ tổng thể, tối ưu hoỏ địa phương.
Vai trũ của một bộ xử lý cõu truy vấn i phõn tỏn là để ỏnh xạ một cõu truy vấn mức cao (chẳng hạn được biểu diễn bởi phộp tớnh quan hệ) trong cơ sở dữ liệu phõn tỏn (tức là một tập cỏc quan hệ tổng thể) thành một dóy cỏc phộp toỏn cơ sở dữ liệu (của đại số quan hệ) trờn cỏc đoạn quan hệ. Một chức năng quan trọng đặc trưng cho ỏnh xạ này là:
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn
- Cõu truy vấn của phộp tớnh trờn cỏc quan hệ phõn tỏn phải được phõn ró thành một dóy cỏc phộp toỏn quan hệ được gọi là một cõu truy vấn đại số.
- Dữ liệu được truy nhập bởi cõu truy vấn phải được định vị để cỏc phộp toỏn trờn cỏc quan hệ thực hiện biến đổi trờn dữ liệu địa phương (cỏc đoạn).
- Cõu truy vấn đại số trờn cỏc đoạn phải được mở rộng với cỏc phộp toỏn truyền thụng và được tối ưu với một hàm chi phớ tối thiểụ Hàm chi phớ này dựa vào nguồn tài nguyờn mỏy tớnh như I/Os, CPU, mạng truyền thụng.
2.7.1. Vấn đề xử lý truy vấn
Chức năng chớnh của một bộ xử lý cõu truy vấn là biến đổi một cõu truy vấn của người sử dụng ở mức cao (chẳng hạn phộp tớnh quan hệ) thành một cõu truy vấn tương đương ở mức thấp hơn (một số biến thỏi của đại số quan hệ cú bổ sung phộp toỏn truyền thụng). Phộp biến đổi phải đỳng đắn (cả hai cõu truy vấn phải cú cựng ngữ nghĩa và cho cựng một kết quả) và hiệu quả. Mỗi cỏch biến đổi dẫn đến việc sử dụng tài nguyờn mỏy tớnh khỏc nhau nờn vấn đề đặt ra là lựa chọn phương ỏn dựng tài nguyờn ớt nhất.
Trong mụi trường tập trung, cỏc chiến lược thực thi cõu truy vấn cú thể biểu diễn tốt trong sự mở rộng của đại số quan hệ. Vai trũ chớnh của bộ xử lý cõu truy vấn tập trung là, với một cõu truy vấn cho trước, chọn cõu truy vấn đại số quan hệ tốt nhất trong số tất cả cỏc cõu truy vấn tương đương. Vỡ vấn đề là rất khú tớnh toỏn với một số lượng lớn cỏc quan hệ, nờn núi chung là giải phỏp gần tối ưụ
Trong một hệ phõn tỏn, đại số quan hệ là khụng đủ biểu diễn cỏc chiến lược thực thị Nú phải được bổ sung cỏc phộp toỏn truyền dữ liệu giữa cỏc trạm. Ngoài việc chọn thứ tự cỏc phộp toỏn đại số quan hệ, bộ xử lý cõu truy vấn phõn tỏn cũn phải chọn cỏc trạm tốt nhất để xử lý dữ liệụ
2.7.2. Cỏc mục tiờu của xử lý cõu truy vấn
Mục tiờu của xử lý cõu truy vấn trong mụi trường phõn tỏn là biến đổi một cõu truy vấn bậc cao trờn một cơ sở dữ liệu phõn tỏn thành một chiến lược thực thi hiệu quả được biểu diễn trong ngụn ngữ bậc thấp trờn cỏc cơ sở dữ liệu địa phương. Một khớa cạnh quan trọng của xử lý cõu truy vấn là tối ưu hoỏ cõu truy vấn. Vỡ nhiều chiến lược thực thi là biến đổi đỳng đắn cựng một cõu truy vấn bậc cao, nờn chỉ giữ lại một chiến lược tối ưu theo một nghĩa nào đú (vớ dụ sự tiờu thụ tài nguyờn).
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn
Độ đo của sự tiờu thụ tài nguyờn là tổng chi phớ xử lý cõu truy vấn (total cost) bằng tổng thời gian xử lý cỏc phộp toỏn của cõu truy vấn tại cỏc trạm khỏc nhau và chi phớ truyền thụng giữa cỏc trạm. Thời gian trả lời cõu truy vấn (response time) là thời gian thực hiện cõu truy vấn. Vỡ cỏc phộp toỏn cú thể được thực hiện song song tại cỏc trạm khỏc nhau, nờn thời gian trả lời của một cõu truy vấn cú thể ớt hơn đỏng kể tổng chi phớ của nú.
Trong một hệ cơ sở dữ liệu phõn tỏn, tổng chi phớ được tối thiểu bao gồm CPU, I/O, cỏc chi phớ truyền thụng. Chi phớ CPU được tớnh khi thực hiện cỏc phộp toỏn trờn dữ liệu trong bộ nhớ chớnh. Chi phớ I/O là thời gian cần thiết để trao đổi dữ liệu giữa cỏc trạm tham gia trong sự thực hiện của cõu truy vấn (gồm thời gian xử lý thụng bỏo và truyền dữ liệu trờn mạng).
Trong hệ quản trị CSDL tập trung quan tõm đến chi phớ I/O và CPU, cũn trong CSDL phõn tỏn thỡ chi phớ truyền thụng được coi trọng nhất. Chi phớ truyền thụng đắt hơn chi phớ xử lý địa phương, nờn mục đớch của tối ưu hoỏ truy vấn phõn tỏn núi chung là tối thiểu chi phớ truyền thụng nhờ cỏc xử lý địa phương.
2.7.3. Cỏc giai đoạn xử lý cõu truy vấn
Vấn đề xử lý cõu truy vấn được chia làm bốn giai đoạn sau [7]
Hỡnh 2.19: Sơ đồ phõn lớp cho việc xử lý truy vấn phõn tỏn
2.7.4. Tối ƣu hoỏ cỏc truy vấn phõn tỏn
Ta đó biết, 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ệ
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn
bằng cỏch phõn ró và định vị dữ liệụ ỏ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 ưụ Sau