6. Cỏc kết quả dự kiến
2.7.4.4. Cỏc thuật toỏn dựa trờn phộp nửa kết nối
Phần này mụ tả phộp nửa kết nối cú thể giảm tổng chi phớ của cõu truy vấn kết nối, thiếu sút chớnh trong cỏch tiếp cận kết nối là cỏc toỏn hạng quan hệ vào phải truyền giữa cỏc trạm. Phộp nửa kết nối làm việc như một toỏn tử rỳt gọn kớch thước cho một quan hệ trước khi truyền.
Kết nối 2 quan hệ R và S trờn thuộc tớnh A, lưu tại trạm 1 và trạm 2 tương ứng, cú thể tớnh toỏn bằng cỏch thay một hoặc 2 toỏn hạng quan hệ bởi phộp nửa kết nối với quan hệ khỏc, sử dụng cỏc qui tắc sau:
R⊲⊳AS (R ⋉AS) ⊲⊳AS
R⊲⊳A (S ⋉AR)
(R ⋉AS) ⊲⊳A (S⋉A R)
Việc chọn một trong ba chiến lược nửa kết nối trờn đũi hỏi đỏnh giỏ cỏc chi phớ tương ứng của chỳng.
Sử dụng phộp nửa kết nối cú lợi khi chi phớ kết xuất và truyền nú tới trạm khỏc là nhỏ hơn chi phớ truyền toàn bộ toỏn hạng quan hệ và thực hiện phộp kết nốị Để thấy được lợi ớch tiềm tàng của phộp nửa kết nối, ta so sỏnh chi phớ của hai lựa chọn: R⊲⊳A S và (R ⋉AS) ⊲⊳A S, giả sử size(R) < size(S).
Chương trỡnh sử dụng phộp nửa kết nối sau: 1. A(S)trạm 1
2. Trạm 1 tớnh toỏn R’ = R ⋉AS 3. R’ trạm 2
4. Trạm hai tớnh toỏn R’ ⋉AS
Cỏch tiếp cận nửa kết nối là tốt nếu: size(A(S)) + size(R ⋉AS) < size(R) Cỏch tiếp cận nửa kết nối là tốt hơn nếu phộp nửa kết nối hoạt động như một
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
toỏn tử rỳt gọn đầy đủ, tức là, nếu một số ớt bộ của R tham gia vào kết nốị Cỏch tiếp cận kết nối tốt hơn nếu hầu như tất cả cỏc bộ của R tham gia vào kết nối, bởi vỡ cỏch tiếp cận nửa kết nối đũi hỏi thờm nhiều việc truyền của một phộp chiếu trờn thuộc tớnh kết nốị
Núi chung, phộp nửa kết nối cú thể cú lợi trong việc giảm kớch thước của cỏc toỏn hạng quan hệ liờn quan đến nhiều cõu truy vấn kết nốị Tuy nhiờn, trong trường hợp này tối ưu hoỏ cõu truy vấn trở nờn phức tạp hơn. Xột đồ thị kết nối của quan hệ KYSU, HOSODA, DUAN trong hỡnh 2.22 sử dụng phộp nửa kết nối
KYSU ⊲⊳ HOSODA ⊲⊳ DUAN
KYSU’ ⊲⊳HOSODA’ ⊲⊳ DUAN,
trong đú KYSU’ = KYSU ⋉ HOSODA
và HOSODA’ = HOSODA ⋉ DUAN
Cú thể rỳt gọn hơn nữa kớch thước của một toỏn hạng quan hệ bằng cỏch sử dụng hơn một phộp nửa kết nốị Vớ dụ, KYSU‟ thay thế bởi KYSU‟‟ như sau:
KYSU’’= KYSU ⋉ (HOSODA ⋉ DUAN), vỡ nếu size(HOSODA ⋉
DUAN) size(HOSODA) size(KYSU’’) size(KYSU’). Theo cỏch này, KYSU cú thể giảm bớt dóy cỏc phộp nửa kết nối, gọi là chương trỡnh nửa kết nối, KYSU ⋉ (HOSODA ⋉ DUAN). Tuy nhiờn, khụng phải tất cả quan hệ đều được rỳt gọn, cú thể bỏ qua cỏc quan hệ khụng liờn quan đến cỏc phộp kết nối cuối cựng.
Đối với một quan hệ đó cho, tồn tại một số chương trỡnh nửa kết nối tiềm tàng, nhưng cú một chương trỡnh nửa kết nối tối ưu, gọi là toỏn tử thu gọn đầy đủ. Để tỡm toỏn tử thu gọn đầy đủ này, một phương phỏp đơn giản là đỏnh giỏ kớch thước giảm của tất cả cỏc chương trỡnh nửa kết nối cú thể và chọn ra chương trỡnh tốt nhất. Cú hai vấn đề với phương phỏp liệt kờ như sau [7]:
- Lớp cỏc cõu truy vấn, gọi là cõu truy vấn chu trỡnh, cú cỏc chu trỡnh trong đồ thị kết nối của chỳng và khụng thể tỡm được toỏn tử thu gọn đầy đủ.
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
đủ, nhưng số cỏc chương trỡnh nửa kết nối cú thể cú là một hàm mũ theo số quan hệ, khiến cho cỏch tiếp cận liệt kờ là NP - khú.
Vớ dụ 2.26: Xột cỏc quan hệ sau đõy, trong đú quan hệ KYSU, DUAN cú thờm thuộc tớnh THPHO và đổi tờn thành KYSUT, DUANT
KYSUT(SHKS, TENKS, NGHE, THPHO) HOSODĂSHKS, SHDA, TRNH, THOIGIAN) DUANT(SHDA, TENDA, NGANSACH, THPHO) Trong đú cú cỏc thuộc tớnh: SHKS: Số hiệu kỹ sư TENKS: Tờn kỹ sư THPHO: Thành phố SHDA: Số hiệu dự ỏn TRNH: Trỏch nhiệm TENDA: Tờn dự ỏn
Cõu truy vấn “Tỡm tờn của tất cả cỏc nhõn viờn sống trong thành phố cú đặt dự ỏn của họ”
SELECT TENKS
FROM KYSUT, HOSODA, DUANT WHERE KYSUT.SHKS = HOSODẠSHKS AND HOSODẠSHDA = DUANT.SHDA AND KYSUT.THPHO = DUANT.THPHO Cõu truy vấn này là chu trỡnh, hỡnh 2.22ạ
(a) Cõu truy vấn chu trỡnh (b) Cõu truy vấn khụng chu trỡnh Hỡnh 2.22: Biến đổi của cõu truy vấn chu trỡnh
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
Khụng tồn tại toỏn tử thu gọn đầy đủ cho cõu truy vấn trong vớ dụ 2.26. Sự thật là cú thể cú cỏc chương trỡnh nửa kết nối để rỳt gọn nú, nhưng số cỏc phộp toỏn sẽ tăng tỷ lệ với số cỏc bộ trong mỗi quan hệ, làm cho cỏch tiếp cận khụng hiệu quả. Một giải phỏp chuyển đồ thị chu trỡnh thành một cõy bằng cỏch bỏ cung và thờm tõn từ kết nối vào cung khỏc trong đồ thị.
Trong vớ dụ hỡnh 2.22b, loại bỏ cung (KYSUT, DUANT), thờm tõn từ KYSUT.THPHO = HOSODẠTHPHO và HOSODẠTHPHO = DUANT.THPHO, điều này ý núi thờm THPHO vào HOSODẠ Do đú cỏc giỏ trị của thuộc tớnh THPHO phải được gửi hoặc từ KYSUT hoặc từ HOSODẠ
Mặc dự cỏc toỏn tử thu gọn đầy đủ cho cỏc cõu truy vấn cõy tồn tại, nhưng vấn đề tỡm chỳng là NP-khú. Tuy nhiờn, cú một lớp cỏc cõu truy vấn quan trọng, gọi là cỏc cõu truy vấn chuỗi, trong đú tồn tại một thuật toỏn đa thức. Một cõu truy vấn chuỗi cú một đồ thị kết nối trong cỏc quan hệ cú thể được sắp xếp, mỗi quan hệ chỉ kết nối với quan hệ tiếp theo đó sắp xếp và kết quả của cõu truy vấn là tại cuối chuỗị Vớ dụ, cõu truy vấn trong hỡnh 2.25 là một cõu truy vấn chuỗị
Vỡ thực hiện một thuật toỏn với cỏc toỏn tử thu gọn đầy đủ là khú, nờn hầu hết cỏc hệ thống sử dụng cỏc phộp nửa kết nối để giảm kớch thước quan hệ.
2.8. Cỏc thuật toỏn tối ưu hoỏ cõu truy vấn phõn tỏn
Phần này minh hoạ cỏch sử dụng của cỏc kỹ thuật đó trỡnh bày cho bốn thuật toỏn tiờu biểu cho những lớp khỏc nhau của thuật toỏn tối ưu hoỏ cõu truy vấn phõn tỏn: Thuật toỏn rỳt gọn của INGRES phõn tỏn, thuật toỏn System R*, thuật toỏn SĐ -1 và thuật toỏn AYH (Apers, Hevner, and Yao). Sự khỏc nhau giữa chỳng cú thể túm tắt như sau:
- INGRES phõn tỏn: tối ưu hoỏ thời gian động, System R, SĐ-1. AYH: tối ưu hoỏ thời gian tĩnh.
- Hàm mục tiờu của SĐ-1 và R*: tối thiểu hoỏ tổng chi phớ, INGRES phõn tỏn và AYH: tối thiểu thời gian trả lời và tổng chi phớ.
- Cỏc thành phần tối ưu của hàm chi phớ, SĐ-1: kớch thước thụng bỏo, AYH: kớch thước thụng bỏo và số thụng bỏo; System R*: kớch thước thụng bỏo, số thụng bỏo và chi phớ I/O và CPU; INGRES phõn tỏn: kớch thước thụng bỏo và chi phớ I/O + CPỤ
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
- Kiểu mạng, SĐ-1 và AHY: mạng diện rộng điểm tới điểm, INGRES phõn tỏn và R*: mạng cục bộ và diện rộng.
- SĐ_1 và AHY sử dụng cỏc phộp nửa kết nối như một kỹ thuật tối ưu hoỏ cõu truy vấn, INGRES phõn tỏn và R* thực hiện kết nối tương tự cỏc giải thuật tối ưu hoỏ cõu truy vấn tập trung INGRES và System R:
- Mỗi thuật toỏn đều cú nhận thụng tin thống kờ về dữ liệu: + INGRES phõn tỏn: lực lượng của quan hệ.
+ R*: lực lượng của quan hệ, số cỏc giỏ trị duy nhất trờn thuộc tớnh SĐ-1: lực lượng của quan hệ, hệ số chọn kết nối, kớch thước của phộp chiếu trờn mỗi thộc tớnh kết nối, kớch thước thuộc tớnh và kớch thước bộ dữ liệụ
+ AHY: lực lượng quan hệ, hệ số chọn kết nối, kớch thước thuộc tớnh và kớch thước bộ dữ liệụ
- INGRES phõn tỏn cú thể sử dụng cỏc đoạn, cũn R*, SĐ-1, AHY khụng sử dụng.
2.8.1. Thuật toỏn INGRES phõn tỏn
Thuật toỏn tối ưu hoỏ cõu truy vấn phõn tỏn của INGRES phõn tỏn bắt nguồn từ thuật toỏn INGRES tập trung. Hàm mục tiờu của thuật toỏn là tối thiểu tổng chi phớ và thời gian trả lời, nhưng hai mục tiờu này đối lập nhau (tăng chi phớ truyền thụng, cú thể giảm bớt thời gian trả lời) nờn hai hàm mục tiờu cú trọng số lớn hơn cho mục tiờu này hay mục tiờu kiạ Thuật toỏn tối ưu hoỏ cõu truy vấn này bỏ qua chi phớ truyền dữ liệu tới trạm kết quả. Thuật toỏn sử dụng cỏc phõn đoạn ngang và xột cả hai kiểu mạng (mạng cục bộ và mạng diện rộng).
Đầu vào của thuật toỏn xử lý cõu truy vấn là một cõu truy vấn viết trong phộp tớnh quan hệ bộ (trong dạng chuẩn hội) và thụng tin lược đồ (kiểu mạng, vị trớ và kớch thước của mỗi đoạn). Thuật toỏn này được thực hiện tại trạm ở đú cõu truy vấn được bắt đầu, gọi là trạm chủ (master site), thuật toỏn cú tờn D- INGRES-QOA[7].
Thuật toỏn: D-INGRES-QOA
Input: MVQ: Truy vấn đa biến với n biế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
BEGIN
For mỗi OVQi cú thể tỏch ra in MVQ do {chạy tất cả cỏc truy vấn một biến}
Run(OVQi); (1) Endfor
MVQ’_listREDUCE(MVQ)
{thay thế MVQ bởi n truy vấn khụng thể rỳt gọn} (2)
While n 0 do {n- số truy vấn khụng thể rỳt gọn} (3) Begin
{Chọn truy vấn khụng thể rỳt gọn liờn quan đến cỏc đoạn nhỏ nhất}
MVQ’ select_query(MVQ’_list); (3.1) {Xỏc định cỏc đoạn để truyền và trạm xử lý MVQ‟}
Fragment-site-list SELECT_STRATEGY(MVQ’); (3.2)
{truyền cỏc đoạn đó chọn tới cỏc trạm đó chọn}
For mỗi cặp (F,S) trong Fragment-site-list do (3.3)
Chuyển đoạn F tới trạm S;
End-for
Run(MVQ’);
n n-1; (3.4)
End-while {đầu ra của thuật toỏn là kết quả của MVQ‟ cuối cựng} End. (D-INGRES-QOA)
Bước 1: Xử lý địa phương tất cả cỏc truy vấn một biến (phộp chọn và phộp chiếu).
Bước 2: Thuật toỏn thu gọn được ỏp dụng cho truy vấn ban đầu, tỏch cỏc truy vấn khụng thể rỳt gọn và cỏc truy vấn một biến rạ Bỏ qua cỏc truy vấn một biến vỡ đó xử lý ở bước 1
Bước 3: Áp dụng cho cỏc truy vấn khụng thể rỳt gọn.
Bước 3.1: Chọn cỏc truy vấn chưa được xử lý và liờn quan đến cỏc đoạn nhỏ hơ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
Bước 3.2: Chọn chiến lược tốt nhất để xử lý truy vấn MVQ‟ (truy vấn khụng thể rỳt gọn và cú ớt nhất hai biến). Chiến lược này được mụ tả bởi một danh sỏch cỏc cặp (F, S), trong đú F là một đoạn để truyền tới trạm xử lý S.
Bước 3.3: Truyền tất cả cỏc đoạn tới trạm xử lý chỳng.
Bước 3.4: Thực hiện MVQ‟. Nếu cú cỏc truy vấn con cũn lại, thuật toỏn quay lại bước 3 và thực hiện bước lặp tiếp theo, ngược lại thuật toỏn kết thỳc.
Đặc điểm của thuật toỏn INGRES phõn tỏn là tỡm kiếm trong khụng gian lời giải cú giới hạn, trong đú một quyết định tối ưu hoỏ được thực hiện ở mỗi bước với kết quả của nú trờn tối ưu hoỏ tổng thể. Tối ưu hoỏ cõu truy vấn động cú lợi vỡ kớch thước chớnh xỏc của kết quả trung gian được biết.
2.8.2 Thuật toỏn R*
Thuật toỏn tối ưu hoỏ cõu truy vấn phõn tỏn của R* là một sự mở rộng của cỏc kỹ thuật đó phỏt triển cho bộ tối ưu System R, vỡ vậy nú sử dụng cỏch tiếp cận biờn dịch trong đú thực hiện việc tỡm kiếm vột cạn tất cả cỏc chiến lược khỏc nhau để chọn một chiến lược với chi phớ ớt nhất. Mặc dự, dự đoỏn và liệt kờ cỏc chiến lược này là đắt, tổng chi phớ của sự tỡm kiếm vột cạn được bự trừ một cỏch nhanh chúng nếu cõu truy vấn được thực hiện thường xuyờn. Thuật toỏn xử lý cõu truy vấn R* chỉ giải quyết cỏc quan hệ như cỏc đơn vị cơ bản. Biờn dịch cõu truy vấn là một nhiệm vụ phõn tỏn trong R*, được phối hợp bởi trạm chủ, tại đú cõu truy vấn được bắt đầụ Bộ tối ưu của trạm chủ thực hiện tất cả cỏc quyết định đối với trạm khỏc, như lựa chọn cỏc trạm thực hiện, cỏc phõn đoạn và phương phỏp truyền dữ liệụ Cỏc trạm vệ tinh là cỏc trạm khỏc cú cỏc quan hệ liờn quan trong cõu truy vấn, thực hiện cỏc quyết định địa phương (như sắp thứ tự cỏc phộp kết nối tại một trạm) và tạo ra cỏc phương ỏn truy nhập địa phương cho cõu truy vấn. Hàm mục tiờu của bộ tối ưu System R* là hàm tổng chi phớ bao gồm cỏc chi phớ xử lý địa phương và truyền thụng.
Đầu vào của thuật toỏn là cõu truy vấn đó được định vị biểu diễn bởi cõy đại số quan hệ, định vị của cỏc quan hệ và những số liệu thống kờ của chỳng. Đầu ra là một chiến lược cú chi phớ cực tiểụ Thuật toỏn được mụ tả bởi thủ tục R*-QOA sau [7]:
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
input: QT: Cõy truy vấn
output: strat: Chiến lược chi phớ tối thiểu BEGIN
For mỗi quan hệ RiQT do 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 thứ tự(Ri1,Ri2,...,Rin) với i=1,..., n! do
begin
Xõy dựng chiến lược (...((best APi1⊲⊳Ri2)⊲⊳Ri3) ⊲⊳...⊲⊳Rin) ; tớnh toỏn chi phớ của chiến lược ;
endfor
strat chiến lược với chi phớ tối thiểu ;
For mỗi trạm k chứa một quan hệ liờn quan trong QT do
Begin
LSk Chiến lược cục bộ (strategy, k);
Send(LSk, site k) {mỗi chiến lược cục bộ được tối ưu hoỏ tại trạm k};
End-for end. {R*-QOA}
Thuật toỏn này được diễn giải như sau: Bộ tối ưu hoỏ phải chọn thứ tự kết nối, đường truy nhập vào mỗi đoạn thẳng (chẳng hạn chỉ mục nhúm, quột tuần tự, …). Cỏc quyết định này dựa trờn cỏc thống kờ và thụng tin đường truy nhập. Hơn nữa, bộ tối ưu phải chọn cỏc trạm chứa cỏc kết quả kết nối và phương thức truyền dữ liệu giữa cỏc trạm chứa quan hệ thứ hai, hoặc trạm thứ ba chứa kết quả kết nốị Trong R*, hai phương phỏp được hỗ trợ cho việc truyền dữ liệu trờn cỏc trạm 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
trong một quan hệ tạm thời trước khi được kết nốị
2. Tỡm về khi cần: Quan hệ ngoài được quột tuần tự, với mỗi bộ giỏ trị kết nối được gửi tới trạm của quan hệ trong, chọn cỏc bộ trong kết nối được với giỏ trị đú và gửi cỏc bộ đó chọn tới trạm của quan hệ ngoàị Phương phỏp này tương đương với phộp nửa kết nối của quan hệ trong với mỗi bộ của quan hệ ngoàị
Lợi ớch của hai phương phỏp này là rừ ràng. Với phương phỏp 1, dữ liệu truyền lớn hơn nhưng ớt thụng bỏo hơn phương phỏp haị Bằng trực giỏc, chuyển toàn bộ cỏc quan hệ là tốt khi chỳng nhỏ. Ngược lại, nếu quan hệ lớn và phộp kết nối cú tớnh chọn lọc tốt (chỉ một số ớt cỏc bộ phự hợp), cỏc bộ thớch hợp nờn được tỡm về khi cần. R* khụng xột tất cả cỏc tổ hợp cú thể của cỏc phương phỏp kết nối với phương phỏp truyền vỡ một số trong chỳng là vụ ớch.
Cho phộp kết nối của một quan hệ ngoài R với quan hệ trong S trờn thuộc tớnh A, cú bốn chiến lược kết nốị Gọi LC là chi phớ xử lý địa phương, CC là chi phớ truyền thụng, s là số trung bỡnh cỏc bộ của S hợp với một bộ của R:
Chiến lược 1: Chuyển quan hệ ngoài tới trạm của quan hệ trong. Trường hợp này cỏc bộ ngoài cú thể được kết nối khi chỳng đến, vỡ vậy ta cú:
Total_cost = LC(gọi card(R) bộ từ R)
+ CC(size(R)) + LC(gọi s bộ từ S)*card(R)
Chiến lược 2: Chuyển quan hệ trong tới trạm của quan hệ ngoàị Trường hợp này, cỏc bộ trong khụng thể kết nối khi chỳng đến, và chỳng cần được lưu trong