.19 Cỏc cõy nối tương đương

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 79 - 90)

Chớnh vỡ vậy bộ tối ưu hoỏ thường tỡm cỏch hạn chế khụng gian tỡm kiếm bằng cỏch sử dụng cỏc heuristic hay cỏc hạn chế về cõy nối. Một số heuristic hay sử dụng là: thực hiện phộp chọn, chiếu khi truy xuất đến quan hệ cơ sở, hay việc trỏnh lấy tớch Descartes khụng được chớnh cõu truy vấn yờu cầu. Trong vớ dụ trờn thỡ cõy nối cuối cựng (3) khụng được sử dụng trong khụng gian tỡm kiếm của bộ tối ưu hoỏ. Cỏc cõy nối quan trọng thường được sử dụng là cõy tuyến tớnh, và cõy xum xuờ. Cõy tuyến tớnh là cõy với mỗi nỳt toỏn tử cú ớt nhất một toỏn hạng là một quan hệ cơ sở. Cõy xum xuờ thỡ tổng quỏt hơn, và cú thể cú cỏc toỏn tử khụng cú quan hệ cơ sở làm toỏn hạng (nghĩa là cả hai toỏn hạng đều là cỏc quan hệ trung gian). Trong cõy nối tuyến tớnh, kớch thước của khụng gian tỡm kiếm được rỳt gọn lại thành O(2N).

Chiến lược tỡm kiếm

Chiến lược tỡm kiếm hay được sử dụng là quy hoạch động (dynamic programming), với tớnh chất đơn định (deterministic). Cỏc chiến lược này xõy dựng

CUNGCAP.MATB = THIETBI.MATB NHACC.MANCC = CUNGCAP.MANCC THIETBI NHACC CUNGCAP CUNGCAP.MATB = THIETBI.MATB THIETBI NHACC CUNGCAP NHACC.MANCC = CUNGCAP.MANCC CUNGCAP.MATB = THIETBI.MATB CUNGCAP.MANCC = NHACC.MANCC THIETBI NHACC CUNGCAP X

phương ỏn thực thi bắt đầu từ cỏc quan hệ cơ sở, nối thờm nhiều quan hệ tại mỗi bước cho đến khi thu được cỏc phương ỏn khả thi. Chiến lược quy hoạch động xõy dựng phương ỏn khả thi theo chiều rộng (breadth first). Cũn chiến lược tham lam thỡ lại xõy dựng cõy theo chiều sõu (depth first). Cỏc chiến lược vột cạn này đảm bảo tỡm ra được cỏc phương ỏn khả thi với một chi phớ chấp nhận được khi số quan hệ trong cõu truy vấn khụng lớn.

Tuy nhiờn cỏch tiếp cận này cú chi phớ quỏ cao khi số quan hệ trong cõu truy vấn lớn hơn 5 hoặc 6. Do vậy cỏc nghiờn cứu gần đõy đang tập trung vào cỏc chiến lược ngẫu nhiờn hoỏ (randomized strategy), cỏc heuristic để làm giảm độ phức tạp của tối ưu hoỏ với mục tiờu tỡm ra phương ỏn khả thi “tốt”.

Trong [Lanzelotte et al., 1993] đó chứng tỏ bằng thực nghiệm rằng cỏc chiến lược ngẫu nhiờn hoỏ cú hiệu năng tốt hơn cỏc chiến lược đơn định khi truy vấn cú chứa khỏ nhiều quan hệ. Khụng giống như cỏc chiến lược đơn định, cỏc chiến lược ngẫu nhiờn hoỏ cho phộp bộ tối ưu hoỏ đỏnh đổi thời gian tối ưu hoỏ với thời gian thực thi. Chẳng hạn chiến lược ngẫu nhiờn hoỏ, như trong Iterative Improvement [Swami, 1989] và Simulated Annealing [Ioannidis and Wong, 1987], tập trung vào việc tỡm kiếm lời giải tối ưu xung quanh một số điểm đặc biệt nào đú. Chỳng khụng đảm bảo rằng sẽ tỡm ra được một lời giải tốt nhất nhưng lại trỏnh được chi phớ quỏ cao của tối ưu hoỏ (dựa trờn việc tiờu dựng bộ nhớ và thời gian). Trước tiờn một hoặc nhiều phương ỏn khởi đầu được xõy dựng bởi một chiến lược thiển cận. Sau đú thuật toỏn tỡm cỏch cải thiện cỏc phương ỏn này bằng cỏch thăm cỏc lõn cận (neighbor) của nú. Một lõn cận thu được bằng việc biến đổi ngẫu nhiờn một phương ỏn.

