- 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 ← (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ụ 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 ← (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
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}
ES0 ← ES0 - ESi ES0 ← ES0 ∪ ESi’
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
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
If mục tiêu là thời gian trả lời then 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 Endif
ES-set ← ES-set ∪ ISi 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-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 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.
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.