.23 Đồ thị nốic ủa câu truy vấn phân tán

Một phần của tài liệu (LUẬN văn THẠC sĩ) cơ sở dữ liệu phân tán và tối ưu hoá vấn tin luận văn ths công nghệ thông tin 1 01 10 (Trang 65 - 75)

Với giả thiết vị trí của ba quan hệ như trên, ta có thể thực hiện câu truy vấn này bằng năm cách khác nhau: 1. NHANVIEN →trạm 2. Tại 2 tính toán PHANCONG NHANVIEN NHANVIEN' = >< . Truyền ' → NHANVIEN trạm 3.

Tại trạm 3 tính toán NHANVIEN ' ><DUAN

2. PHANCONG →trạm 1.

Tại trạm 1 tính toán NHANVIEN' =NHANVIEN ><PHANCONG . Truyền →

'

NHANVIEN trạm 3. Tại trạm 3 tính toán NHANVIEN '><DUAN

3. PHANCONG →trạm 3.

Tại 3 tính toán PHANCONG' =PHANCONG ><DUAN . Truyền '→

PHANCONG trạm 1.

5. NHANVIEN →trạm 2. DUAN →trạm 2.

Tại 2 tính NHANVIEN ><DUAN ><PHANCONG.

Để có thể chọn được phương án tốt thì ta cần phải đánh giá được:

) (NHANVIEN

size , size(PHANCONG), size(DUAN),

)

(NHANVIEN PHANCONG

size >< , size(PHANCONG><DUAN). Nếu ta quan tâm đến thời gian đáp ứng thì nên xét phương án 5, do khả năng truyền song song.

Nếu sử dụng heurisctic, với giả thiết lực lượng của các nối được tạo ra là tích của các lực lượng, trong trường hợp này các quan hệ được sắp xếp thứ tự theo kích thước và thứ tự thực hiện sẽ được cho bởi cách xếp thứ tự và đồ thị nối. Thí dụ, nếu với thứ tự quan hệ (NHANVIEN,PHANCONG,DUAN) thì ta chọn phương án 1, còn nếu với thứ tự (DUAN,PHANCONG,NHANVIEN) có thể dùng chiến lược 4.

Phần này sẽ trình bày một số thuật toán dựa trên cơ sở sắp xếp thứ tự nối (Ordering Joins) để minh họa kỹ thuật đã được trình bày.

¾ Thuật toán INGRES phân tán

INGRES sử dụng thời điểm tối ưu hóa động, mục tiêu của thuật toán là làm giảm thiểu chi phí tổ hợp của thời gian truyền tin và thời gian đáp ứng. Chú ý rằng thuật toán tối ưu hóa truy vấn bỏ qua chi phí truyền dữ liệu đến trạm nhận kết quả và đểđơn giản thuật toán chỉ xét kiểu phân mảnh ngang.

Đầu vào là câu truy vấn được diễn tả bằng phép tính quan hệ bộ (trong dạng chuẩn hội) và thông tin lược đồ gồm: kiểu mạng, trạm và kích thước của mỗi mảnh. Thuật toán được thực hiện tại trạm xuất phát của câu truy vấn, được gọi là trạm chủ (master site).

Thuật toán tối ưu hóa INGRES phân tán (D-INGRES-QOA): INPUT: MRQ câu truy vấn đa quan hệ

OUTPUT: kết quả của truy vấn đa quan hệ cuối cùng

Begin

for mỗi ORQ, có thể tách ra in MRQ do {chạy tất cả các truy vấn 1quan hệ} );

(ORQi

không thể rút gọn} (2)

while n≠0 do {n là số câu truy vấn không thể rút gọn} (3)

begin

{chọn câu truy vấn không thể rút gọn chứa các mảnh nhỏ nhất} )

