Thuật toỏn R*

Một phần của tài liệu tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Trang 81 - 85)

6. Cỏc kết quả dự kiến

2.8.2. Thuật toỏn R*

Thuật toỏn tối ưu hoỏ cõu truy vấn phõn tỏn của R* là một sự mở rộng của cỏc kỹ thuật đó phỏt triển cho bộ tối ưu System R, vỡ vậy 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 một chiến lược với chi phớ ớt nhất. Mặc dự, dự đoỏn và liệt kờ cỏc chiến lược này là đắt, tổng chi phớ của sự tỡm kiếm vột cạn được bự trừ một cỏch nhanh chúng nếu cõu truy vấn được thực hiện thường xuyờn. Thuật toỏn xử lý cõu truy vấn R* chỉ giải quyết cỏc quan hệ như cỏc đơn vị cơ bản. Biờn dịch cõu truy vấn là một nhiệm vụ phõn tỏn trong R*, được phối hợp bởi trạm chủ, tại đú cõu truy vấn được bắt đầụ Bộ tối ưu của trạm chủ thực hiện tất cả cỏc quyết định đối với trạm khỏc, như lựa chọn cỏc trạm thực hiện, cỏc phõn đoạn và phương phỏp truyền dữ liệụ Cỏc trạm vệ tinh là cỏc trạm khỏc cú cỏc quan hệ liờn quan trong cõu truy vấn, thực hiện cỏc quyết định địa phương (như sắp thứ tự cỏc phộp kết nối tại một trạm) và tạo ra cỏc phương ỏn truy nhập địa phương cho cõu truy vấn. Hàm mục tiờu của bộ tối ưu System R* là hàm tổng chi phớ bao gồm cỏc chi phớ xử lý địa phương và truyền thụng.

Đầu vào của thuật toỏn là cõu truy vấn đó được định vị biểu diễn bởi cõy đại số quan hệ, định vị của cỏc quan hệ và những số liệu thống kờ của chỳng. Đầu ra là một chiến lược cú chi phớ cực tiểụ Thuật toỏn được mụ tả bởi thủ tục R*-QOA sau [7]:

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

input: QT: Cõy 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 định cost(APij);

endfor

best_APi APij với chi phớ tối thiểu ; endfor

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

begin

Xõy dựng chiến lược (...((best APi1⊲⊳Ri2)⊲⊳Ri3) ⊲⊳...⊲⊳Rin) ; tớnh toỏn chi phớ của 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};

End-for end. {R*-QOA}

Thuật toỏn này được diễn giải như sau: Bộ tối ưu hoỏ phải chọn thứ tự kết nối, đường truy nhập vào mỗi đoạn 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à thụng tin đường truy nhập. Hơn nữa, bộ tối ưu phải chọn cỏc trạm chứa cỏc kết quả kết nối và phương thức truyền dữ liệu giữa cỏc trạm chứa quan hệ thứ hai, hoặc trạm thứ ba chứa kết quả kết nốị Trong R*, hai phương phỏp được hỗ trợ cho việc truyền dữ liệu trờn cỏc trạm là:

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

trong một quan hệ tạm thời trước khi được kết nốị

2. Tỡm về khi cần: 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, chọn cỏc bộ trong kết nối được với giỏ trị đú và gửi cỏc bộ đó chọn tới trạm của quan hệ ngoàị Phương phỏp này tương đương với phộp nửa kết nối của quan hệ trong với mỗi bộ của quan hệ ngoàị

Lợi ớch của hai phương phỏp này là rừ ràng. Với phương phỏp 1, dữ liệu truyền lớn hơn nhưng ớt thụng bỏo hơn phương phỏp haị Bằng trực giỏc, chuyển toàn bộ cỏc quan hệ là tốt khi chỳng nhỏ. 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ỉ một số ớt cỏc bộ phự hợp), cỏc bộ thớch hợp nờn được tỡm về khi cầ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 phương phỏp truyền vỡ một số trong chỳng là vụ ớch.

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, cú bốn chiến lược kết nốị Gọi LC là chi phớ xử lý địa phương, CC là chi phớ truyền thụng, s là số trung bỡnh cỏc bộ của S hợp với một bộ của R:

Chiến lược 1: Chuyển quan hệ ngoài tới trạm của quan hệ trong. Trường hợp này cỏc bộ ngoài cú thể được kết nối khi chỳng đến, vỡ vậy ta cú:

Total_cost = LC(gọi card(R) bộ từ R)

+ CC(size(R)) + LC(gọi s bộ từ S)*card(R)

