Siêu đồ thị kết nối của ví dụ 2.4

Một phần của tài liệu (LUẬN văn THẠC sĩ) tối ưu hóa truy vấn cơ sở dữ liệu hướng tới đối tượng 04 (Trang 44)

2.2.3. Phƣơng pháp ƣớc lƣợng siêu đồ thị

Sau khi đã khởi tạo đƣợc siêu đồ thị, ta dựa vào dãy các sự kiện của bài toán đặt ra, tiến hành ƣớc lƣợng các siêu cạnh trong siêu đồ thị. Khi tất cả các siêu cạnh trong siêu đồ thị đƣợc ƣớc lƣợng, chiếu lên tập các thuộc tính cần xác định trong yêu cầu ta có câu trả lời của truy vấn [3].

2.2.3.1. Ƣớc lƣợng các siêu cạnh trong siêu đồ thị

Định nghĩa 3.2: Lớp cơ sở là lớp đƣợc lƣu trữ trong CSDL hƣớng đối tƣợng.

Lớp dẫn xuất là lớp trung gian đƣợc sản sinh trong quá trình ƣớc lƣợng truy vấn và đƣợc sử dụng nhƣ là đầu vào trong các bƣớc ƣớc lƣợng.

Quy tắc ƣớc lƣợng các siêu cạnh trong siêu đồ thị kết nối

Trong tiến trình thực hiện truy vấn, việc đƣa phép chọn và phép chiếu trên đối tƣợng lên trƣớc các phép kết nối và tích đề các đƣợc thực hiện càng sớm càng tốt. Vì, phép chọn thực hiện việc loại bỏ các đối tƣợng không liên quan trong các lớp, làm giảm không gian tìm kiếm; Phép chiếu đƣợc áp dụng cho trƣờng hợp tập thuộc tính của các lớp quá lớn nhƣng không tham gia trong kết quả của truy vấn, do đó phép chiếu làm giảm kích thƣớc lƣu trữ của mỗi lớp, loại bỏ các thuộc tính không có mặt trong kết quả của truy vấn. Vì vậy, việc áp dụng các quy tắc Heuristic trong ƣớc lƣợng siêu đồ thị kết nối đối tƣợng trên các siêu cạnh điều kiện đối với các phép toán chọn, chiếu đƣợc phát biểu nhƣ sau:

(QT1) Sử dụng một ràng buộc (điều kiện có kiểu A = a, A > a, ... hoặc một tập hạn chế các giá trị của một thuộc tính) để truy vấn trên một lớp (nếu có thể).

(QT2) Ƣớc lƣợng một điều kiện hoặc một siêu cạnh điều kiện càng sớm càng tốt nếu nhƣ có thể.

hoten luongCB … duan

tenduan kinhphi ... QuanLy >=10.000.000 head head IN DuAn  200.000.000

(QT3) Sau khi một siêu cạnh đã đƣợc đánh dấu, chiếu loại bỏ các thuộc tính không liên quan từ lớp dẫn xuất.

Mô tả thuật toán ƣớc lƣợng các siêu cạnh trong siêu đồ thị

Chúng ta biểu diễn hình thức cho siêu đồ thị kết nối của truy vấn hƣớng đối tƣợng là dãy các sự kiện: H = (E1, E2, … , Ej-1), trong đó, các sự kiện Ei (i = 1..j-1) có thể là siêu cạnh đối tƣợng, siêu cạnh điều kiện hoặc siêu cạnh kết nhập.

Lớp dẫn xuất thu đƣợc sau tác động của một sự kiện Ej đƣợc ký hiệu là

Lop_dan_xuat(E1, E2, … , Ej). Trƣờng hợp siêu đồ thị kết nối chỉ có một siêu cạnh E1 thì siêu cạnh đó phải là siêu cạnh đối tƣợng và Lop_dan_xuat(E1) = O(E1). Trong đó

O(E1) là lớp tƣơng ứng với siêu cạnh đối tƣợng E.

Thuật toán đƣợc giới thiệu sau đây thực hiện việc ƣớc lƣợng lớp dẫn xuất với sự kiện Ej trong H. Thuật toán Uocluongsieucanh nhận tham số vào là lớp dẫn xuất thu đƣợc sau khi thực hiện sự kiện Ej-1 và sự kiện Ej, kết quả trả về của thủ tục là một chƣơng trình tính Lop_dan_xuat sau tác động của Ej. Chúng ta xem xét ba trƣờng hợp xảy ra:

+ TH1: Khởi tạo lớp dẫn xuất E1 cho kết quả Lop_dan_xuat(E1) = O(E1), trong đó O(E1) là lớp tƣơng ứng với siêu cạnh đối tƣợng E1.

+ TH2: Nếu ta loại bỏ một siêu cạnh điều kiện Ej ra khỏi siêu đồ thị H và cho ta kết quả là siêu đồ thị H‟ = (E1, E2, … , Ej), thì lớp dẫn xuất của siêu đồ thị H‟ là phép chọn theo điều kiện lớp dẫn xuất của H.

Lop_dan_xuat(H‟) = σt.C(t)(Lop_dan_xuat(H))

Với C(t) là điều kiện trong mệnh đề Where (2.1): t.A = a;

(2.3) : t.A  t.B,  { < ,  ,  , > , }; (2.4): t.A  t.B,  { ,  ,  ,  , };

+ TH3: Nếu chúng ta loại bỏ một siêu cạnh đối tƣợng E khỏi siêu đồ thị H, và giả sử siêu đồ thị kết quả H‟có chứa các thành phần liên thông E1, E2,…, Ej. Khi đó với mỗi siêu cạnh đối tƣợng F trong E1, E2,…, Ej-1 có giao với E, chúng ta xác định đƣợc lớp đối tƣợng F trong phépnối với lớp đối tƣợng E của siêu cạnh đối tƣợng E.