_ (

_ '

' SELECT QUERY MQR list

MRQ ← (3.1)

{xác định các mảnh cần truyền và trạm xử lý cho MRQ’}

Fragment-site-list←SELECT_STRATEGY(MRQ') (3.2) {truyền các mảnh đã chọn tới trạm được chọn}

for mỗi cặp (F,S) trong Fragment-site-list do (3.3) chuyển mảnh F đến trạm S end-for ) (MRQ' run (3.4) 1 − ←n n end-while End.

Bước 1: tất cả các truy vấn một quan hệ (chọn, chiếu) có thể tách được sẽđược xử lý cục bộ.

Bước 2: Thuật toán rút gọn [Wong and Youssefi, 1976] được áp dụng cho câu truy vấn ban đầu, để tách tất cả các truy vấn con không thể rút gọn và các truy vấn một quan hệ bằng phép tách như trong phần xử lý tập trung. Bỏ qua các câu truy vấn một quan hệ vì đã được 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ý, chứa các mảnh nhỏ hơn.

Bước 3.2: chọn chiến lược tốt nhất để xử lý câu truy vấn MRQ’ (câu truy vấn không thể rút gọn và có chứa ít nhất hai quan hệ). Chiến lược này được mô tả bằng một danh sách các cặp (F,S) trong đó F là mảnh cần truyến đến trạm S.

Bước 3.3: truyền tất cả tới trạm xử lý chúng.

Bước 3.4: Thực hiện truy vấn MRQ’. Nếu còn các câu truy vấn con thì thuật toán quay lại bước (3) và thực hiện bước lặp tiếp theo, nếu ngược lại thì thuật toán kết thúc.

Đặc điểm của thuật toán này là tìm kiếm trong không gian lời giải có giới hạn, trong đó quyết định tối ưu hóa được đưa ra cho mỗi bước mà không xem xét đến ảnh hưởng của nó lên tối ưu hóa toàn cục. Tuy nhiên tối ưu hóa truy vấn

hệ trung gian.

Lưu ý rằng tại bước 3.2 việc tối ưu hóa chính là xác định xem làm thế nào để thực thi câu truy vấn bằng cách chọn các mảnh sẽ được di chuyển (truyền) và các trạm chịu trách nhiệm xử lý. Với một câu truy vấn con n-quan hệ, các mảnh từ n-1 quan hệ phải được truyền tới trạm của các mảnh của quan hệ còn lại, chẳng hạn là Rp, rồi được nhân bản tại đó. Cũng thế, quan hệ còn lại có thể được phân hoạch tiếp thành k mảnh bằng nhau để tăng độ song hành. Phương pháp này được gọi là phân mảnh – và – nhân bản, và thực hiện phép thế các mảnh chứ không phải là thế bộ như trong INGRES tập trung. Nhờ việc này một số trạm đã giảm được thời gian đáp ứng truy vấn (nhờ việc xử lý song song), nhưng lại tăng tổng chi phí đặc biệt là chi phí truyền.

¾ 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

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ệ RiQT do

begin

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

xác định cost(APij) end-for ij i AP AP best_ ← 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

strat←chiến lược với chi phí nhỏ nhất

for mỗi trạm k có chứa quan hệ có mặt trong QT do begin

k

LS chiến lược cục bộ (strategy,k)

site LS

send( k, 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 .

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ó ) ( ) ( R card R S card s= ><A

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(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.

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

PHANCONG

DUAN >< 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ả.

2.5.3.2 Các thuật toán dựa trên nối nửa (semijoins)

Phần này sẽ trình bày phương án sử dụng nối nửa để hạ thấp tổng chi phí của các câu truy vấn nối. Trở ngại lớn nhất của phương pháp nối được mô tảở phần trên là toàn bộ quan hệ -toán hạng phải được truyền giữa các trạm. Phép kết nối nửa làm việc như một tác nhân rút gọn kích thước giống như phép chọn.

Kết nối của hai quan hệ R và S trên thuộc tính A, lưu tại trạm 1 và 2 tương ứng, có thể được tính bằng cách thay một hoặc cả hai toán hạng bằng một nối nửa với quan hệ kia nhờ quy tắc sau đây:

S

R><A ⇔ (R><A S)><A S

R><A (S><A R)

⇔ (R><A S)><A (S><A R)

Việc chọn lựa một trong 3 chiến lược nối nửa trên đòi hỏi phải ước lượng các chi phí tương ứng của chúng. Sử dụng nối nửa sẽ có ích nếu chi phí tạo và gửi

hai chọn lựa: R><A S với (R><A S)><A S, với giả thiết rằng ) ( ) (R size S size < .

Chương trình sử dụng nối nửa được trình bày như sau: 1. ∏A(S)→ trạm 1

2. Trạm 1 tính toán R'=R><A S

3. R'→ trạm 2

4. Trạm 2 tính toán R'><A S

Cách tiếp cận nửa kết nối là tốt nếu: size(∏A(S))+size(R><A S)<size(R)

Phương pháp nối nửa là tốt hơn nếu nối nửa hoạt động như một tác nhân rút gọn đầy đủ, tức là nếu một số ít các bộ của R tham gia vào nối, ngược lại phương pháp nối là tốt hơn nếu như hầu hết các bộ của R tham gia vào nối, bởi vì phương pháp nối nửa đòi hỏi thêm một lần truyền kết quả chiếu nữa.

Điều quan trọng cần chú ý rằng không có cách tiếp cận nào là tốt nhất, và chúng cần được xem như là những phương án bổ trợ cho nhau.

Nhận xét tổng quát, nối nửa có thể làm giảm đi kích thước của các quan hệ - toán hạng có trong các câu truy vấn đa nối. Tuy nhiên trong trường hợp này việc tối ưu hóa câu truy vấn cũng trở nên phức tạp hơn.

Thí dụ 2.21:

Xét lại đồ thị nối của các quan hệ NHANVIEN, PHANCONG, và DUAN đã nêu ở thí dụ 2.19 và hình 2.23, ta thấy có có thể áp dụng thuật toán nối trước đây bằng các dùng các nối nửa cho từng nối. Thí dụ về một chương trình tính toán NHANVIEN><PHANCONG><DUAN là:

DUAN PHANCONG

NHANVIEN '>< ' ><

với NHANVIEN ' = NHANVIEN ><PHANCONG

PHANCONG' =PHANCONG ><DUAN .

Ta có thể rút gọn thêm nữa kích thước của một quan hệ - toán hạng bằng dùng nhiều nối nửa. Thí dụ NHANVIEN’ có thể được thay thế bằng

) (

" NHANVIEN PHANCONG DUAN

chương trình nối nửa (semijoin program). Tuy nhiên không phải tất cả các quan hệđều cần rút gọn, có thể bỏ qua các quan hệ không liên quan đến các nối cuối cùng.

Đối với một quan hệđã cho sẽ có nhiều chương trình nối nửa khác nhau, trong đó có một chương trình nối nửa tối ưu , được gọi là chương trình thu gọn hoàn toàn (full reducer), mà với mỗi quan hệ R nó rút gọn R nhiều hơn các chương trình khác [Chiu and Ho, 1980]. Vấn đề là phải tìm ra chương trình này. Một phương pháp đơn giản được áp dụng là ước lượng kết quả rút gọn kích thước cả tất cả mọi chương trình nối nửa có thể và chọn ra chương trình tốt nhất. Các bài toán liệt kê gặp phải hai vấn đề như sau:

™ Tồn tại lớp các câu truy vấn chu trình (cyclic queries), và lớp truy vấn này không có chương trình rút gọn hoàn toàn.

™ Một loại truy vấn khác, đựoc gọi câu truy vấn cây (tree queries), thì có trình rút gọn hoàn toàn, nhưng số chương trình nối nửa có thể là hàm mũ theo số lượng quan hệ, khiến cho bài toán liệt kê trở thành NP-Hard.

Một phần của tài liệu (LUẬN văn THẠC sĩ) cơ sở dữ liệu phân tán và tối ưu hoá vấn tin luận văn ths công nghệ thông tin 1 01 10 (Trang 65 - 75)

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

(127 trang)