.22 Đồ thị nối của cõy truy vấn phõn tỏn

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu một số khía cạnh lý thuyết trong mô hình CSDL quan hệ Luận văn ThS. Công nghệ thông tin 1 01 10 (Trang 93 - 106)

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 theo cỏc cỏch khỏc nhau:

1: NHACC  trạm 2. Tại 2 tớnh NHACC’ = NHACC CUNGCAP Truyền NHACC’  trạm 3. Tại trạm 3 tớnh NHACC’ THIETBI 2: CUNGCAP  trạm 1. Tại trạm 1 tớnh

NHACC’ = NHACC CUNGCAP

Truyền NHACC’  trạm 3. Tại trạm 3 tớnh NHACC’ THIETBI 3: CUNGCAP  trạm 3. Tại trạm 3 tớnh

CUNGCAP’ = CUNGCAP THIETBI Truyền CUNGCAP’  trạm 1.

Tại trạm 1 tớnh CUNGCAP’ NHACC 4: THIETBI  trạm 2. Tại trạm 2 tớnh THIETBI’ = THIETBI CUNGCAP

Truyền THIETBI’  trạm 1. Tại trạm 1 tớnh THIETBI’ NHACC 5: NHACC  trạm 2, THIETBI  trạm 2. Tại trạm 2 tớnh

THIETBI CUNGCAP NHACC

Để cú thể chọn được phương ỏn tốt thỡ ta cần phải đỏnh giỏ được: size(CUNGCAP), size(THIETBI), size(NHACC),

size(THIETBI CUNGCAP), size(NHACC CUNGCAP).

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 heuristic, 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. Chẳng hạn, nếu thứ tự quan hệ là (NHACC, CUNGCAP, THIETBI) thỡ ta chọn phương ỏn 1, nếu thứ tự quan hệ là (THIETBI, CUNGCAP, NHACC) ta cú thể chọn phương ỏn 4.

Sau đõ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 để minh hoạ kỹ thuật này:

Thuật toỏn INGRES phõn tỏn

INGRES sử dụng thời điểm tối ưu hoỏ độ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 hoỏ 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 đoạn 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 đoạn. 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 hoỏ 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ạytất cả cỏc truy vấn1quanhệ}

run(ORQi); (1)

End-for

MRQ’_list  REDUCE(MRQ) {thay thế MRQ bằng n cõu truy vấn 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 đoạn nhỏ nhất} MRQ’  SELECT_QUERY(MRQ’_list)

(3.1)

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

