0
Tải bản đầy đủ (.doc) (42 trang)

Thuật toán của System R*

Một phần của tài liệu CƠ SỞ DỮ LIỆU PHÂN TÁN VÀ MỘT SỐ NGUYÊN LÝ CHUNG CỦA TỐI ƯU HOÁ TRUY VẤN (Trang 36 -36 )

4. Một số nguyên lý chung của tối ưu hóa truy vấn

2.2.1.2. Thuật toán của System R*

Thuật toán tối ưu phân tán của System R* là một mở rộng về chất của các kỹ thuật đã được phát triển cho bộ tối ưu hóa trong môi trường tập trung của System R. Nó sử dụng cách tiếp cận biên dịch, trong đó thực hiện việc tìm kiếm vét cạn tất cả các chiến lược khác nhau để chọn ra được một chiến lược với chi phí thấp nhất. Mặc dù chi phí cho các dự đoán và liệt kê chiến lược này là khá đắt, nhưng tổng chi phí của sự tìm kiếm vét cạn được đền bù lại khá nhanh nếu câu truy vấn được sử dụng thường xuyên. Thuật toán được mô tả trong [Selinger and Adiba, 1980] có hỗ trợ phân mảnh, nhưng phiên bản được

cài đặt trong R* lại không hỗ trợ phân mảnh lẫn nhân bản. Thuật toán xử lý truy vấn R* chỉ dùng các quan hệ làm đơn vị cơ bản. Nhiệm vụ biên dịch được trạm chủ (master site) điều phối, tại đó câu truy vấn được bắt đầu. Bộ tối ưu hóa của trạm chủ chịu trách nhiệm đưa ra các quyết định đối với các trạm khác (trạm vệ tinh –

apprentice site), như lựa chọn các trạm thực hiện, các mảnh và

phương pháp truyền dữ liệu. Trạm vệ tinh là những trạm có chứa các quan hệ cần cho câu truy vấn, nó chịu trách nhiệm về các quyết định cục bộ như sắp thứ tự các nối tại trạm, tạo ra các phương pháp truy nhập cục bộ cho câu truy vấn. Hàm mục tiêu của tối ưu System R* là hàm tổng chi phí bao gồm các chi phí xử lý cục bộ và các chi phí truyền.

Thuật toán tối ưu hóa phân tán của System R* (R*-QOA)

INPUT: QT cây truy vấn

OUTPUT: strat chiến lược có chi phí nhỏ nhất

Begin

for mỗi quan hệ Ri ∈ QT do begin

for mỗi đường truy cập APij tới Ri do

xác định cost (APij)

end-for

best _ APi ← APij với chi phí nhỏ nhất

end-for

for mỗi thứ tự Ri1, Ri2,…, Rin với i =1,...,n! do

xây dựng chiến lược (...((best_APijRi2)Ri3)...Rin) tính chi phí của chiến lược

end-for

for mỗi trạm k có chứa quan hệ có mặt 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 hóa tại trạm k}

end-for End.

Thuật toán này được diễn giải như sau: bộ tối ưu hóa phải chọn thuật toán nối (vòng lặp lồng, hay nối trộn) thứ tự kết nối, đường truy nhập vào mỗi mảnh (chăng hạn chỉ mục, quét tuần tự…). Các quyết định này dựa trên số liệu thống kê, các công thức dùng để đánh giá kích thước quan hệ trung gian và thông tin về đường truy nhập. Hơn nữa, bộ tối ưu còn phải chọn các trạm chứa các kết quả nối và phương thức truyền dữ liệu giữa các trạm. Để kết nối hai quan hệ có thể có 3 trạm có thể được chọn: trạm chứa quan hệ thứ nhất, trạm chứa quan hệ thứ hai, hoặc một trạm thứ 3 (chứa kết quả nối để thực hiện phép toán tiếp theo). R* hỗ trợ hai phương pháp truyền dữ liệu giữa các trạm là:

1. Chuyển toàn bộ (ship-whole). Quan hệ được chuyển đến trạm kết nối và được lưu trong một quan hệ tạm thời trước khi được kết nối

2. Tìm về khi cần (fetch-as-needed). Quan hệ ngoài được quét tuần tự, với mỗi bộ, giá trị kết nối được gửi tới trạm của quan hệ trong, ở đó nó chọn các bộ có giá trị khớp với nó và chuyển đến trạm của quan hê ngoài. Phương pháp này tương đương với phép kết nối nửa của quan hệ trong với mỗi bộ của quan hệ ngoài.

Phương pháp 1, dữ liệu truyền lớn, nhưng ít thông báo hơn phương pháp 2. Dựa trên quan sát trực quan ta thấy, khi quan hệ nhỏ thì phương pháp 1 sẽ tốt hơn. Ngược lại, nếu quan hệ lớn và phép kết nối có tính chọn lọc tốt (chỉ chọn đựoc một số ít bộ phù hợp) thì phương án 2 tốt hơn. R* không xét tất cả các tổ hợp có thể của các phương pháp kết nối với các phương án truyền vì một số trong chúng là vô ích.

