Các thuật toán AHY (Apers – Hevner – Yao)

Một phần của tài liệu Tìm hiểu về tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Trang 62)

- Dạng chuẩn tuyển là tuyển (∨) của những phép hội (∧):

3.2.2.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.

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ời. Và một thuật toán cho các câu truy vấn tổng quát, trong đó sử dụng 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 nhau. 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 = (R2 ⋉ R1) → trạm 3 … Tr-1 = (Rr-1 ⋉ Tr-2) → trạm r Tr = (Rr ⋉ Tr-1) → trạm r+1 … (Rn  Tn-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 = (Rr+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

Input: SQG: đồ thị câu truy vấn đơn với n quan hệ

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(R1R2Rntrạm kết quả)

Else

Begin {Chọn chiến lược chi phí tốt nhất giữa ES1 và ES2}

ES1(R1R2Ri Rn Ri) ES2(R1R2Ri-1Ri+1…Rn Ri)

If cost(ES1) > cost(ES2) then

ESES2 Else ESES1 Endif Endif End. {SERIAL}

Ví dụ 3.9: Áp dụng thuật toán SERIAL cho câu truy vấn hình 3.6:

Attribute SFSJ Size(PATTR)

R1.A 0.3 100

R2.A 1 400

R3.A 0.7 200

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 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 3.7.

Hình 3.7: 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 đã cho. ở đâ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ối. 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

ESi(Ritrạm kết quả,Ri ) {giải pháp ban đầu cho mỗi quan hệ}

ES0ES1ES2…ESn {giải pháp mềm dẻo ban đầu} (adsbygoogle = window.adsbygoogle || []).push({});

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(RjRi and RkRi,k<j)

Endfor

ESi’cost(ESij) tối thiểu

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}

ES0ES0 - ESi ES0ES0ESi’

Endfor

Endif

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ộ

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

ESjPARALLEL(SQG)

Else {mục tiêu là tổng chi phí}

ESjSERIAL(SQG)

Endif

CSCSESj {lưu ESj như một chiến lược đề cử}

Endfor

If mục tiêu là thời gian trả lời then For i ←1 to n do

Begin

CSCS(Ritrạm kết quả) (adsbygoogle = window.adsbygoogle || []).push({});

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-setES-setISi 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

CSCS(Ritrạ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 Endif

ES-setES-setISi với tổng thời gian tối thiểu

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-setES-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 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.

3.3. Kết luận

Việc đánh giá các câu truy vấn trong một CSDL 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ý cục bộ và cho sự đồng bộ hóa tổng thể (các thao tác truyền dữ liệu trung gian). Việc đánh giá câu truy vấn thường được chia thành các giai đoạn liên tiếp sau:

- Sự phân rã: Dịch một câu truy vấn được diễn đạt trong một ngôn ngữ bậc cao, kiểu SQL thành một câu truy vấn được diễn đạt trong một biến thái của đại số quan hệ.

- Sự định vị: Là phép biến đổi theo lược đồ sắp đ t một câu truy vấn phân tán thành một câu truy vấn phân tán tương đương được diễn đạt trên các đoạn.

- Sự tối ưu hoá xác định trình tự “tối ưu” các phép toán quan hệ, cũng như các giải thuật truy nhập dữ liệu.

- Việc thực hiện các thao tác (phép toán) của câu truy vấn đã được tối ưu hoá để thu được kết quả.

Các giai đoạn phân rã và thực hiện có thể được xử lý theo cách như trong hệ tập trung, còn trong hệ phân tán các vấn đề cần phải quan tâm là hai giai đoạn định vị và tối ưu hoá các câu truy vấn phân tán.

Các giai đoạn của việc đánh giá một câu truy vấn phân tán

Vai trò của tối ưu hoá là xác định một chiến lược thực hiện câu truy vấn làm cực tiểu một hàm chi phí. Bài toán chọn lựa chiến lược tối ưu cho một câu truy vấn là NP đầy đủ. Để tránh một chi phí tối ưu quá lớn, mục tiêu của tối ưu hoá đ ng hơn là chọn một chiến lược gắn với tối ưu hoá và nếu có thể tránh các chiến lược thực thi tồi.

Nói chung, hàm chi phí phải cực tiểu là tổng thời gian của việc thực hiện câu truy vấn, là tổng tất cả các thời gian thực hiện được giành cho các trạm khác nhau tham gia vào câu truy vấn. Một hàm chi phí thường được dùng là thời gian trả lời của câu truy vấn, có tính tới những xử lý được tiến hành song song.

Trong một CSDL phân tán, hàm chi phí có xét tới một thành phần bổ sung: thời gian truyền thông cần thiết cho việc trao đổi dữ liệu giữa các trạm tham gia câu truy vấn. Thời gian đó tốn vào việc khởi đầu và thu nhận thông báo và việc truyền thông báo trên mạng truyền thông. (adsbygoogle = window.adsbygoogle || []).push({});

Các quyết định tối ưu hoá làm cực tiểu hàm chi phí có thể nhiều. Những quyết định quan trọng nhất là trình tự thực hiện tối ưu các phép kết nối, việc chọn các bản sao, các đoạn phải truy nhập, việc chọn các trạm thực hiện và việc chọn các thuật toán thực hiện phân tán. Một sự tối ưu hoá tinh vi cũng có thể chọn các lối truyền dữ liệu giữa các trạm (chẳng hạn từng bộ ho c từng tập), và các giải thuật truy nhập cục bộ. Những quyết định đó được đưa vào phương án thực hiện phân tán câu truy vấn.

Để lấy các quyết định đó, tối ưu hoá phải xét nhiều chiến lược thực hiện và dự báo chi phí thực hiện. Một nhân tố quan trong ảnh hưởng đến chi phí của một chiến lược là kích thước của các kết quả trung gian cần phải truyền từ trạm này sang trạm khác.

Có nhiều thuật toán tối ưu hoá câu truy vấn được đề xuất cho các CSDL phân tán, chẳng hạn INGRESS phân tán, System R*, SDD-1, AHY. Phương pháp tổng quát là sự vét cạn không gian các chiến lược có thể từ đó có nhiều biến thể.

Một khía cạnh khác của một giải thuật tối ưu hoá là cách tiếp cận được dùng để thực hiện phép kết nối các quan hệ được lưu trữ ở các trạm khác nhau. Một phép kết nối có thể được thực hiện bởi một tổ hợp các nửa kết nối và được kết thúc bằng một phép kết nối. Khi thời gian truyền thông là nhân tố chi phối của chi phí, phép nửa kết nối cho phép cải tiến đáng kể hoạt năng của các phép kết nối bằng cách thu nhỏ kích thước của các quan hệ trung gian được trao đổi giữa các trạm. Việc dùng các nửa kết nối thường dẫn tới một số phép toán nhiều hơn nhưng trên các toán hạng nhỏ hơn.

Một phần của tài liệu Tìm hiểu về tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Trang 62)