Thuật toỏn SĐ 1

Một phần của tài liệu tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Trang 85 - 106)

6. Cỏc kết quả dự kiến

2.8.3. Thuật toỏn SĐ 1

Thuật toỏn tối ưu hoỏ cõu truy vấn SĐ-1 là thuật toỏn trong lớp cỏc thuật toỏn tham lam (greedy algorithms), cụ thể xuất phỏt từ thuật toỏn leo đồi, chọn một giải phỏp cú thể thực thi ban đầu và lặp đi lặp lại để cải tiến nú.

Thuật toỏn sử dụng phộp nửa kết nối, hàm mục tiờu tối thiểu tổng chi phớ truyền thụng (chi phớ địa phương và thời gian trả lời khụng được xột). Thuật toỏn sử dụng cỏc thống kờ cơ sở dữ liệu, một thống kờ gắn với một quan hệ. Thuật toỏn cơ bản là trước tiờn chọn một chiến lược thực hiện mềm dẻo mà được xỏc định một cỏch lặp. Sau đú sử dụng cỏc phộp tối ưu hoỏ sau để cải tiến tổng chi phớ của chiến lược được chọn. Bước chớnh của thuật toỏn bao gồm việc xỏc định và sắp thứ tự cỏc phộp nửa kờt nối cú lợi, tức là cỏc phộp nửa kết nối cú chi phớ nhỏ hơn lợi ớch của nú.

Để chọn ra phộp nửa kết nối hiệu quả, thuật toỏn sử dụng cỏc đỏnh giỏ về chi phớ (cost) và lợi ớch (benefit) được xỏc định như sau:

Chi phớ truyền của phộp nửa kết nối:

Cost(R⋉AS) = CMSG + CTR*size(A(S)) Đỏnh giỏ về lợi ớch:

Benefit(R⋉AS) = (1-SFSJ(S.A))*size(R)*CTR

Thuật toỏn SĐ-1 nhận đầu vào là đồ thị cõu truy vấn với n quan hệ, cỏc thống kờ cơ sở dữ liệu của mỗi quan hệ. Đầu ra của thuật toỏn là một chiến lược tổng thể để thực thi cõu truy vấn. Thuật toỏn tiến hành theo 4 giai đoạn: khởi đầu, chọn cỏc phộp nửa kết nối cú lợi, chọn trạm thực hiện, tối ư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

hoỏ saụ Thuật toỏn được chi tiết bởi thủ tục SĐ-1-QOA sau [7]:

Thuật toỏn SĐ-1-QOA

Input: QG: Đồ thị cõu truy vấn với n quan hệ, cỏc thống kờ của mỗi quan hệ Output: ES: Chiến lược thực hiện

BEGIN

ESlocal- operations(QG);

Sửa đổi cỏc thống kờ để phản ỏnh kết quả của xử lý địa phương; BS{Tập cỏc phộp nửa kết nối cú lợi};

For mỗi phộp nửa kết nối SJ trong QG do

If cost(SJ) < benefit(SJ) then BS BS SJ;

End-if

End-for

While BSdo {Chọn cỏc phộp kết nối cú lợi} Begin

SJ most_benefit(BS); {SJ: semijoin cú benefit_cost lớn nhất} BS BS - SJ; {Loại SJ khỏi BS}

ES ES + SJ;

Sửa đổi cỏc thống kờ để phản ảnh kết quả của SJ thờm vào; BSBS - cỏc phộp nửa kết nối khụng cú lợi ;

BSBSCỏc phộp nửa kết nối cú lợi mới ; End-while

{Chọn trạm thực hiện}

AS(ES) chọn trạm i mà i chứa số lượng dữ liệu lớn nhất sau tất cả cỏc phộp toỏn cục bộ;

ES ESsự truyền của cỏc quan hệ trung gian tới AS(ES); {Tối ưu hoỏ sau}

For mỗi quan hệ Ri tại AS(ES) do

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

If cost(ES) > cost(ES-SJ) then ES ES - SJ;

Endif Endfor Endfor

End. {SĐ-1-QOA}

- Giai đoạn khởi đầu: sinh ra một tập những phộp nửa kết nối cú lợi (BS), vào một chiến lược thực thi (ES) bao gồm cỏc xử lý địa phương.

