3. Tối ưu hóa các truy vấn phân tán
4.3 Thuật toán INGRES phân tán
Thuật toán INGRES là thuật toán phổ biến nhất trong các thuật toán tối ưu hóa truy vấn trong CSDLPT sử dụng hướng tiếp cận động (dynamic approach), thuật toán này là sự mở rộng của thuật toán INGRES dành cho CSDLTT. Mục tiêu của thuật toán INGRES là tối ưu hóa cả thời gian truyền thông và thời gian đáp ứng của một câu truy vấn.Trong trường hợp có sự mâu thuẫn khi tối ưu cả hai tiêu chí, thuật toán có thể đặt trọng số vào hai tiêu chí này, và người phát triển có thể gán trọng số lớn hơn vào tiêu chí được ưu tiên.
Giải thuật INGRES được trình bày dưới dạng giả ngôn ngữ như sau: Thuật toán: D- INGRES – QOA
Input: MVQ: Truy vấn đa biến với n biến
Output: Kết quả của truy vấn đa biến cuối cùng BEGIN
For mỗi OVQicó 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’_list REDUCE(MVQ)
{thay thế MVQ bởi n truy vấn không thể rút gọn} (2) While n0 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 mảnh nhỏ nhất} MVQ’select _ query(MVQ’_list); (3.1)
53
{Xác định các đoạn để truyền và trạm xử lý MVQ’} Fragmen- site- list SELECT_RATEGY(MVQ’); (3.2) {truyền các mảnh đã chọn tới các trạm đã chọn} For mỗi cặp (F,S) trong Fragnemt – site – list do (3.3) Chuyển đoạn F tới trạm S;
Endfor
Run(MVQ’); nn-1; (3.4)
Endwhile {đầu ra của thuật toán là kết quả của MVQ’ cuối cùng}
END. (D- INGRES - QOA)
Diễn giải thuât toán như sau:
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 ra. 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 câu 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 mảnh nhỏ hơn.
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 mảnh để truyền tới trạm xử lý S.
Bước 3.3: Truyền tất cả các mảnh 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ựchiện bước lặp tiếp theo, ngược lại thuật toán kết thúc.
Ví dụ: Giả sử các quan hệ EMP, ASG và PROJ được lưu trữ trên các trạm khác nhau, trong đó quan hệ EMP bị phân mảnh và lưu trữ trên hai trạm 1 và 2, quan hệ ASG và PROJ không bị phân mảnhnhưng được lưu trữ ở các trạm khác nhau, cấu trúc lưu trữ được thể hiện như sau.
Khi thực hiện phép kết nối 3 quan hệ này, có nhiều chiến lược thực hiện như sau: - Thực hiện câu truy vấn đầy đủ trên phép kết nối 3 quan hệ trên
(EMP ⊳⊲ ASG ⊳⊲ PROJ)bằng cáchgửi toàn bộ dữ liệu EMP1 và ASG sang trạm 2.
54
- Thực hiện (EMP ⊳⊲ ASG) ⊳⊲ PROJ bằng cách gửi (EMP1 ⊳⊲ ASG) và ASG sang trạm 2 và tiếp tục thực hiện kết nối (EMP2 ⊳⊲ ASG), sau đó ghep hai kết quả kết nối trên để thực hiện kết nối với PROJ.
Việc lựa chọn chiến lược tối ưu giữa các chiến lược khả thi đòi hỏi việc ước lượng được kích thước của các kết quả trung gian. Ví dụ, trong trường hợp trên, nếu kích thước size(EMP1 ⊳⊲ ASG) > size(EMP1), chiến lược đầu tiên sẽ tốt hơn chiến lược thứ 2. Vậy việc ước lượng các kết quả trung gian là bắt buộc trong thuật toán INGRES. Quá trình thực hiện ước lượng và lựa chọn tối ưu được thực hiện trong bước 3.1 và 3.2 của thuật toán INGRES.