Mụ hỡnh chi phớ

Mụ hỡnh chi phớ của bộ tối ưu hoỏ gồm cú cỏc hàm chi phớ để dự đoỏn chi phớ của cỏc toỏn tử, số liệu thụng kờ, dữ liệu cơ sở và cỏc cụng thức để ước lượng tớnh toỏn cỏc kớch thước kết quả trung gian.

Chi phớ xuất nhập=chi phớ của một thao tỏc xuất nhập đĩa * số lần xuất nhập Chi phớ CPU = chi phớ một lệnh CPU * số lệnh CPU

Chi phớ truyền = chi phớ khởi tạo một thụng bỏo * số thụng bỏo + chi phớ truyền một đơn vị dữ liệu * số bytes

Theo những nghiờn cứu ban đầu trong mạng WAN ta thấy: - Chi phớ xử lý cho việc truyền là cao

- Chi phớ cho xử lý cục bộ là thấp - Tỷ số giữa hai tỏc nhõn là 20:1 Trong mạng Lan:

- Chi phớ cho xử lý truyền và xử lý cục bộ là gần như nhau. - Tỷ số giữa hai tỏc nhõn là 1:1,6

Khi thời gian đỏp ứng truy vấn là hàm mục tiờu của bộ tối ưu hoỏ, ta cần phải để ý đến vấn đề xử lý cục bộ song song và truyền song song. Cụng thức tổng quỏt của thời gian đỏp ứng là:

Thời gian đỏp ứng = thời gian xử lý của CPU + thời gian xuất nhập + thời gian truyền.

Thời gian xử lý của CPU = thời gian xử lý một lệnh của CPU * seq_#lệnh Thời gian xuất nhập = thời gian cho một xuất nhập + seq_#xuất nhập

Thời gian truyền = thời gian khởi tạo một thụng bỏo * seq_#thụng bỏo + thời gian truyền một đơn vị dữ liệu * seq_#bytes

Với seq_#x (x cú thể là cỏc lệnh, cỏc xuất nhập, cỏc thụng bỏo hay cỏc bytes) là số lớn nhất của x phải được thực hiện một cỏch tuần tự khi thực hiện truy vấn.

Số liệu thống kờ cho việc tối ƣu:

Một tỏc nhõn ảnh hưởng tới hiệu quả hoạt động của chiến lược thực thi là kớch thước của cỏc quan hệ trung gian. Chỳng ta cần phải ước lượng kớch thước của quan hệ trung gian nhằm làm giảm lượng dữ liệu phải truyền từ trạm này qua trạm khỏc trong quỏ trỡnh thực hiện truy vấn. Việc ước lượng này được thực hiện dựa trờn cỏc thống kờ về quan hệ cơ sở và cỏc cụng thức dự đoỏn lực lượng của cỏc kết quả.

Tuy nhiờn độ chớnh xỏc của cỏc số liệu thống kờ càng cao thỡ chi phớ dành cho việc duy trỡ quản lý chỳng càng cao. Với mỗi quan hệ R[A1, A2,...An] được phõn đoạn là R1, R2,...Rr ta cú:

- Độ dài (số byte) của mỗi thuộc tớnh là : length(Ai)

- Số lượng cỏc giỏ trị phõn biệt (distinct value) của mỗi thuộc tớnh trong từng đoạn được ký hiệu: card(Ai(Rj))

- Ứng với miền của mỗi thuộc tớnh cú cỏc giỏ trị lớn nhất và nhỏ nhất: max(Ai) và min (Ai)

- Với miền của mỗi thuộc tớnh ta cú lực lượng của miền: card(dom[Ai]) - Số lượng của cỏc bộ trong mỗi đoạn: card(Rj)

Hệ số chọn nối (join selectivity factor) là tỷ lệ cỏc bộ tham gia vào nối, là cú giỏ trị nằm trong khoảng [0...1]:

