Thuật toán System R*

Một phần của tài liệu Đề tài nghiên cứu một số vấn đề về truy vấn và tối ưu hóa truy vấn cơ sở dữ liệu phân tán trong hệ thống thông tin (Trang 50 - 52)

3. Tối ưu hóa các truy vấn phân tán

4.2Thuật toán System R*

Thuật toán System R* dành cho CSDLPT là đại diện cho các thuật toán sử dụng hướng tiếp cận tĩnh (static approach), trong CSDLPT thuật toán này còn có tên gọi khác là R*-QOA. Thuật toán này sử dụng cách tìm kiếm toàn bộ (exhautive search) trên tất cả các chiến lược thực thi của một câu truy vấn ở mức cao để tìm ra các chiến lược thực thi có chi phí tốt nhất. Chiến lược tìm kiếm toàn bộ có chi phí thời gian rất lớn, tuy nhiên chi phí này có thể được dàn đều nếu một câu truy vấn được lặp lại với tần suất đủ lớn. Trong trường hợp này, một chiến lược tối ưu sau khi được xác định sẽ

51

được lưu trữ và với nhưng lần truy vấn tương tự tiếp theo chiến lược tối ưu sẽ được thực hiện mà không cần tìm kiếm lại.

Thuật toán R*-QOA được đặc tả bằng giả ngôn ngữ như sau. Thuật toán: R* - QOA

Input: QT: Câu truy vấn

Output: strat: Chiến lược chi phí tối thiểu

BEGIN

For mỗi quan hệ Ri QT do

Begin

For mỗi đường truy nhập APij to Ri do

Xác đinh cost(APij)

Endfor

Best_APi APijvới chi phí tối thiểu; Endfor

For mỗi thứ tự (Ri1,Ri2,...,Rin) với i = 1,2,...,n! do

Begin

Xây dựng chiến lược (...(best APi1Ri2)Ri3) ... Rin); Tính toán chi phí 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} Endfor

END. {R* - QOA}

Trong thuật toán này, bộ tối ưu hoá phải chọn thứ tự kết nối, đường truy cập vào mỗi mảnh 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ề CSDL trên các máy trạm và thông tin đường truyền truy nhập. Thêm vào đó, bộ tối ưu cũng phải lựa chọn các trạm để thực hiện phép toán kết nối và phương thức truyền dữ liệu giữa các trạm với nhau. Ví dụ, để kết nối hai quan hệ trên hai trạm, có 3 trạm ứng cử viên: trạm chứa quan hệ thứ nhất, trạm chứa quan hệ thứ 2 hoặc một trạm độc lập khác (hoặc trạm thứ 3 chưa một quan hệ có thể kết nối tiếp vào

52

hai quan hệ kể trên). Có hai phương pháp hỗ trợ truyền thông giữa các trạm trong mạng:

1) Ship-Whole: trong phương pháp này, toàn bộ dữ liệu của một quan hệ được dịch chuyển đến trạm sẽ thực hiện phép kết nối, và được lưu trữ tạm thời trước quá trình kết nối. Nếu phép kết nối chỉ là phép trộn đơn thuần (merge join), trạm thực hiện kết nối có thể không cần lưu dữ liệu tạm mà thực hiện kết nối ngay khi nhận được dữ liệu.

2) Fetch-as-need: trong phương pháp này, một quan hệ được lưu trữ tại một trạm bên ngoài sẽ được quét một cách thường xuyên, với mỗi bản ghi cần thực hiện kết nối giá trị bản ghi sẽ được gửi vào một trạm nội bộ tương ứng, trạm này thực hiện việc tìm kiếm giá trị khớp với giá trị yêu cầu của phép kết nối và gửi lại kết quả này đến trạm bên ngoài. Cách thực thi của phương pháp này tương đối giống với cách thực thi của phép bán kết nối.

Một phần của tài liệu Đề tài nghiên cứu một số vấn đề về truy vấn và tối ưu hóa truy vấn cơ sở dữ liệu phân tán trong hệ thống thông tin (Trang 50 - 52)