- Giai đoạn tiếp theo: Lặp lại lựa chọn ra cỏc phộp nửa kết nối cú lợi (SJi) từ BS, sửa đổi cỏc thống kờ cơ sở dữ liệu và BS. Sự sửa đổi ảnh hướng đến cỏc thống kờ của quan hệ R liờn quan trong SJi và ph p nửa kết nối cũn lại trong BS mà sử dụng quan hệ R. Vũng lặp kết thỳc khi tất cả cỏc phộp nửa kết nối trong BS đó được thờm vào chiến lược thực thị Thứ tự mà cỏc phộp nửa kết nối được thờm vào ES sẽ là thứ tự thực thi của chỳng.

- Giai đoạn chọn cỏc trạm thực hiện: Với mỗi trạm đề cử, đỏnh giỏ chi phớ truyền tất cả dữ liệu được yờu cõu tới nú, và chọn trạm cú chi phớ nhỏ nhất.

- Giai đoạn tối ưu hoỏ sau: Loại bỏ những phộp kết nối trong chiến lược thực thi chỉ ảnh hưởng đến quan hệ được lưu trữ tại trạm thực hiện.

Bộ tối ưu hoỏ SĐ-1 dựa trờn thừa nhận cỏc quan hệ cú thể được truyền tới trạm khỏc. Điều này đỳng cho tất cả cỏc quan hệ ngoại trừ những quan hệ thuộc trạm thực hiện, mà chỳng được chọn sau khi cỏc phộp nửa kết nối cú lợi được xem xột. Vỡ vậy, một số phộp nửa kết nối khụng cú lợi được bước tối ưu hoỏ cõu truy vấn sau loại chỳng khỏi chiến lược thực hiện.

Vớ dụ 2.28: Xột cõu truy vấn sau SELECT *

FROM KYSU, HOSODA, DUAN WHERE KYSỤSHKS = HOSODẠSHKS AND HOSODẠSHDA = DUAN.SHDA

Hỡnh 2.23 cho biết đồ thị kết nối của cõu truy vấn và cỏc thống kờ quan hệ. Giả sử CMSG = 0 và CTR = 1.

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 Trạm 1 Trạm 2 Trạm 3 Quan hệ Số Kớch Kớch KYSU 30 50 1500 HOSODA 100 30 3000 DUAN 50 40 2000 Thuộc tớnh SFSJ Kớch KYSỤSHKS 0.3 120 HOSODẠSHKS 0.8 400 HOSODẠSHDA 1 400 DUAN.SHDA 0.4 200 Hỡnh 2.23: Cõu truy vấn vớ dụ và cỏc thống kờ

Cỏc phộp kết nối cú lợi ban đầu như sau

SJ1: HOSODA⋉KYSU, lợi ớch là 2100 = (1- 0.3)*3000 và chi phớ là120 SJ2: HOSODA⋉DUAN, lợi ớch là 1800 = (1- 0.4)*3000 và chi phớ là 200 Hai phộp nửa kết nối khụng cú lợi:

SJ3: KYSU⋉HOSODA, lợi ớch là 300 = (1- 0.8)*1500 và chi phớ là 400 SJ4: DUAN⋉HOSODA, lợi ớch là 0 và chi phớ là 400

Tại bước lặp đầu tiờn, SJ1 được thờm vào chiến lược thực hiện ES. Kớch thước của HOSODA thay đổi thành 900 = 3000*0.3; SFSJ(HOSODẠSHKS) xấp xỉ 0.8*0.3 = 0.24

Tại bước lặp thứ hai, cú hai phộp nửa kết nối cú lợi:

SJ2: HOSODA‟⋉DUAN, lợi ớch là 540 = (1- 0.4)*900 và chi phớ là 200 SJ3: KYSU⋉HOSODA‟, lợi ớch là 1140 = (1- 0.24)*1500 và chi phớ là 400 SJ3 là cú lợi nhất và được thờm vào ES. Kớch thước của KYSU thay đổi thành

360 = (1500*0.24); SFSJ(KYSỤSHKS) thay đổị

KYSU HOSODA DUAN

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

Tại bước lặp thứ ba, phộp nửa kết nối cú lợi cũn lại SJ2 được thờm vào ES. Kớch thước của HOSODA thay đổi thành 360 = 900*0.4;

SFSJ(HOSODẠSHDA) thay đổị