SFj = ) ( * ) ( ) ( S card R card S R card 

Hệ số này càng nhỏ thỡ độ chọn càng tốt (good selectivity). Và ta cũng cú kớch thước của một quan hệ R như sau:

size(R) = card(R) * length(R)

Lực lƣợng của kết quả trung gian:

Phần này sẽ trỡnh bày cụng thức ước lượng lực lượng cỏc kết quả của cỏc phộp toỏn đại số quan hệ như chọn, chiếu, nối, tớch Descartes,...

- Phộp chọn: lực lượng của phộp chọn là card(F(R)) = SFs(F) * card(R) Trong đú: SFS (A = value) = )) ( ( 1 R cardA SFS (A > value) = ) min( ) max( ) max( A A value A   SFS (A < value) = ) min( ) max( ) min( A A A value  

SFS(Ai {value}) = SFS(A = value) * card ({value}) Với cỏc p(Ai) biểu thị cỏc vị từ trờn cỏc thuộc tớnh Ai

- Phộp chiếu: Ở đõy ta xem như phộp chiếu cú kốm việc loại bỏ cỏc bộ giống nhau. Một phộp chiếu bất kỳ rất khú ước lượng chớnh xỏc lực lượng của kết quả trung gian. Tuy nhiờn cú hai trường hợp đặc biệt cú ớch nhưng việc ước lượng lại cú thể thực hiện dễ dàng. Nếu chiếu của quan hệ R dựa trờn một thuộc tớnh A duy nhất, lực lượng của kết quả trung gian là số bộ thu được khi thực hiện phộp chiếu. Khi một trong cỏc thuộc tớnh chiếu là khoỏ thỡ:

card(A(R)) = card(R)

- Tớch Descartes:

card(R x S) = card(R)* card(S)

- Phộp nối: Hiện nay chưa cú phương phỏp nào để tớnh toỏn lực lượng của nối mà khụng cần thờm thụng tin bổ sung. Trường hợp đặc biệt, khi thực hiện phộp nối bằng và A là khoỏ của quan hệ R, B là khoỏ ngoài của quan hệ S ta cú:

card( R A = BS ) = card(S)

Trong trường hợp tổng quỏt thỡ ta cần duy trỡ hệ số chọn nối trong cụng thức: card(R S) = SFJ * card(R) * card (S)

- Phộp nửa nối:

card(R AS) = SFSJ(S.A) * card(S) Trong đú hệ số chọn của nửa nối là:

SFSJ(R AS) = SFSJ(S.A) = ]) [ ( ) ( ( A dom card S cardA

Khi R.A là khoỏ ngoài của S (S.A là khoỏ chớnh) thỡ hệ số chọn nửa nối là 1, và ta cú lực lượng của nửa nối là card(R).

- Phộp hợp: Rất khú ước lượng lực lượng của phộp hợp giữa R và S vỡ cỏc bộ giống nhau bị loại bỏ trong hợp. Ta sẽ chỉ trỡnh bày cụng thức tớnh cận trờn và dưới tương ứng là:

card(R) + card(S) max(card(R), card(S))

- Phộp hiệu: Cũng tương tự như phộp hợp ta cũng tớnh cận trờn và dưới Cận trờn: card(R-S) = card(R)

Cận dưới: 0

2.3.3.2 Tối ưu hoỏ cõu hỏi trong mụi trường tập trung.

Ở phần này, hai kỹ thuật tối ưu thụng dụng nhất trong cỏc hệ thống tập trung sẽ được giới thiệu. Đõy là cơ sở cho cỏc kỹ thuật tối ưu phõn tỏn vỡ những lý do:

- Cõu truy vấn phõn tỏn phải được dịch thành cỏc cõu truy vấn cục bộ, và được xử lý theo phương phỏp tập trung.

- Cỏc kỹ thuật tối ưu phõn tỏn thường là cỏc mở rộng của kỹ thuật tối ưu tập trung.

- Tối ưu hoỏ tập trung thường đơn giản hơn, do khụng cần phải quan tõm đến việc phải hạ thấp chi phớ truyền dữ liệu.

Hai thuật toỏn trỡnh bày ở đõy được sử dụng bởi 2 hệ thống CSDL: INGRES và System R, và cả hai hệ thống này đều cú phiờn bản phõn tỏn.

Thuật toỏn INGRES

INGRES sử dụng thuật toỏn tối ưu hoỏ động, nú tỏch dần cõu truy vấn dạng phộp tớnh quan hệ thành cỏc phần nhỏ hơn. Nú là tổ hợp của hai giai đoạn phõn ró và tối ưu.

- Cõu truy vấn “đa biến” (đa quan hệ) được phõn ró thành một chuỗi cỏc truy vấn “đơn biến” (đơn quan hệ).

- Mỗi cõu truy vấn được xử lý bởi bộ xử lý truy vấn một biến (OVQP – one variable query processor) bằng cỏch dựng heuristic để chọn một phương ỏn thực thi, sắp xếp cỏc thứ tự cũn lại dựa trờn kớch cỡ của quan hệ trung gian.

Trong INGRES sử dụng ngụn ngữ QUEL, nhưng để tạo ra sự nhất quỏn, thỡ chỳng ta sử dụng ngụn ngữ phi thủ tục SQL để trỡnh bày cỏc vớ dụ.

- Phõn ró:

Biến đổi cõu truy vấn q n–biến thành một tập tuần tự q1 q2...qn, trong đú q sử dụng kết quả của q .

Kỹ thuật tỏch. Cõu truy vấn q được phõn tỏch thành q’  q” dựa trờn một quan hệ chung là kết quả của q’:

q: SELECT V2.A2, V3.A3, ..., Vn.An FROM R1 V1, ..., Rn Vn WHERE P1(V1.A1’) AND P2(V1.A1, V2.A2, ..., Vn.An) q’: SELECT V1.A1 INTO R1’ FROM R1 V1 WHERE P1(V1.A1) q”: SELECT V2.A2, ..., Vn.An FROM R1’ V1, R2 V2, ..., Rn Vn WHERE P2(V1.A1, V2.A2, ..., Vn.An)

Thay thế bộ. Trước tiờn chọn một quan hệ để thay thế, gọi R1 là quan hệ đú. Với mỗi bộ t1 trong R1, cỏc thuộc tớnh được tham chiếu trong q được thay thế bằng cỏc giỏ trị thực sự trong t1:

q(V1, V2, ..., Vn)  (q’(t1, V2, V3, ..., Vn), t1R1)

Do đú tổng số cỏc cõu truy vấn q’ được sinh ra bởi phộp thế bộ là card(R1).

Vớ dụ: Với cõu truy vấn: “ Đưa ra tờn cỏc nhà cung cấp đó cung cấp thiết bị Mỏy Photo cho cụng ty”.

q1: SELECT NHACC.TENNCC

FROM NHACC, CUNGCAP, THIETBI

WHERE NHACC.MANCC = CUNGCAP.MANCC AND CUNGCAP.MATB = THIETBI.MATB AND THIETBI.TENTB = “Mỏy Photo”

q11: SELECT THIETBI.MATB INTO MTBVAR FROM THIETBI

WHERE THIETBI.TENTB = “Mỏy Photo” q’: SELECT NHACC.TENNCC

FROM NHACC, CUNGCAP, MTBVAR

WHERE NHACC.MANCC = CUNGCAP.MANCC AND CUNGCAP.MATB = MTBVAR.MATB

q12: SELECT CUNGCAP.MANCC INTO MNCCVAR FROM CUNGCAP, MTBVAR

WHERE CUNGCAP.MATB = MTBVAR.MATB q13: SELECT NHACC.TENNCC

FROM NHACC, MNCCVAR

WHERE NHACC.MANCC = MNCCVAR.MANCC

Áp dụng phộp thay thế bộ ta cú: q11 là cõu truy vấn “đơn biến”, do đú đối tượng để thay thế sẽ là q12 và q13. Giả sử MNCCVAR chỉ chứa hai giỏ trị “A1” và “B3” thỡ q13 sẽ được thay thế như sau:

q131: SELECT NHACC.TENNCC FROM NHACC

WHERE NHACC.MANCC = “A1” q132: SELECT NHACC.TENNCC

FROM NHACC

WHERE NHACC.MANCC = “B3”

Sau đú chỳng sẽ được bộ xử lý truy vấn một biến (OVQP) xử lý.

- Thuật toỏn tối ƣu hoỏ INGRES (INGRES-QOA)

Thuật toỏn này xử lý đệ quy, ỏp dụng cỏc phộp chọn, cỏc phộp chiếu ngay khi cú thể bằng kỹ thuật tỏch. Cỏc cõu truy vấn bất khả giản cũn lại sau phộp tỏch sẽ được xử lý bằng phộp thay thế bộ. Cỏc truy vấn đơn biến (đơn quan hệ) được tạo ra sẽ do OVQP xử lý, chọn ra đường truy xuất tốt nhất đến quan hệ theo điều kiện tỡm kiếm trang truy vấn.

INPUT: MRQ cõu truy vấn “đa biến” cú n quan hệ. OUPUT: kết quả thực hiện.

Begin

output  

If n=1 then

output  run(MRQ) {thực hiện cõu truy vấn 1 quan hệ} Else Begin

For i  1 to m do Begin

output’  run(ORQi) {thực hiện ORQi}

output  output  output’ {trộn tất cả cỏc kết quả lại}

End-for

R CHOOSE_VARIABLE(MRQ’) {R được chọn cho phộp thế bộ}

For mỗi bộ tR do Begin

MRQ”  thay giỏ trị cho t trong MRQ’

output’  INGRES – QOA(MRQ”) {gọi đệ qui}

output  output  output’ {trộn tất cả cỏc kết quả lại}

End-for End-if End.

Với MRQ là truy vấn đa quan hệ (Multi Relation Query), và ORQ là truy vấn một quan hệ (One – Relation Query).

Thuật toỏn của System R

System R sử dụng thuật toỏn tối ưu hoỏ tĩnh dựa trờn tỡm kiếm vột cạn nhờ sử dụng cỏc số liệu thống kờ về CSDL.

Nguyờn liệu của bộ tối ưu hoỏ của System R là cõy truy vấn do phõn ró cõu truy vấn SQL mang lại.

Kết quả thu được là phương ỏn thực thi để cài đặt cho cõy truy vấn “tối ưu”. Thay vỡ thực hiện một cỏch cú hệ thống phộp chọn, phộp nối như trong INGRES, System R chỉ thực hiện điều đú nếu nú dẫn đến một kết quả tốt hơn. Bộ tối ưu sẽ gỏn một chi phớ (theo thời gian) cho mỗi cõy dự tuyển và chỉ giữ lại cõy cú chi phớ thấp nhất. Những cõy dự tuyển cú được bằng hoỏn vị cỏc thứ tự nối của n quan hệ trong cõu truy vấn nhờ cỏc quy tắc biến đổi hoỏn vị, kết hợp. Và để hạn chế chi phớ dành cho việc tối ưu hoỏ, số lượng cỏc cõy được giảm bớt bằng kỹ thuật quy hoạch động, chỉ cú mối nối cú chi phớ thấp nhất mới được giữ lại, ngoài ra những chiến lược/phương ỏn thực thi phải lấy tớch Descartes đều bị loại bỏ ngay khi cú thể.

- Dự đoỏn phương phỏp tốt nhất để truy xuất đến mỗi quan hệ dựa trờn một vị từ chọn lựa.

- Đối với mỗi quan hệ R:

+ Thứ tự nối tốt nhất sẽ được ước lượng + Xỏc định chi phớ của mỗi nối

+ Chọn nối cú chi phớ thấp nhất

Với việc thực thi như vậy cú cơ sở cho việc tỡm được phương ỏn thực thi tốt. Khi xột cỏc nối, đối với nối của hai quan hệ thỡ quan hệ được đọc trước gọi quan hệ ngoài (external relation), cũn quan hệ kia, là quan hệ cú cỏc bộ được tỡm dựa theo cỏc giỏ trị cú được từ quan hệ ngoài sẽ được gọi là quan hệ trong (internal relation). Việc chọn phương phỏp nối ở đõy là xỏc định đường truy xuất cú chi phớ thấp nhất đến quan hệ trong.

Cú hai thuật toỏn, và một trong hai sẽ là tối ưu trong ngữ cảnh đó cho.

- Phƣơng phỏp thứ nhất “vũng lặp lồng” (nested loops) For mỗi bộ trong quan hệ ngoài (lực lượng n1)

For mỗi bộ trong quan hệ trong (lực lượng n2) Nối hai bộ nếu điều kiện nối được thoả món

End-for End-for

Với độ phức tạp/chi phớ tương ứng với: n1*n2, khi khụng cú chỉ mục trờn thuộc tớnh nối.

Với mỗi bộ của quan hệ ngoài, từng bộ của quan hệ trong thoả món vị từ nối sẽ được truy xuất lần lượt để tạo ra quan hệ kết quả. Một chỉ mục trờn thuộc tớnh nối là một đường truy xuất rất hiệu quả đối với quan hệ trong.

- Phƣơng phỏp thứ hai “nối trộn” (merge join)

+ Sắp xếp quan hệ theo thuộc tớnh nối. + Trộn hai quan hệ

Nếu điều kiện nối là đẳng thức, thỡ độ phức tạp/chi phớ tương ứng với n1 + n2. Nếu một trong hai quan hệ đều chưa được sắp xếp, thỡ thuật toỏn “vũng lặp lồng” sẽ cú chi phớ tăng đỏng kể so với phương phỏp “nối trộn”. Núi chung thuật

Một phiờn bản đơn giản của thuật toỏn tối ưu hoỏ sẽ được trỡnh bày ở đõy. Thuật toỏn gồm hai vũng lặp:

+ Trước tiờn chọn phương phỏp truy xuất tốt nhất đến mỗi quan hệ trong cõu truy vấn.

+ Xột tất cả cỏc hoỏn vị cú thể của cỏc thứ tự kết nối (cú n! hoỏn vị cho 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 79 - 90)

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

(131 trang)