Các chiến lược sẽ được mô tả chi tiết với các công thức chi phí đơn giản hóa.

Cho phép kết nối của một quan hệ ngoài R với quan hệ trong S trên thuộc tính A, chúng ta có bốn chiến lược nối. Gọi:

 LC là chi phí xử lý cục bộ  CC là chi phí truyền

 Ký hiệu s là số lượng trung bình của các bộ của S khớp với một bộ của

R. Ta có s= cardcard(S(R<)A R)

Ta có các chiến lược nối như sau:

Chiến lược 1

Truy xuất bộ của quan hệ ngoài Truyền đền trạm chứa quan hệ trong Nối với S khi chúng đến đó

Tổng chi phí = LC(truy xuất card(R) bộ của R)

+ CC(size(R))

+ LC(truy xuất s bộ của S)*card (R)

Chiến lược 2

Chuyển quan hệ trong tới trạm chứa quan hệ ngoài

Chúng phải được ghi vào quan hệ tạm thời T mà không kết nối ngay khi đến.

Tổng chi phí = LC(truy xuất card(S) bộ của S)

+ CC(size(S))

+ LC(lưu card(S) bộ trong T) + LC(truy xuất card(R) bộ của R) + LC(truy xuất s bộ của T)*card (R)

Chiến lược 3

Chuyển cả hai quan hệ trong và ngoài tới trạm thứ 3 và tính toán kết nối ở đó

Tổng chi phí = LC(truy xuất card(S) bộ của S)

+ CC(size(S))

+ LC(lưu card(S) bộ trong T) + LC(truy xuất card(R) bộ của R) + CC(size(R))

+ LC(truy xuất s bộ của T)*card (R)

Chiến lược 4

Tìm về các bộ của quan hệ trong khi cần cho mỗi bộ của quan hệ ngoài Với mỗi bộ thuộc R, giá trị thuộc tính kết nối được gửi tới trạm chứa S Sau đó s bộ phù hợp với giá trị đó được truy xuất và gửi tới trạm của R để được kết nối khi chúng đến

Tổng chi phí = LC(truy xuất card(R) bộ từ R)

+ CC(length(A))* card (R)

+ LC(truy xuất s bộ từ S)*card (R) + CC(length(S))* card (R)

Thí dụ 2.20:

Chúng ta hãy xét câu truy vấn chứa nối trên thuộc tính MSDA của quan hệ DUAN (quan hệ ngoài) với DUAN (quan hệ trong).

Với giả thiết rằng DUAN và PHANCONG được lưu tại hai trạm khác nhau và trong quan hệ PHANCONG có một chỉ mục trên MSDA. Các chiến lược khả thi cho truy vấn này là:

1. Chuyển toàn bộ DUAN đến trạm của PHANCONG. 2. Chuyển PHANCONG đến trạm của DUAN.

3. Tìm về các bộ PHANCONG khi cần cho mỗi bộ của DUAN. 4. Di chuyển PHANCONG và DUAN đến trạm thứ 3.

Nhận xét:

 Nếu không có phép toán nào cần thực hiện sau nối thì với

DUAN  PHANCONG chiến lược 4 có chi phí cao nhất.  Nếu size(DUAN) lớn hơn nhiều so với size(PHANCONG) thì

chiến lược

2 dường như là tốt nhất nếu chi phí xử lý cục bộ không quá cao so với

chiến lược 1 và 3. Lưu ý rằng ở chiến lược 1 và 3 thì chi phí xử lý cục

bộ có thể tốt do có thể tận dụng được chỉ mục trên thuộc tính nối.

 � Bằng không thì chúng ta sẽ phải lựa chọn chiến lược 1 hoặc 3 tùy theo

kích thước của các quan hệ DUAN và PHANCONG.

Về khái niệm thuật toán trên có thể coi như một tìm kiếm vét cạn trong tất cả n! các khả năng hoán vị các thứ tự kết nối, phương pháp nối… có thể, và vì thế độ phức tạp sẽ là tổ hợp theo số quan hệ liên quan. Khi số quan hệ tham gia là lớn thì chi phí cho tối ưu hóa cũng lớn.

Tuy nhiên bằng cách sử dụng các kỹ thuật quy hoạch động, heuristics thực sự thuật toán System R* làm giảm bớt được các lựa chọn chiến lược không hiệu quả.

Một phần của tài liệu CƠ SỞ DỮ LIỆU PHÂN TÁN VÀ MỘT SỐ NGUYÊN LÝ CHUNG CỦA TỐI ƯU HOÁ TRUY VẤN (Trang 36 -36 )

×