Sau khi rỳt gọn, số lượng dữ liệu lưu tại trạm 1 là 360, trạm 2 là 360, trạm 3 là 2000. Vỡ vậy trạm 3 được chọn là trạm thực hiện. Bước tối ưu hoỏ sau khụng bỏ bất cứ phộp nửa kết nối nào vỡ chỳng đều cú lợị Chiến lược được chọn là gửi (HOSODA ⋉ KYSU) ⋉ DUAN và (KYSU ⋉ HOSODA) tới trạm 3, tại đú kết quả cuối cựng được tớnh toỏn.

2.8.4 Cỏc thuật toỏn AHY (Apers - Hevner - Yao)

Thuật toỏn AHY sử dụng cỏc phộp nửa kết nối để tối thiểu thời gian trả lời hoặc tổng thời gian [7]. Cỏch tiếp cận của phương phỏp này là dựa trờn một tập cỏc thuật toỏn tối ưu chỉ cú thể ỏp dụng cho cỏc cõu truy vấn đơn. Một cõu truy vấn đơn (simple query) là một cõu truy vấn mà sau khi định vị, mỗi quan hệ trong cõu truy vấn chỉ chứa một thuộc tớnh kết nối chung.

Cỏc cõu truy vấn đơn cú thể được giải quyết một cỏch tối ưụ Một cõu truy vấn tổng quỏt chứa thờm nhiều thuộc tớnh kết nối được phõn tỏch thành cỏc cõu truy vấn đơn, để chỳng cú thể được ỏp dụng bởi một trong cỏc thuật toỏn tối ưụ Thuật toỏn tối ưu hoỏ cõu truy vấn tổng quỏt bỏ qua chi phớ xử lý địa phương, tức là hàm mục tiờu tối thiểu chi phớ truyền thụng. Đầu vào thuật toỏn là một đồ thị cõu truy vấn, cỏc thống kờ của cỏc quan hệ.

Thuật toỏn AHY trước tiờn xử lý một cõu truy vấn bằng cỏch ỏp dụng cỏc phộp toỏn địa phương, sau đú phõn tỏch cõu truy vấn thành cỏc cõu truy vấn đơn để ỏp dụng cỏc chiến lược tối ưu sử dụng cỏc phộp nửa kết nối, cuối cựng bằng cỏch tớch hợp cỏc chiến lược riờng lẻ này thành một chiến lược thực thi duy nhất. Vỡ thế, tất cả cỏc quan hệ trước tiờn được thu gọn bởi cỏc phộp nửa kết nối và sau đú gửi tới một trạm kết quả duy nhất, tại đú sẽ tớnh kết quả của cõu truy vấn. Để đơn giản, thuật toỏn giả thiết rằng tất cả cỏc quan hệ của cõu truy vấn được lưu tại cỏc trạm khỏc nhaụ Tuy nhiờn, cú thể mở rộng cho trường hợp nhiều quan hệ trờn một trạm.

Sau đõy sẽ trỡnh bày hai thuật toỏn cho cỏc cõu truy vấn đơn: Nối tiếp (SERIAL) để tối thiểu tổng chi phớ và song song (PARALLEL) để tối thiểu thời gian trả lờị Và một thuật toỏn cho cỏc cõu truy vấn tổng quỏt, trong đú sử dụng

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

SERIAL và PARALLEL. Một chiến lược xử lý cõu truy vấn được minh hoạ bởi cỏc lịch trỡnh (schedules). Một lịch trỡnh là một cõy trong đú dữ liệu truyền được biểu diễn bởi cỏc cạnh cú độ dài tỷ lệ với khối lượng truyền. Mỗi nỳt tương ứng với một phộp nửa kết nối được thực hiện trước phộp truyền tiếp theo

Tối thiểu tổng chi phớ của cỏc cõu truy vấn đơn giản

Tối ưu hoỏ bao gồm việc tối thiểu tổng số dữ liệu truyền. Thuật toỏn cố gắng chuyển cỏc quan hệ nhỏ hơn tới trạm của quan hệ lớn hơn bằng cỏch sắp thứ tự truyền theo kớch thước quan hệ tăng dần. Giả sử Size(R1) Size(R2) … Size(Rn) và Ri được lưu

trữ tại trạm i

Thuật toỏn xem xột hai lịch trỡnh truyền khỏc nhaụ Ký hiệu T là kết quả tạm thời của Ri ⋉ Ri-1. Nếu trạm kết quả chứa Rr