Fragment-site-list  SELECT_STRATEGY(MRQ’) (3.2) {truyền cỏc đoạn đó 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 đoạn F đến trạm S

End-for

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 đoạn 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à đoạn 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 hoỏ đượ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 hoỏ toàn cục. Tuy nhiờn tối ưu hoỏ truy vấn động cú ớch cho việc xỏc định được chớnh xỏc kớch thước thực sự của cỏc quan hệ trung gian.

Lưu ý rằng tại bước 3.2 việc tối ưu hoỏ 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 đoạn sẽ được di chuyể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 đoạn từ n-1 quan hệ phải được truyền tới trạm của cỏc đoạn 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 đoạn bằng nhau để tăng độ song hành. Phương phỏp này được gọi là phõn đoạn - và - nhõn bản, và thực hiện phộp thế cỏc đoạn 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 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 hoỏ 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 đoạn, nhưng phiờn bản được cài đặt trong R* lại khụng hỗ trợ phõn đoạn lẫn nhõn bản. Thuật toỏn xử lý truy vấn R* chỉ dựng 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 hoỏ 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 đoạn 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 hoỏ 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

End-for

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

xõy dựng chiến lược (...((best_APi1 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

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.

Thuật toỏn này được diễn giải như sau: bộ tối ưu hoỏ 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 đoạn (chẳng hạn truy nhập theo chỉ mục, truy nhập 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 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). Trong 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 nửa kết nối 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 hơn và phộp kết nối cú tớnh chọn lọc tốt (chỉ chọn được

một số ớt 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ố 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 hoỏ. 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 = ) ( ) ( R card R S card 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 được chuyển đế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 ở trạm thứ 3.

+ 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ộ của R) + CC(length(A))*card(R)

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

Vớ dụ: Xột cõu truy vấn chứa nối theo thuộc tớnh MANCC của hai quan hệ NHACC (quan hệ ngoài) và CUNGCAP (quan hệ trong). Giả sử rằng quan hệ NHACC và quan hệ CUNGCAP được lưu tại hai trạm khỏc nhau và trong quan hệ CUNGCAP cú một chỉ mục theo MANCC. Khi đú ta cú cỏc chiến lược khả thi cho cõu truy vấn này là:

1. Chuyển toàn bộ quan hệ NHACC đến trạm của quan hệ CUNGCAP. 2. Chuyển toàn bộ quan hệ CUNGCAP đến trạm của quan hệ NHACC. 3. Chuyển cả hai quan hệ NHACC và CUNGCAP đến trạm thứ 3. 4. Tỡm cỏc bộ của CUNGCAP khi cần cho mỗi bộ của NHACC.

Nhận xột:

- Nếu khụng cú phộp toỏn nào cần thực hiện tiếp sau nối thỡ chiến lược 3 cú chi phớ lớn nhất.

- Nếu size(NHACC) lớn hơn nhiều so với size(CUNGCAP) thỡ chiến lược 2 là tốt nhất, khi chi phớ xử lý cục bộ khụng quỏ cao so với cỏc chiến lược 1 và 4. Cần lưu ý ở chiến lược 1 và 4 thỡ chi phớ xử lý cục bộ cú thể rất thấp do cú khả năng tận dụng được chỉ mục theo thuộc tớnh nối.

- Cỏc trường hợp cũn lại ta cú thể lựa chọn chiến lược 1 hoặc 4 tuỳ theo kớch thước của cỏc quan hệ NHACC và CUNGCAP.

Như vậy thuật toỏn trờn cú thể coi như một thuật toỏn tỡm kiếm vột cạn trong số 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ớn thỡ chi phớ cho tối ưu hoỏ 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 việc lựa chọn cỏc chiến lược khụng hiệu quả.

2.5.3.2 Cỏc thuật toỏn dựa trờn nửa kết nối (semijoins) [13]

Trong phần này sẽ trỡnh bày phương ỏn sử dụng nửa kết nối để 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 nửa kết nối làm việc như một tỏc nhõn rỳt gọn kớch thước của cỏc quan hệ trước khi truyền đến cỏc trạm giống như phộp chọn.

Chẳng hạ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ửa kết nối với quan hệ kia nhờ quy tắc sau:

r As  (rAs)As

 rA(sAr)

 (rAs)A(sAr)

Việc chọn lựa một trong 3 chiến lược nửa kết nối 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ửa kết nối sẽ cú ớch nếu chi phớ tạo và gửi nú đến trạm kia nhỏ hơn chi phớ gửi toàn bộ quan hệ – toỏn hạng và thực hiện nối thực sự. Để thấy được lợi ớch của nửa kết nối, chỳng ta hóy so sỏnh chi phớ của hai chọn lựa: rAs với (rAs)As, với giả thiết rằng size(r) < size(s).

Chiến lược sử dụng nửa kết nối được trỡnh bày như sau: 1. A(s) trạm 1

3. r’  trạm 2

4. Trạm 2 tớnh toỏn r’As

Cỏch tiếp cận nửa kết nối là tốt nếu: size(A(s))+size(rAs)<size(r)

Phương phỏp nửa kết nối là tốt hơn nếu nửa kết nối 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ửa kết nối đũ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ửa kết nối 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 hoỏ cõu truy vấn cũng trở nờn phức tạp hơn.

Vớ dụ: Xột lại đồ thị nối hỡnh 2.22 của cỏc quan hệ NHACC, THIET BI CUNGCAP, ta thấy cú thể ỏp dụng thuật toỏn nối trước đõy bằng cỏch dựng cỏc nửa kết nối cho từng kết nối. Chẳng hạn, một chiến lược kết nối trước đõy là:

THIETBI CUNGCAP NHACC ta cú thể thay bằng chiến lược: THIETBI’ CUNGCAP’ NHACC

Trong đú:

THIETBI’ = THIETBI CUNGCAP CUNGCAP’ = CUNGCAP NHACC

Ta cũn 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 cỏch dựng nhiều nửa kết nối. Cụ thể quan hệ trung gian THIETBI’ cú thể được thay thế bằng THIETBI’’ = THIETBI (CUNGCAP NHACC) bởi vỡ nếu size(CUNGCAP NHACC)  size(CUNGCAP), khi đú chỳng ta sẽ cú size(THIETBI’’)  size(THIETBI’). Với một dóy nửa kết nối như vậy được gọi là chương trỡnh nửa kết nối. Tuy nhiờn khụng phải tất cả cỏc quan hệ tham gia cõu truy vấn đều cần rỳt gọn, ta 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 ta cú thể xõy dựng nhiều chương trỡnh nửa kết nối khỏc nhau, trong cỏc chương trỡnh đú sẽ cú một chương trỡnh nửa kết nối tối ưu, chương trỡnh đú được gọi là chương trỡnh thu gọn hoàn toàn [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ủa tất cả cỏc chương trỡnh nửa kết nối cú thể và chọn ra chương trỡnh tốt nhất. Bài toỏn vột cạn đú gặp phải cỏc vấn đề như

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu một số khía cạnh lý thuyết trong mô hình CSDL quan hệ Luận văn ThS. Công nghệ thông tin 1 01 10 (Trang 93 - 106)

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

(131 trang)