Thuật toán SDD-

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 60)

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

3.2.2.3.Thuật toán SDD-

Thuật toán tối ưu hoá câu truy vấn SDD-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ê CSDL, 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 SDD-1 nhận đầu vào là đồ thị câu truy vấn với n quan hệ, các thống kê CSDL 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 hoá sau. Thuật toán được chi tiết bởi thủ tục SDD-1-QOA sau [7]:

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

ESlocal- 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

BSBSSJ

End-if End-for

While BS ≠ φ do {Chọn các phép kết nối có lợi}

Begin

SJmost_benefit(BS) {SJ: semijoin có benefit_cost lớn nhất}

BSBS - SJ {Loại SJ khỏi BS}

ESES + SJ

Sửa đổi các thống kê để phản ảnh kết quả của SJ thêm vào BSBS - các phép nửa kết nối không có lợi

BSBSCá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 phép nửa kết nối SJ của Ri với Rj do If cost(ES) > cost(ES-SJ) then

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 60)