Lịch trỡnh 1: R1 trạm 1 T2 = (R 2 ⋉ R1)trạm 3 ... Tr-1 = (Rr-1 ⋉ Tr-2 )trạm r Tr = (R r ⋉ Tr-1 )trạm r+1 ... (Rn ⊲⊳ T n-1 )trạm r (r là trạm kết quả) Lịch trỡnh 2: R1 trạm 1 T2 = (R2 ⋉ R1)trạm 3 ... Tr-1 = (Rr-1 ⋉ Tr-2) trạm r+1 Tr+1 = (R r+1 ⋉ Tr-1 )trạm r+2 ... Tn = (Rn ⋉ Tn-1 )trạm r (r là trạm kết quả) (Rr ⊲⊳ Tn-1 )trạm r (r là trạm kết quả)

Thuật toỏn SERIAL: ký hiệu Ri đ Rj: truyền Ri tới trạm của Rj sau đú thực hiện Rj ⋉ Ri

Thuật toỏn: SERIAL

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

Output: Lịch trỡnh thực hiện Begin

Thứ tự cỏc quan hệ trong SQG là Size(R1) < Size(R2) < …< Size(Rn) If khụng cú Ri tại trạm kết quả then

ES (R1R2 . Rntrạm kết quả); Else

begin {Chọn chiến lược chi phớ tốt nhất giữa ES1 và ES2} ES1 (R1R2Ri Rn Ri);

ES2 (R1R2Ri-1Ri+1Rn Ri);

If cost(ES1)> cost(ES2) then ES ES2 ; Else ES ES1; Endif Endif End. {SERIAL}

Vớ dụ 2.29: Áp dụng thuật toỏn SERIAL cho cõu truy vấn hỡnh 2.24:

Hỡnh 2.24: Vớ dụ một cõu truy vấn đơn và cỏc thống kờ

Giả sử CMSG = 0, CTR =1, trạm kết quả là trạm của một số quan hệ khụng liờn quan trong cõu truy vấn. Đối với cỏc cõu truy vấn đơn, hệ số chọn luụn luụn tỷ lệ với kớch thước quan hệ. Quan hệ nhỏ nhất R1 được chọn trước tiờn; kớch

Attribute SFSJ Size(PATTR)

R1.A 0.3 100

R2.A 1 400

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

thước của R2 ⋉ R1 là 400*0.3 = 120; kớch thước của R3 ⋉ R1 là 200*0.3 = 60. Vỡ vậy R3 được chọn tiếp theo trong Schedule, và R1 được chuyển đến trạm của R3. Kết quả của R3 ⋉ R1 được truyền tới trạm của R2; kớch thước của R2 ⋉ R3 ⋉ R1 là 400*0.7*0.3 = 84. Lịch trỡnh tối ưu như hỡnh 2.25

Hỡnh 2.25: Schedule tối ưu

Tối thiểu thời gian trả lời của cỏc cõu truy vấn đơn giản: Tối ưu hoỏ bao gồm việc cực tiểu hoỏ số lượng dữ liệu truyền tuần tự, bởi cỏch truyền song song. Giả sử cỏc toỏn hạng quan hệ được sắp thứ tự theo kớch thước tăng. Một giải phỏp mềm dẻo ban đầu được chọn, trong đú tất cả cỏc quan hệ được truyền song song đến trạm kết quả duy nhất. Sau đú bộ tối ưu cố gắng cải tiến giải phỏp bằng cỏch xột cỏc lịch trỡnh khỏc nhau trong đú một số quan hệ được gửi tới một trạm trung gian. Bộ tối ưu khụng cần xột tất cả cỏc lịch trỡnh cú thể được sinh ra đối với một quan hệ Ri đó chọ ở đõy, cỏc quan hệ lớn hơn R1 khụng thể cải tiến lịch trỡnh ban đầu của Ri và vỡ vậy nú được loại bỏ ngay sau khi cỏc quan hệ được sắp theo thứ tự tăng sau đú chiếu trờn cỏc thuộc tớnh kết nốị Thuật toỏn PARALLEL được trỡnh bày như sau:

Thuật toỏn: PARALLEL

Input: SQG: đồ thị cõu truy vấn đơn với n quan hệ Output: Lịch trỡnh thực hiện

Begin

Thứ tự cỏc ph p toỏn là Size(R1) < Size(R2) < … < Size(Rn);

