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

Một phần của tài liệu TỐi ưu HÓA TRUY VẤN CƠ SỞ DỮ LIỆU Hướng ĐỐI TưỢNG (Trang 47)

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 …. (adsbygoogle = window.adsbygoogle || []).push({});

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) (adsbygoogle = window.adsbygoogle || []).push({});

Đầ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 ngoài”, nghĩa là, các truy vấn ở cấp sâu nhất sẽ đƣợc thực hiện trƣớc. Thuật toán Tối ƣu hóa truy vấn bằng siêu đồ thị đối tƣợng nhận vào siêu đồ thị H = (E1, E2, …, Ei, EAj‟, Ei+1, …, Ek, EAj, …) trong đó, Ei là các siêu cạnh đối tƣợng hoặc siêu cạnh điều kiện, EAj là các siêu cạnh kết nhập và R tập các siêu cạnh đỉnh (hay điều kiện của truy vấn). Kết quả của thuật toán là lớp kết quả của truy vấn. Và thuật toán Tối ƣu hóa truy vấn bằng siêu đồ thị đối tƣợng đƣợc thể hiện nhƣ sau:

Thuật toán 2.4: Tối ƣu hóa truy vấn bằng siêu đồ thị

Đầu vào: Siêu đồ thị H = (E1, E2, …, Ei, EAj, Ei+1, …, Ek,…),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) Biểu diễn siêu đồ thị H = (E1, E2, …, Ei, EAj, Ei+1, …, Ek,…)

(3) repeat

(4) If (EAj là siêu cạnh kết nhập) then (5) for j = i+1 to k-1 do

(6) Call UocLuongSieuCanh(Lop_dan_xuat(Ej), Ej+1)

(7) Bổ sung Lop_dan_xuat(Ej,.., Ek) vào H trƣớc EAj (8) Else //Xét các siêu cạnh Ei

(9) If (Siêu cạnh Ei giao với ít nhất một siêu cạnh đối tƣợng khác và không giao với bất kỳ siêu cạnh điều kiện nào) then

(10) Call UuTienChonSieuCanhDoiTuong(Ei)

(11) Áp dụng trƣờng hợp siêu cạnh “đối tƣợng” của thuật toán 2.3

(12) Else // Xét các siêu cạnh điều kiện

(13) Call UuTienChonSieuCanhDieuKien(Ei)

(14) Áp dụng trƣờng hợp siêu cạnh “điều kiện” của thuật toán 2.3

(15) Until (ƣớc lƣợng tất cả các siêu cạnh trong H) (16) H = πR(Lop_dan_xuat(El, ..., Ek,…))

End;

Xét ví dụ 2.3. Tìm tất cả các nhân viên có lƣơng cao nhất thuộc phòng “Truyền thông”

Áp dụng thuật toán 2.4 Tối ƣu hoá truy vấn bằng siêu đồ thị, với dãy các sự kiện trong siêu đồ thị H = (PhongBan, tenphongban = “Truyền thông”, NhanVien, max(luongCB), NhanVien), ở đây ta có hai siêu cạnh đối tƣợng NhanVien bởi ví dụ 2.3 sử dụng truy vấn lồng, trong đó đối tƣợng NhanVien s là của khối SFW thứ 1, đối tƣợng NhanVien k là của khối SFW con thứ 2. Ta có trật tự các bƣớc ƣớc lƣợng siêu cạnh nhƣ sau: (adsbygoogle = window.adsbygoogle || []).push({});

Bƣớc Biểu thức đại số đối tƣợng

(1) O(PhongBan) = (g.g.tenphongban = “Truyền thông”)(PhongBan)