O(F) := tuple_cat(O(F), π(O(F)  O(E))(O(E))

Nếu siêu cạnh đối tƣợng F không giao với siêu đồ thị H ta xác định đƣợc đối tƣợng F

Lop_dan_xuat(H‟) := tuple_cat(O(F), Lop_dan_xuat(E1), …, Lop_dan_xuat (Ej-1))

Và thuật toán ƣớc lƣợng siêu cạnh đƣợc minh họa nhƣ sau.

Thuật toánUocLuongSieuCanh (Lop_dan_xuat(H), Ej)

Đầu vào: Lop_dan_xuat (H) và sự kiện Ej, trong đó H = (E1, E2, … , Ej-1)

Phương pháp:

Begin

(1) Khởi tạo H = (E1, E2, … , Ej-1) (2) UocLuongSieuCanh(E1)

(3) Kết quả: Lop_dan_xuat(E1) := O(E1)

(4) If ( Ej là một điều kiện hoặc siêu cạnh điều kiện) then

(5) Loại bỏ siêu cạnh đối tƣợng Ej ra khỏi siêu đồ thị (6) H‟ := H  {ej}

(7) Kết quả: Lop_dan_xuat(H‟):= t.C(t)(Lop_dan_xuat(H))

// Xét các trƣờng hợp siêu cạnh điều kiện trong mệnh đề Where. (8) If (Ej là siêu cạnh đối tượng) then

(9) If (mỗi siêu cạnh đối tƣợng F có giao với E) then

(10) O(F) := tuple_cat(O(F), π(O(F)  O(E))(O(E)))

// O(F) là tập các đối tƣợng của F

(11) If (siêu đồ thị còn lại là tập các siêu cạnh tách biệt) then (12) for i :=1 to j-1 do

(13) UocLuongSieuCanh(Lop_dan_xuat(H), Ej)

(14) Kết quả: Lop_dan_xuat(H‟) :=

tuple_cat(O(F), Lop_dan_xuat(E1), …, Lop_dan_xuat (Ej-1))

End;

Khi tất cả các siêu cạnh trong siêu đồ thị H đƣợc ƣớc lƣợng bằng cách tác động lần lƣợt các sự kiện để thu đƣợc các lớp dẫn xuất. Lớp dẫn xuất kết quả sẽ đƣợc chiếu lên tập các thuộc tính trong siêu cạnh đỉnh, đây chính là câu trả lời của truy vấn.

Thuật toán 2.3: Ƣớc lƣợng các siêu cạnh trong siêu đồ thị

Đầu vào: Siêu đồ thị H = (E1, E2, …En),R là siêu cạnh đỉnh.

Đầu ra: Lớp kết quả của truy vấn.

Phương pháp

Begin

(1) Siêu đồ thị H := (E1, E2, …En), với dãy các sự kiện Ei

(2) for j := 1 to n do

(3) Call UocLuongSieuCanh(Lop_dan_xuat (E1, E2, …Ej-1), Ej) (5) Bổ sung Lop_dan_xuat(E1, E2, …Ej) vào H

(6) Kết quả: H = πR(Lop_dan_xuat (H))

End;

Mệnh đề 2.1. Thuật toán 2.3 dừng sau hữu hạn bước và cho câu trả lời đúng Chứng minh:

Rõ ràng số các sự kiện trong H là hữu hạn, do đó thuật toán 2.3 sẽ dừng sau n lần tác động của các sự kiện Ei lên các lớp dẫn xuất, n là số sự kiện trong siêu đồ thị H

Sử dụng phƣơng pháp quy nạp để chứng minh cho điều này:

+ Trƣờng hợp cơ sở: n = 1, thì H = (E1), E1là siêu cạnh đối tƣợng, ta có:

H = πR(E1) = π(C1) là câu trả lời của truy vấn (C1 là lớp tƣơng ứng với siêu cạnh đối tƣợng E1).

+ Trƣờng hợp thứ k: n = k, giả sử lớp dẫn xuất thứ k thu đƣợc sau tác động của sự kiện Ek là ƣớc lƣợng của k siêu cạnh trong siêu đồ thị (Lop_dan_xuat (E1, ..., Ek)). Mặt khác, lớp dẫn xuất thu đƣợc ở bƣớc thứ k lại là đầu vào cho bƣớc ƣớc lƣợng thứ (k+1), do đó nếu k = n thì sau n bƣớc ƣớc lƣợng siêu cạnh, ta có lớp dẫn xuất thu đƣợc:

UocLuongSieuCanh(lop_dan_xuat(E1, ..., En-1), En) = lop_dan_xuat(E1, ..., En). Sau đó chiếu lên các siêu cạnh đỉnh ta có kết quả truy vấn là:

H = πR(lop_dan_xuat(E1, ..., En))

Xét truy vấn trong ví dụ 2.2. Chúng ta có dãy các sự kiện trong siêu đồ thị H = (PhongBan, tenphongban = “Truyền thông”, NhanVien)

Áp dụng thuật toán 2.3 ƣớc lƣợng các siêu cạnh trong siêu đồ thị ta có các bƣớc ƣớc lƣợng nhƣ sau:

+ Bƣớc 1: Khởi tạo lớp dẫn xuất tƣơng ứng với siêu cạnh đối tƣợng PhongBan

Lop_dan_xuat(PhongBan) = O(PhongBan)

+ Bƣớc 2: Áp dụng điều kiện chọn “tenphongban = “ Truyền thông” trên siêu cạnh đối tƣợng PhongBan.

O(PhongBan) = σk.k.tenphongban = “Truyền thông”( PhongBan)

+ Bƣớc 3: Ƣớc lƣợng siêu cạnh đối tƣợng NhanVien, là kết nối truyền thống dựa trên giá trị.

O(NhanVien)= tuple_cat(NhanVien, π(O(NhanVien)O(PhongBan))(πV(O(PhongBan))))

+ Bƣớc 4: Chiếu lớp dẫn xuất thu đƣợc sau phép kết nối lên siêu cạnh đỉnh (hoten)

Lop_dan_xuat(NhanVien, PhongBan) =

π(s.hoten)(πV(Lop_dan_xuat(NhanVien, PhongBan)))

Kết quả sau khi áp dụng thuật toán ƣớc lƣợng siêu cạnh trong siêu đồ thị H = (PhongBan, tenphongban = “Truyền thông”, NhanVien) đƣợc minh họa trên chƣơng trình cài đặt ở mục 3.4. Kết quả thực nghiệm trong chƣơng 3 (trang 62).

2.2.3.2. Mở rộng thuật toán tối ƣu truy vấn hƣớng đối tƣợng trên siêu đồ thị

Trong CSDL hƣớng đối tƣợng, các truy vấn đối tƣợng lồng đƣợc sử dụng khá thƣờng xuyên. Các cấu trúc lồng đƣợc biểu diễn trong các biểu thức điều kiện của truy vấn dƣới hai dạng: các truy vấn con lồng hoặc biểu thức đƣờng dẫn có chứa các kết nối ẩn, các tân từ lồng nhau trong mệnh đề Where. Vì vậy, trên cơ sở giải thuật tối

ƣu hóa truy vấn bằng siêu đồ thị của Ullman J.D [12] và Han [16]. Chúng ta nghiên cứu mở rộng thuật toán tối ƣu hóa câu truy vấn Wong-Youssefi đối với truy vấn đối tƣợng.

Trƣớc hết, mô tả cách tiến hành thuật toán qua quá trình rút gọn siêu đồ thị, trong đó chúng ta sẽ loại bỏ mỗi lần một siêu cạnh và cách chọn ra các siêu cạnh để loại bỏ; giải thích cách gắn phép chiếu vào các câu vấn tin đƣợc biểu diễn bằng siêu đồ thị. Cuối cùng sẽ trình bày một cách hình thức các ý tƣởng đƣợc đề cập.

Ký pháp

Tại mọi thời điểm, ta luôn liên kết một đối tƣợng O(E) với mỗi siêu cạnh đối tƣợng E và liên kết một điều kiện C(E) với một siêu cạnh điều kiện E. Đối tƣợng

O(E) giá trị có thể thay đổi theo từng bƣớc nhƣng điều kiện C(E) thì không bao giờ thay đổi.

Chúng ta cũng sử dụng biến nhận giá trị đối tƣợng Lop_dan_xuat(H) cho mỗi siêu đồ thị H đƣợc xây dựng trong quá trình tối ƣu truy vấn. Giá trị của Lop_dan_xuat(H)

đƣợc gán một lần và giá trị đó đƣợc xem là nối tự nhiên của các đối tƣợng O(E) tƣơng ứng với mọi siêu cạnh đối tƣợng E trong H , theo sau là phép chọn trên các điều kiện của các siêu cạnh điều kiện trong H. Mặc dù, giá trị của O(E) có thể thay đổi, trong phép nối

trên ta sử dụng giá trị của O(E) vào lúc tạo ra siêu đồ thị H.

Rút gọn siêu đồ thị

Chúng ta sẽ tiến hành loại bỏ các siêu cạnh khỏi siêu đồ thị kết nối H, mỗi lần một cạnh và khi tiến hành chúng ta sẽ tạo ra chƣơng trình để tính Lop_dan_xuat(H).

Trƣờng hợp cơ sở, khi H chỉ có duy nhất một siêu cạnh E thì E là siêu cạnh đối tƣợng, Lop_dan_xuat(H) đƣợc xem là O(E). Do đó, sẽ không xảy ra trƣờng hợp một siêu đồ thị kết nối đã rút gọn chỉ chứa một siêu cạnh điều kiện.

Mẫu chốt của thuật toán Wong-Youssefi là trật tự loại bỏ các siêu cạnh. Các siêu cạnh có liên quan đến biểu thức điều kiện có dạng (1) sẽ đƣợc ƣu tiên xét trƣớc, tiếp theo là các siêu cạnh mà khi loại bỏ nó ra khỏi siêu đồ thị sẽ làm cho siêu đồ thị này trở thành siêu đồ thị tách biệt và cuối cùng là xét các siêu cạnh còn lại.

Quan hệ nhỏ (Small relations)

Thuật toán tận dụng đƣợc dạng vấn tin điển hình, là dạng mà phép chọn có thể làm cho kích thƣớc của các đối tƣợng truy xuất giảm đi rất nhiều. Chúng ta có thể xem kết quả của một phép chọn là làm nhỏ đối tƣợng truy xuất và đối tƣợng đó trở thành đối tƣợng có “quan hệ nhỏ”. Nếu quan hệ nhỏ đó cần phải nối với một đối tƣợng khác thì rất có thể kết quả càng nhỏ đi, với giả thiết mỗi bộ của đối tƣợng chỉ nối với một số ít các bộ của đối tƣợng kia. Vì vậy, “tính chất nhỏ” của đối tƣợng sẽ lan truyền.

Đôi khi không có phép chọn nào có dạng A = a nên thuật toán Wong-Youssefi sẽ sử dụng phép nối giữa các đối tƣợng giao để làm giảm kích thƣớc của một hoặc nhiều đối tƣợng. Và các đối tƣợng nhƣ thế cũng đƣợc xem là các đối tƣợng có “quan hệ nhỏ”. Đây chính là các điều kiện khi xét các đối tƣợng có “quan hệ nhỏ” hay không. Xét ví dụ về quan hệ nhỏ

Trong hình trên ta thấy đối tƣợng PhongBan và DuAn nối với nhau bởi thuộc tính

PhongBan.duan = DuAn.maduan. Riêng thuộc tính tenduan trong đối tƣợng DuAn ở đây ta chỉ lấy ra những dự án nào có tên là “bảo trì” nên đối tƣợng DuAn đƣợc xem là một đối tƣợng có “quan hệ nhỏ” và tƣơng đƣơng với phép chọn:

σtenduan = “bảo trì” (DuAn)

Ba giai đoạn của thuật toán tối ƣu hóa truy vấn Giai đoạn 1: Giai đoạn khởi đầu

Nếu siêu đồ thị H chỉ có duy nhất một siêu cạnh đối tƣợng E thì thuật toán sẽ không tạo ra bƣớc nào mà trả về một trong hai trƣờng hợp sau:

+ Nếu siêu đồ thị H không có điều kiện ở dạng 2.1 (A = a) thì

Lop_dan_xuat(H):= O(E):= O0(E)

+ Nếu siêu đồ thị H có điều kiện ở dạng 2.1 (A = a) thì

Lop_dan_xuat(H):= O(E):= σ<F1  ...  Fm>(O0(E))

Giai đoạn 2: Loại bỏ các siêu cạnh trong siêu đồ thị

Pha 1: Nếu H chứa hai hay nhiều siêu đồ thị con tách biệt thì không loại bỏ siêu cạnh nào và áp dụng trƣờng hợp siêu đồ thị tách biệt trong thuật toán 3.3 ƣớc lƣợng siêu cạnh.

Ngƣợc lại, H là một siêu đồ thị liên thông, nếu H có ít nhất một siêu cạnh đối tƣợng mà nó thỏa mãn:

(1) Giao với ít nhất một siêu cạnh đối tƣợng khác. (2) Không giao với bất kỳ một siêu cạnh điều kiện nào.

Thì sang pha 2 chúng ta sẽ loại bỏ một trong những siêu cạnh đối tƣợng này. Còn nếu H liên thông nhƣng không có siêu cạnh đối tƣợng nào thỏa điều kiện (1) và (2) thì sang Pha 2 chúng ta sẽ loại bỏ một siêu cạnh điều kiện.

maphong tenphong duan ….

maduan tenduan ….

PhongBan

„=“bảo trì”‟

Pha 2a: Trƣờng hợp ít nhất một siêu cạnh đối tƣợng thỏa các điều kiện (1) và (2) đƣợc đề cập trong Pha 1, chúng ta phải chọn một trong những siêu cạnh đó để loại bỏ. Bằng cách tiến hành xét duyệt một số các siêu cạnh “dự tuyển”, qui tắc cần tuân thủ theo thứ tự sau:

1. Nếu có một siêu cạnh dự tuyển hiện đang biểu thị cho một quan hệ nhỏ, thì không xét tất cả các siêu cạnh dự tuyển không “nhỏ” khác.

2. Nếu một trong số các siêu cạnh dự tuyển còn lại khi xoá khỏi Hvà tách H thành hai hay nhiều siêu đồ thị tách biệt (làm H mất tính liên thông) thì bỏ qua không xét tất cả các siêu cạnh dự tuyển còn lại không làm mất tính liên thông của H. 3. Nếu vẫn còn nhiều siêu cạnh dự tuyển thì chọn tùy ý trong số chúng để loại bỏ.

Lưu ý: Quy tắc 1 buộc chúng ta sử dụng “quan hệ nhỏ” để giảm kích thƣớc của các đối tƣợng khác đƣợc biểu diễn trong siêu đồ thị.

Pha 2b: Siêu đồ thị H liên thong nhƣng không có siêu cạnh đối tƣợng nào thỏa mãn điều kiện (1) và (2) đƣợc đề cập trong pha 1, chúng ta sẽ tiến hành loại bỏ siêu cạnh điều kiện. Nếu có nhiều siêu cạnh điều kiện E, chúng ta xét các siêu đồ thị GE

đƣợc tạo ra sau khi xóa E khỏi H theo quy tắc:

1. Nếu có một siêu cạnh điều kiện hiện đang biểu thị cho một quan hệ nhỏ, thì ta loại bỏ siêu cạnh đó khỏi H.

2. Nếu một trong số các siêu cạnh điều kiện còn lại khi xoá khỏi Hvà tách H thành hai hay nhiều siêu đồ thị tách biệt thì bỏ qua không xét tất cả các siêu cạnh điều kiện còn lại không làm mất tính liên thông của H.

3. Nếu vẫn còn nhiều siêu cạnh điều kiện thì chọn một siêu cạnh bất kỳ để loại bỏ.

Giai đoạn 3: Tinh chỉnh

Chúng ta áp dụng các trƣờng hợp loại các siêu cạnh thích hợp đã đƣợc chọn ở giai đoạn 2. Tuy nhiên có hai ngoại lệ đối với trƣờng hợp loại siêu cạnh đối tƣợng.

Thứ nhất, nếu có một siêu đồ thị Gi chứa một siêu cạnh đối tƣợng duy nhất F thì chúng ta có thể lƣợc bỏ bƣớc nối các đối tƣợng giao nhau: O(F):= tuple_cat(O(F), π(O(F)O(E))(O(E)). Và đối tƣợng F thành đối tƣợng có quan hệ nhỏ

Ngoại lệ thứ hai là nếu có một siêu đồ thị Gikhông có nút đặc trƣng thì chúng ta loại bỏ nó ra khỏi phép nối.

Nếu ta có câu lệnh có dạng R := Exp(exp là biểu thức) và T := (R) ( là phép chiếu hoặc phép chọn). Giữa hai câu lệnh này R không đƣợc gán một giá trị khác thì ta xoá bỏ câu lệnh thứ hai và thay câu lệnh thứ nhất thành T := (Exp).

Từ ý tƣởng của thuật toán, trƣớc tiên ta xây dựng thuật toán chọn các siêu cạnh cần loại.

Đối với siêu cạnh đối tƣợng:

Đầu vào: Siêu đồ thị đối tƣợng S = (s1,..., sr)

Đầu ra: Lớp kết quả của truy vấn

Begin

(1) for i:= 1 to r do

(2) If (si có chứa thuộc tính tham gia vào biểu thức dạng (2.1)) then

(3) Call UocLuongSieuCanh(si)

(4) ElseIf (si có chứa thuộc tính tham gia vào biểu thức dạng (2.3) và (2.4)) then

(5) Call UocLuongSieuCanh(si)

End;

Đối với siêu cạnh điều kiện:

Thuật toán UuTienChonSieuCanhDieuKien( p1,...,pk)

Đầu vào: Siêu cạnh điều kiện P = (p1,..., pk)

Đầu ra: Lớp kết quả của truy vấn

Begin

(1) for j:= 1 to k do

(2) If (pj là biểu thức dạng (2.1)) then

(3) Call UocLuongSieuCanh(pj)

(4) ElseIf (pj là biểu thức dạng (2.3) và (2.4)) then

(5) Call UocLuongSieuCanh(pj)

End;

Chúng ta mở rộng thuật toán 2.3 bằng việc xử lý các siêu cạnh, cách chọn các siêu cạnh điều kiện, siêu cạnh đối tƣợng, siêu cạnh kết nhập. Để xử lý cho trƣờng hợp các siêu cạnh kết nhập, tức là, xét các siêu đồ thị biểu diễn các truy vấn đối tƣợng lồng. Các truy vấn lồng có thứ tự thực hiện các truy vấn con theo trật tự từ “trong ra

Một phần của tài liệu (LUẬN văn THẠC sĩ) tối ưu hóa truy vấn cơ sở dữ liệu hướng tới đối tượng 04 (Trang 44)

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

(80 trang)