ESi (Ritrạm kết quả,Ri ) {giải phỏp ban đầu cho mỗi quan hệ} ES0 ES1 ES2ESn ; {giải phỏp mềm dẻo ban đầu}

For mỗi quan hệ Ri bắt đầu với i=1 do

Begin {Tỡm một chiến lược thay đổi cho mỗi quan hệ}

For Rj (j<i) do ESij (Rj Ri and RkRi,k<j)

Endfor

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

If cost(ESi’ cost(ESi)) then

Begin

{thay thế chiến lược với Ri trong ES0 bởi chiến lược mới} ES0 ES0 - ESi ;

ES0 ES0 ESi’ ; Endif

Endfor

Loại bỏ cỏc chiến lược dư thừa

End {PARALLEL}.

Thuật toỏn tổng quỏt: Thuật toỏn đưa ra với mỗi quan hệ Ri trong cõu truy vấn một chiến lược tớch hợp rỳt gọn Ri bởi cỏc phộp nửa kết nối một cỏch tối ưu, sau đú truyền Ri tới trạm kết quả để hoàn thành việc xử lý cõu truy vấn.

Thuật toỏn: GENERAL

Input: SQG: đồ thị cõu truy vấn đơn với n quan hệ Output: ES-set: tập cỏc chiến lược đối với mỗi quan hệ Begin

Thực hiện cỏc phộp toỏn cục bộ

CS ; {Cỏc chiến lược đề cử với cỏc cõu truy vấn đơn giản}

For mỗi thuộc tớnh kết nối Ai mụ tả một cõu truy vấn đơn giản SQGj do

Begin

If mục tiờu là thời gian trả lời then

ESjPARALLEL(SQG);

Else {mục tiờu là tổng chi phớ}

ESj SERIAL(SQG);

Endif

CSCS ESj ; {lưu ESj như một chiến lược đề cử} endfor

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

for i1 to n do begin

CSCS(Ritrạm kết quả);

Thứ tự cỏc chiến lược đối với Ri trờn Aij là tăng theo thời gian trả lời

For mỗi chiến lược ESij trong CS theo thứ tự tăng dần do Tớch hợp ESij vào chiến lược ISi ;

Endfor

ES-set ES-set ISi với thời gian trả lời tối thiểu ;

Endfor

Else {mục tiờu là tổng chi phớ} For i 1 to n do

Begin

CSCS (Ritrạm kết quả) ;

Thứ tự cỏc chiến lược đối với Ri trờn Aij là tăng theo tổng thời gian;

For mỗi chiến lược ESij trong CS theo thứ tự tăng dần do Tớch hợp ESij vào chiến lược ISi ;

Endfor

ES-set ES-set ISivới tổng thời gian tối thiểu ;

Endfor Endif

For i 1 to n do {loại bỏ cỏc chiến lược dư thừa} If ESi đó được chứa trong ESj(ji) then

ES-set ES-set - ESi ;

Endif Endfor End. {GENERAL}

Thuật toỏn tiến hành như sau: Định vị ban đầu được thực hiện tại mỗi trạm. Với mỗi thuộc tớnh kết nối của cõu truy vấn, cõu truy vấn đơn giản được tỏch ra tuỳ và hàm mục tiờu của nú sẽ được ỏp dụng bởi thuật toỏn PARALLEL

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

hay SERRIAL, nú sinh ra một tập hợp cỏc chiến lược đề cử (một chiến lược cho một cõu truy vấn đơn giản). Cỏc chiến lược cho cỏc cõu truy vấn đơn giản được tớch hợp lại thành một chiến lược tổng thể trong đú mỗi quan hệ Ri được thu gọn. Sự tớch hợp này được thực hiện khỏc nhau tuỳ theo hàm mục tiờu là thời gian trả lời hay thời gian tổng.

2.9. Kết luận

Trong chương này đó giới thiệu 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 đỏnh giỏ cỏc cõu truy vấn trong một cơ sở dữ liệu phõn tỏn là chức năng biến đổi một cõu truy vấn về một phương ỏn thực hiện phõn tỏn. Phương ỏn thực hiện phõn tỏn cung cấp mọi thụng tin cần thiết cho thực hiện cỏc xử lý

Một phần của tài liệu tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Trang 85 - 106)

Tải bản đầy đủ (PDF)

(106 trang)