Chiến lược 2: Chuyển quan hệ trong tới trạm của quan hệ ngoàị Trường hợp này, cỏc bộ trong khụng thể kết nối khi chỳng đến, và chỳng cần được lưu trong một quan hệ T tạm thờị Vỡ vậy ta cú:

Total_cost = LC(gọi card(S) bộ từ S) + CC(size(S))

+ LC(lưu card(S bộ trong T) + LC(gọi card(R) bộ từ R) + LC(gọi s bộ từ T)*card(R)

Chiến lược 3: Tỡm cỏc bộ của quan hệ trong khi cần đối với mỗi bộ của quan hệ ngoàị Trường hợp này, với mỗi bộ trong R, giỏ trị thuộc tớnh kết nối được gửi tới trạm của S. Sau đú bộ từ S phự hợp với giỏ trị đú được gọi ra và gửi tới trạm

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

của R để được kết nối khi chỳng đến. Vỡ vậy ta cú: Total_cost = LC(gọi card(R) bộ từ R)

+ CC(length(A))*card(R) + LC(gọi s bộ từ S)*card(R) + CC(s*length(S))*card(R)

Chiến lược 4: Chuyển cả hai quan hệ tới trạm thứ ba và tớnh toỏn kết nối ở đú. Trường hợp này quan hệ trong trước tiờn được chuyển tới trạm thứ 3 và được lưu trong một quan hệ tạm thời T. Sau đú quan hệ ngoài được chuyển đến trạm thứ 3 và cỏc bộ của nú được kết nối với T khi chỳng đến. Vỡ vậy ta cú:

Total_cost = LC(gọi card(S) bộ từ S) + CC(size(S))

+ LC(gọi card(S) bộ từ T) + LC(gọi card(R) bộ từ R) + CC(size(R))

+ LC(gọi s bộ từ T)*card(R)

Vớ dụ 2.27: Xột một cõu truy vấn, kết nối của quan hệ ngoài DUAN, quan hệ trong HOSODA trờn thuộc tớnh SHDẠ Giả sử DUAN và HOSODA được lưu tại hai trạm khỏc nhau và HOSODA cú chỉ dẫn trờn thuộc tớnh SHDẠ Cỏc chiến lược cú thể đối với cõu truy vấn này là:

1. Chuyển toàn bộ DUAN tới trạm của HOSODA 2. Chuyển toàn bộ HOSODA tới trạm của DUAN

3. Tỡm cỏc bộ của HOSODA khi cần cho mỗi bộ của DUAN 4. Chuyển HOSODA và DUAN tới một trạm thứ 3

Thuật toỏn R* dự đoỏn tổng chi phớ của mỗi chiến lược và chọn chiến lược rẻ nhất. Chiến lược 4 hiển nhiờn cú chi phớ cao hơn vỡ phải truyền cả hai quan hệ. Nếu kớch thước của quan hệ DUAN lớn hơn nhiều kớch thước của quan hệ HOSODA, chiến lược 2 cú chi phớ truyền thụng tối thiểu và sẽ tốt nhất nếu chi phớ xử lý địa phương khụng quỏ lớn so với chiến lược 1 và 3. Tuy nhiờn, chi phớ xử lý địa phương của chiến lược 1 và 3 cú thể tốt hơn chiến lược 2 vỡ cú chỉ dẫn trờn thuộc tớnh kết nốị Nếu chiến lược 2 khụng tốt, chọn chiến lược 1 hoặc 3. Chi phớ xử lý địa phương trong cả hai trường hợp này là như nhaụ Nếu DUAN lớn và chỉ

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

một số ớt bộ của HOSODA kết nối được, chiến lược 3 chắc chắn cú chi phớ truyền thụng ớt nhất và là chiến lược tốt nhất. Ngược lại, nếu DUAN nhỏ và cú nhiều bộ của HOSODA hợp, chiến lược 1 sẽ là tốt nhất.

Thuật toỏn R* giảm đỏng kể số cỏc lựa chọn bằng sử dụng quy hoạch động và thực nghiệm. Với quy hoạch động, cõy của cỏc lựa chọn được cấu trỳc động và được lược bớt bằng cỏch loại cỏc lựa chọn khụng cú hiệu quả.

Độ phức tạp của thuật toỏn: Thuật toỏn này tỡm kiếm toàn bộ lấy từ hệ R*. Về mặt thiết kế cú thể xem là sự liờn hệ n! hoỏn vị thứ tự cỏc kết nối để từ đú chọn ra hoỏn vị với chi phớ cực tiểụ Độ phức tạp của thuật toỏn này là tỷ lệ với n! và khiến chi phớ cho việc tối ưu hoỏ lớn khi n lớn.

Một phần của tài liệu tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Trang 81 - 85)

Tải bản đầy đủ (PDF)

(106 trang)