(2) O(NhanVien) = (max(k.luongCB)(NhanVien)

(3) O(NhanVien)=tuple_cat(O(NhanVien),(O(NhanVien)O(NhanVien))(V(O(NhanVien)))

(4) Lop_dan_xuat(NhanVien) = tuple_cat(O(NhanVien),O(NhanVien)))

(5) Lop_dan_xuat(NhanVien, PhongBan)

= tuple_cat(Lop_dan_xuat(NhanVien),O(PhongBan))

(6) Lop_dan_xuat (NhanVien, NhanVien, PhongBan)

=π(s.hoten,s.luongCB)(πV((s.luongCB=max(k.luongCB))(Lop_dan_xuat(NhanVien,PhongBan))))

Với các bƣớc thực hiện của câu truy vấn trong bảng 2.3 chúng ta thấy rằng phép chọn g.tenphongban = “Truyền thông” làm nhỏ đi đối tƣợng PhongBan trong H và cũng tạo ra bƣớc khởi đầu cho O(PhongBan) = σg.g.tenphongban=“Truyền thông”(PhongBan).

Vì trong pha 2 ta ƣu tiên chọn các đối tƣợng có quan hệ nhỏ nên sang giai đoạn 2, ta loại bỏ siêu cạnh PhongBan đầu tiên ra khỏi siêu đồ thị H và tạo ra siêu đồ thị mới G = (NhanVien, max(luongCB), NhanVien). Ta thấy phép chọn luongCB =

(max(k.luongCB) làm nhỏ đi đối tƣợng NhanVien và kết quả O(NhanVien) đƣợc xem là đối tƣợng có quan hệ nhỏ trong G.

Bây giờ, chúng ta ƣu tiên loại bỏ đối tƣợng NhanVien k ra khỏi siêu đồ thị G, kết quả cho ra siêu đồ thị G1 chỉ có một siêu cạnh NhanVien s.

Khi tất cả các siêu cạnh đều đã đƣợc ƣớc lƣợng bằng cách thực hiện các phép toán đối tƣợng tƣơng ứng, ta áp dụng thuật toán 2.3 ƣớc lƣợng các siêu cạnh trong siêu đồ thị thu đƣợc lớp dẫn xuất tƣơng ứng, sau đó ta chiếu lớp dẫn xuất lên điều kiện truy vấn R (siêu cạnh đỉnh), và thu đƣợc lớp kết quả:

Lop_dan_xuat (NhanVien, NhanVien, PhongBan)=

π(s.hoten,s.luongCB)(πV((s.luongCB = max(k.luongCB))(Lop_dan_xuat(NhanVien,PhongBan)))) Khi tất cả các siêu cạnh đƣợc ƣớc lƣợng theo thuật toán 2.4, chúng ta nhận đƣợc lớp kết quả truy vấn. Tuy nhiên, trong một số trƣờng hợp các đối tƣợng đƣợc xây dựng tại mỗi bƣớc bị lặp đi lặp lại nhiều lần. Các đối tƣợng này tuy không làm cho chi phí truy vấn tăng lên đáng kể nhƣng sự trùng lặp đó là không cần thiết. Chính vì điều đó nên thuật toán tối ƣu hoá truy vấn đƣợc bổ sung giai đoạn 3, tinh chỉnh chƣơng trình, sau đây là thuật toán Tinh chỉnh siêu đồ thị.

Thuật toán 2.5: Tinh chỉnh siêu đồ thị

Đầu vào: Lớp kết quả truy vấn thuộc thuật toán 2.4

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

Phương pháp

(1) For (Mỗi bƣớc trong lớp kết quả truy vấn) do

(2) If (Đối tƣợng ở bƣớc i và đối tƣợng ở bƣớc i-1 bằng nhau) then

(3) Lop_dan_xuat[i] :=(Lop_dan_xuat [i-1])

// trong đó,  là phép chiếu () hay phép chọn ()

Xét bảng 2.1. Kết quả ƣớc lƣợng siêu cạnh của ví dụ 2.3

Áp dụng thuật toán 2.5 Tinh chỉnh siêu đồ thị cho bảng 2.1. Kết quả ước lượng siêu cạnh của ví dụ 2.3, ta tiến hành loại bỏ những bƣớc bị lặp đi lặp lại nhiều lần. Trong giai đoạn 3 áp dụng trƣờng hợp loại siêu cạnh đối tƣợng với ngoại lệ thứ nhất,

siêu đồ thị G1= (NhanVien) chỉ chứa một siêu cạnh đối tƣợng duy nhất là NhanVien, nên ta có thể lƣợc bỏ bƣớc nối giữa các đối tƣợng giao nhau ở bƣớc (3).

Lop_dan_xuat(NhanVien) = tuple_cat(O(NhanVien),O(NhanVien)))

Ở bƣớc (4) và bƣớc (5) tính lớp dẫn xuất cùng cho ta một kết quả nên ta loại bỏ bƣớc 5 và viết lại bƣớc (4):

Lop_dan_xuat(NhanVien, NhanVien, PhongBan) (adsbygoogle = window.adsbygoogle || []).push({});

= π(s.hoten,s.LuongCB)(πV((s.LuongCB = max(k.LuongCB))(tuple_cat(O(NhanVien),

(O(NhanVien)O(NhanVien))(V(O(NhanVien)))))).

Bƣớc Biểu thức đại số đối tƣợng

(1) O(PhongBan) = (g.g.tenphongban = “Truyền thông”)(PhongBan)

(2) O(NhanVien) = (max(k.luongCB)(NhanVien)

(3)

Lop_dan_xuat (NhanVien, NhanVien, PhongBan)

= π(s.hoten,s.LuongCB)(πV((s.LuongCB = max(k.LuongCB))(tuple_cat(O(NhanVien),

(O(NhanVien)O(NhanVien))(V(O(NhanVien)))))).

Bảng 2.2. Kết quả ước lượng khi áp dụng thuật toán 2.5 Tinh chỉnh siêu đồ thị của ví dụ 2.3

Quan sát bảng 2.1 và bảng 2.2 chúng ta nhận thấy số bƣớc ƣớc lƣợng trong bảng 2.2 ít hơn hai bƣớc so với bảng 2.1.

Xét ví dụ 2.4: Cho biết tên các nhân viên có mức lƣơng thu nhập lớn hơn hoặc bằng 10 triệu và tham gia dự án có kinh phí lớn hơn hoặc bằng 200 triệu.

Áp dụng thuật toán 2.4 Tối ƣu hoá truy vấn bằng siêu đồ thị, với dãy các sự kiện trong siêu đồ thị: H = (QuanLy, g.luong  10.000.000, DuAn, k.kinhphi 

200.000.000), ta có trật tự các bƣớc ƣớc lƣợng siêu cạnh nhƣ sau:

Bƣớc Biểu thức đại số đối tƣợng

(1) O(QuanLy) = (g.g.luongCB  10.000.000)(QuanLy) (2) O(DuAn) = π(k.duan)((k.kinhphi  200.000.000)(DuAn))

(3) Lop_dan_xuat(QuanLy, DuAn) = tuple_cat(O(QuanLy), O(DuAn))

(4) Lop_dan_xuat(QuanLy, DuAn)

= (g.duan IN k.tenduan)(Lop_dan_xuat(QuanLy, DuAn)))

(5) Lop_dan_xuat(QuanLy, DuAn) = π(g.hoten)(Lopdanxuat(QuanLy, DuAn))

Bảng 2.3. Kết quả ước lượng siêu cạnh của ví dụ 2.4

Áp dụng thuật toán 2.5 Tinh chỉnh siêu đồ thị. Bảng 2.3 ta tiến hành lƣợc bỏ bƣớc (3), (4) và tạo lại bƣớc (5).

Lop_dan_xuat(QuanLy, DuAn)=

π(g.hoten)((g.duan IN k.tenduan) (tuple_cat(O(QuanLy),O(DuAn))))

Vậy ta xét lại ví dụ 2.4 Ta có trật tự các bƣớc ƣớc lƣợng siêu cạnh nhƣ sau:

Bƣớc Biểu thức đại số đối tƣợng

(1) O(QuanLy) = (g.g.luongCB  10.000.000)(QuanLy) (2) O(DuAn) = π(k.tenduan)((k.chiphi  200.000.000)(DuAn)))

(3) Lop_dan_xuat(QuanLy, DuAn)

= π (g.hoten)(πV((g.duan IN k.tenduan)(tuple_cat(O(QuanLy),O(DuAn)))))

Bảng 2.4. Kết quả ước lượng khi áp dụng thuật toán 2.5 Tinh chỉnh siêu đồ thị của ví dụ 2.4 (adsbygoogle = window.adsbygoogle || []).push({});

Tƣơng tự, ta thấy Bảng 2.4 giảm hai bƣớc thực hiện so với Bảng 2.3.

2.3. Kết luận

Tối ƣu hóa truy vấn hƣớng đối tƣợng đƣợc xây dựng dựa trên các phƣơng án tiếp cận khác nhau nhƣ phƣơng pháp: tối ƣu hóa dựa trên ƣớc lƣợng chi phí xử lý truy vấn, tối ƣu hóa biểu thức đƣờng dẫn trong truy vấn đối tƣợng, các phƣơng pháp phân tách ngang dọc các lớp đối tƣợng, .... Trong phạm vi luận văn, tôi chỉ tập trung nghiên cứu phƣơng pháp tối ƣu hóa truy vấn đối tƣợng đƣợc phát triển từ cách tiếp cận siêu đồ thị đƣợc Ullman J.D [12] và Han [16] đề xuất để giải quyết cho lớp các truy vấn đối tƣợng lồng (với ngôn ngữ truy vấn OQL). Thuật toán ƣớc lƣợng trên siêu cạnh đối tƣợng có chi phí xử lý truy vấn hiệu quả hơn so với phƣơng pháp biến đổi biểu thức đại số đối tƣợng và phƣơng pháp tối ƣu biểu thức đƣờng dẫn. Mặt khác, việc sử dụng ký pháp siêu đồ thị đối tƣợng có thể biểu diễn và tối ƣu cho một lớp các truy vấn trên các đối tƣợng phức. Vấn đề xây dựng thuật toán tổng quát để rút gọn siêu đồ thị đối tƣợng nhằm xác định lớp kết quả các công việc mà một câu truy vấn đƣợc tối ƣu phải thực hiện.

Chƣơng 3

CHƢƠNG TRÌNH CÀI ĐẶT THUẬT TOÁN TỐI ƢU HÓA TRUY VẤN

Một phần của tài liệu TỐi ưu HÓA TRUY VẤN CƠ SỞ DỮ LIỆU Hướng ĐỐI TưỢNG (Trang 47)