Tải bản đầy đủ (.pdf) (27 trang)

Truy vấn và tối ưu hoá truy vấn trong cơ sở dữ liệu hướng đối tượng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (788.16 KB, 27 trang )


BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN KHOA HỌC VÀ CÔNG NGHỆ VIỆT NAM
VIỆN CÔNG NGHỆ THÔNG TIN



HOÀNG BẢO HÙNG



TRUY VẤN
VÀ TỐI ƯU HOÁ TRUY VẤN TRONG
CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG

Chuyên ngành: Bảo đảm toán học cho máy tính và
hệ thống tính toán
Mã số: 62 46 35 01


TÓM TẮT LUẬN ÁN TIẾN SĨ TOÁN HỌC






HÀ NỘI – 2007



Công trình được hoàn thành tại:


Viện Công nghệ thông tin
Viện Khoa học và Công nghệ Việt Nam

Người hướng dẫn khoa học: PGS.TS Đoàn Văn Ban
PGS.TS Lê Mạnh Thạnh


Phản biện 1: GS.TS Đặng Huy Ruận – Trường ĐH Khoa học Tự nhiên,
Đại học Quốc gia Hà Nội.

Phản biện 2: PGS.TS Nguyễn Quốc Toản – Trường Đại học Công nghệ,
Đại học Quốc gia Hà Nội.

Phản biện 3: PGS.TS Đặng Văn Chuyết – Trường Đại học Bách khoa
Hà Nội.

Luận án sẽ được bảo vệ trước Hội đồng chấm luận án cấp Nhà nước
họp tại: Hội trường Viện Công nghệ thông tin, Viện Khoa học và
Công nghệ Việt Nam.
Vào hồi 15 giờ 00 ngày 12 tháng 10 năm 2007

Có thể tìm hiểu luận án tại: Thư viện Quốc gia
Thư viện Viện Công nghệ thông tin



CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ LIÊN QUAN ĐẾN LUẬN ÁN

1. Lê Mạnh Thạnh, Hoàng Bảo Hùng (2001), “Ngôn ngữ truy vấn hướng
đối tượng và tối ưu hoá truy vấn trên CSDL hướng đối tượng bằng

phương pháp biến đổi đại số”, Kỷ yếu Hội nghị khoa học kỷ niệm 25
năm thành lập Viện Công nghệ thông tin, Hà nội, tr. 175–185.
2. Lê Mạnh Thạnh, Hoàng Bảo Hùng (2002), “Một phương pháp chuyển
đổi dữ li
ệu từ cơ sở dữ liệu quan hệ sang cơ sở dữ liệu hướng đối
tượng”, Tạp chí khoa học, (11), Đại học Huế, tr. 35–44.
3. Đoàn Văn Ban, Lê Mạnh Thạnh và Hoàng Bảo Hùng (2004), “Sự
tương đương trong biểu diễn giữa ngôn ngữ truy vấn OQL và đại số đối
tượng”, Tạp chí Tin học và Điều khiển học, 20(3), tr. 257–269.
4. Lê Mạnh Thạnh, Đoàn V
ăn Ban và Hoàng Bảo Hùng (2004), “Sử dụng
kỹ thuật lưu trữ quan hệ lồng trong thiết kế cơ sở dữ liệu vật lý cho hệ
thống cơ sở dữ liệu hướng đối tượng”, Kỷ yếu Hội thảo khoa học Quốc
gia, lần thứ nhất, Nghiên cứu cơ bản và ứng dụng Công nghệ thông tin
(FAIR), Nhà xuất bản Khoa học và Kỹ thuật, Hà nội, tr. 305–314.
5.
Lê Mạnh Thạnh, Đoàn Văn Ban, Hoàng Bảo Hùng (2005), “Phương
pháp ước lượng các truy vấn lồng trong cơ sở dữ liệu hướng đối tượng
bằng siêu đồ thị kết nối”, Chuyên san Tạp chí Bưu chính Viễn thông và
Công nghệ thông tin, “Các công trình nghiên cứu - Triển khai Viễn
thông và Công nghệ thông tin”, ISSN 0866-7039, 14, tr. 43–49.
6. Lê Mạnh Thạnh, Hoàng Bảo Hùng (2006), “Mô hình ước lượng chi phí
xử lý truy vấn đối tượng trong cơ sở dữ liệu hướng đố
i tượng”, Kỷ yếu
Hội thảo Quốc gia, lần thứ VIII, “Một số vấn đề chọn lọc về CNTT và
truyền thông”, chủ đề “Mã nguồn mở”, 25/8-27/8/2005, Hải Phòng,
Nhà xuất bản Khoa học và Kỹ thuật, Hà nội, tr. 568-579.


- 1 -

MỞ ĐẦU

1. Tính cấp thiết của đề tài
Lịch sử phát triển các mô hình cơ sở dữ liệu (CSDL) của các hệ thống
thông tin đã trải qua bốn thế hệ và thế hệ thứ năm của mô hình CSDL đã và
đang được phát triển mạnh trong những năm gần đây. Sự đa dạng của các
ứng dụng thực tế và các ngôn ngữ lập trình đòi hỏi một mô hình dữ liệu với
các đặc trưng phong phú và khả năng tính toán mạnh để có thể đặc tả các
đối tượng phức trong thế giới thực, điều này mở đường cho sự phát triển của
mô hình CSDL thế hệ thứ năm, là mô hình CSDL hướng đối tượng.
So với các mô hình CSDL truyền thống, việc phát triển các ngôn ngữ
CSDL trên các hệ thống hướng đối tượng được xem là một hướng nghiên
cứu quan trọng. Ngôn ngữ CSDL bao gồm ngôn ngữ
định nghĩa đối tượng,
ngôn ngữ thao tác dữ liệu, truy vấn đối tượng và ngôn ngữ điều khiển dữ
liệu. Trong đó, ngôn ngữ truy vấn đối tượng được mở rộng theo hướng kế
thừa các ngôn ngữ truy vấn thế hệ trước và bổ sung nhiều tính năng hướng
đối tượng trong từng phiên bản. Do đó, các phương pháp tối ưu hoá truy
vấn đã được đề xuấ
t trong các mô hình dữ liệu thế hệ trước có thể sẽ không
áp dụng được trên mô hình dữ liệu hướng đối tượng. Phương pháp tối ưu
hoá truy vấn đối tượng có những điểm khác biệt so với các phương pháp
truyền thống, điều này có thể nhận thấy qua các khái niệm, những tính chất
đặc trưng của mô hình dữ liệu hướng đối tượng như định danh đối tượng,
l
ớp, phân cấp lớp, sự kế thừa và nguyên lý đóng gói. Vì vậy, các kết quả
nghiên cứu trong luận án sẽ tập trung làm rõ về mặt ý nghĩa các vấn đề nảy
sinh trong quá trình tối ưu hoá truy vấn đối tượng, từ đó đề xuất các phương
pháp tối ưu trên một số lớp truy vấn trong CSDL hướng đối tượng.
2. Nội dung nghiên cứu của luận án

Luận án tiếp tục nghiên cứu về mô hình d
ữ liệu hướng đối tượng và
các vấn đề về tối ưu hoá truy vấn trong CSDL hướng đối tượng. Đối với
mô hình dữ liệu hướng đối tượng, luận án nghiên cứu các đặc trưng hướng
đối tượng trong các mô hình ODMG, ngôn ngữ truy vấn đối tượng OQL,
đại số đối tượng và mô hình chi phí xử lý truy vấn đối tượng.

- 2 -
Đối với tối ưu hoá truy vấn đối tượng, nghiên cứu biên dịch truy vấn
đối tượng trong OQL sang truy vấn quan hệ, phương pháp tối ưu hoá truy
vấn đối tượng bằng các phép biến đổi tương đương biểu thức đại số đối
tượng và cuối cùng là phương pháp tối ưu cho lớp các truy vấn lồng bằng
ký pháp siêu đồ thị kết nối đối tượng.
3. Phương pháp nghiên cứu
Sử d
ụng mô hình lưu trữ quan hệ nhúng và phương pháp biểu diễn
truy vấn bằng đồ thị tân từ để nghiên cứu chuyển đổi lược đồ hướng đối
tượng sang lược đồ quan hệ và biên dịch truy vấn đối tượng OQL sang truy
vấn quan hệ SQL.
Trong trường hợp truy vấn đối tượng không lồng, sử dụng tập luật
biến đổi các phép toán đại số đối tượng để nghiên cứu c
ải tiến phương
pháp tối ưu hoá truy vấn đối tượng dựa vào tập luật.
Đối với lớp truy vấn đối tượng lồng, sử dụng ký pháp siêu đồ thị kết
nối đối tượng để biểu diễn và nghiên cứu các thuật toán rút gọn siêu đồ thị.
4. Những kết luận mới của luận án
- Nghiên cứu mở rộng mô hình chi phí xử lý truy vấn tổng quát trong
CSDL hướng đố
i tượng.
- Đề xuất phương pháp chuyển đổi lược đồ hướng đối tượng sang lược

đồ quan hệ nhúng, cải tiến và hoàn chỉnh các thuật toán biên dịch truy vấn đối
tượng trong OQL về truy vấn quan hệ SQL.
- Mở rộng thuật toán tối ưu hoá truy vấn đối tượng dựa vào tập luật và
các quy tắc tối ưu hoá truy vấn hướng đối tượng tổng quát.
- Đề xuất khái niệm siêu đồ
thị kết nối đối tượng, sử dụng để biểu diễn
truy vấn đối tượng lồng trong OQL. Từ đó, đưa ra các thuật toán ước lượng
các siêu cạnh và thu gọn siêu đồ thị kết nối.
- Xây dựng không gian tìm kiếm của truy vấn đối tượng dựa trên siêu đồ
thị kết nối đối tượng và xác định giá trị của tổng số các phương án thực thi
truy vấn trong không gian tìm kiế
m.
5. Bố cục của luận án
Luận án gồm phần mở đầu, ba chương nội dung và phần kết luận.
Chương 1 giới thiệu các khái niệm cơ bản trong mô hình dữ liệu hướng
đối tượng. Sau đó, mở rộng ngữ nghĩa của mô hình dữ liệu với các khái niệm

- 3 -
về đối tượng phức hợp và phiên bản lược đồ. Cuối cùng là giao diện cơ sở
của mô hình dữ liệu hướng đối tượng.
Chương 2 trình bày ngôn ngữ truy vấn đối tượng OQL. Nghiên cứu và
mở rộng mô hình chi phí xử lý truy vấn tổng quát trên các lớp sưu tập.
Chương 3 trình bày các kết quả đạt được trong quá trình nghiên cứu
về phương pháp tối ưu hoá truy vấn đối tượng.

NỘI DUNG LUẬN ÁN
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN TRONG
CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG
Chương 1 trình bày những kiến thức nền tảng của mô hình dữ liệu
hướng đối tượng như định danh đối tượng, kiểu/lớp, lược đồ, phân cấp lớp

và mối quan hệ kế thừa, phương thức và nguyên lý đóng gói, …v.v. Sau đó,
xem xét sự mở rộng ngữ nghĩa của mô hình dữ liệu hướng đối tượng qua
các khái niệm về đối tượng phức hợp và phiên bản l
ược đồ. Phần cuối
chương giới thiệu giao diện cơ sở gồm ngôn ngữ con định nghĩa dữ liệu,
thao tác dữ liệu và điều khiển dữ liệu.

CHƯƠNG 2: NGÔN NGỮ TRUY VẤN ĐỐI TƯỢNG
VÀ ĐẠI SỐ ĐỐI TƯỢNG
Mục đích chính của chương 2 là tìm hiểu ngôn ngữ truy vấn đối tượng
OQL, ngôn ngữ được sử dụng để thiết lập các truy vấn trong chương 3 và
là công cụ để nghiên cứu một số vấn đề về tối ưu hoá truy vấn trong CSDL
hướng đối tượng. Phân tích và mở rộng mô hình chi phí xử lý truy vấn
tổng quát.
2.1. Ngôn ngữ truy vấn đối tượng OQL
Ngôn ngữ truy vấn đối tượng OQL (O
bject Query Language) là ngôn
ngữ truy vấn CSDL hướng đối tượng đã đề xuất trong ODMG-93.



- 4 -
2.1.1. Kiểu và lược đồ suy dẫn kiểu trong ngôn ngữ truy vấn OQL
Hệ thống các kiểu dữ liệu nguyên thuỷ và các kiểu dữ liệu suy dẫn gắn
với phân cấp kiểu được giới thiệu trong hình 2.3. Trên cây phân cấp, các
kiểu tổng quát là các nút nằm ở nút nhánh trên cây, các kiểu này sẽ không
được sử dụng trong các lược đồ CSDL. Tất cả các nút lá trong hình 2.3 là
các kiểu đặc trưng, chúng được suy dẫn từ các kiểu cơ sở
.


Hình 2.3. Sự phân cấp các kiểu trong OQL
2.1.2. Truy vấn
select … from … where
Cú pháp của khối lệnh trọng tâm
select trong OQL là:

select [distinct] <Danh sách kết quả>

from <Danh sách lớp/sưu tập lớp>
where <Biểu thức điều kiện>
[
group by <Các thuộc tính phân nhóm>]
[
having <Điều kiện lọc>]
[
order by (<Khoá sắp xếp> asc|desc, …)]
2.1.3. Đại số đối tượng
2.1.3.1. Phép toán đối tượng: chiếu lấy định danh (π
o
), chiếu lấy giá trị (π
V
)
và chiếu lấy đối tượng (π
D
).
2.1.3.2. Phép toán bộ: thiết lập bộ: tuple(a
1
: v
1
, … , a

n
: v
n
), chiếu bộ (π
(Attrs)
),
Trích xuất giá trị thuộc tính (π
Attr
) và ghép bộ (tuple_cat).
2.1.3.3. Phép toán tập hợp: thiết lập tập hợp (
set( ) hoặc {}), hợp của hai
tập hợp (
set_union), hiệu của hai tập hợp (set_diff), chọn trên tập hợp (σ
s
λs.f
),
làm phẳng tập (
set_flat) và áp dụng hàm trên tập (set_apply
λs.e
).

- 5 -
2.1.3.4. Phép toán trên kiểu “túi”: thiết lập, hợp, hiệu, chọn, làm phẳng,
áp dụng hàm trên bag:
bag, bag_union, bag_diff, σ
b
λs.f
, bag_flat, bag_apply

bagtoset (chuyển đổi ‘túi”về tập).

2.1.3.5. Phép toán trên danh sách: thiết lập danh sách, lấy phần tử đầu
tiên, lấy phần tử cuối cùng, ghép danh sách, chọn, làm phẳng, áp dụng hàm
trên danh sách:
list, first, last, list_cat, σ
l
λs.f
, list_flat, list_apply
λs.e
.
2.1.3.6. Phép toán trên mảng: thiết lập mảng, ghép mảng, áp dụng, trích
xuất phần tử và chiếu mảng:
array, array_cat, array_apply
λs.e
, π
i
và π
i,j
, j > i.
2.2. Một số nhận xét về ngôn ngữ truy vấn đối tượng OQL
Bảng 2.1 đưa ra một số các đặc trưng của ngôn ngữ truy vấn đối tượng
OQL, là cơ sở lựa chọn ngôn ngữ truy vấn cho các phương pháp tối ưu hoá
truy vấn đối tượng trong chương 3.
Bảng 2.1. Ngôn ngữ truy vấn đối tượng OQL
Ngôn ngữ truy vấn
Tiêu chuẩn
ODMG/OQL
Hỗ trợ các kiểu người dùng định nghĩa Có
Kiểu: Tập hợp, đa tập, bộ, mảng, thuộc tính tham chiếu Có
Kiểu sưu tập: bag, list, đa sưu tập Có
Hằng null

nil
Định nghĩa kiểu/lớp
Khai báo tách rời kiểu/lớp
với các lớp thể hiện
Hỗ trợ quan hệ ISA Có
Hỗ trợ quan hệ bộ phận (part_of) Có
Hỗ trợ đa kế thừa Có
Hỗ trợ khái niệm phiên bản Có
Hỗ trợ các giao dịch thời hiệu dài Có
Hỗ trợ tính năng lặp dữ liệu (bản sao) Có
Các thuộc tính của đối tượng được định nghĩa trong các
ngôn ngữ lập trình
C, C++, JAVA,
Smalltalk, Active X

Phương thức
Phương thức thuộc tính suy
dẫn và phương thức tân từ
Các phương thức được lưu trữ cùng đối tượng trong
CSDL
Các phương thức được
lưu trữ ở Client
Các phương thức của đối tượng được định nghĩa bằng
ngôn ngữ lập trình
C, C++, JAVA,
Smalltalk, Active X
MÔ HÌNH CHUẨN
Hỗ trợ ngôn ngữ định nghĩa đối tượng Có
Hỗ trợ ngôn ngữ truy vấn đối tượng Có



- 6 -
Ngôn ngữ truy vấn
Tiêu chuẩn
ODMG/OQL
Hỗ trợ liên kết ODMG C++ Có
Hỗ trợ SQL chuẩn trong chế độ tương tác Có
Hỗ trợ SQL chuẩn trong mô hình nhúng Có
Hỗ trợ ngôn ngữ CSDL dựa trên SQL Có
TRUY VẤN
Hỗ trợ các truy vấn với GUI Có
Hỗ trợ các truy vấn với ngôn ngữ thế hệ thứ tư
(4GL)

Hỗ trợ các truy vấn với ngôn ngữ hướng đối tượng
(C++)

Cho phép cập nhật lược đồ CSDL Có
Lượng từ lôgíc forall, forsome
Lượng từ trên kiểu sưu tập Không
ĐẠI SỐ ĐỐI TƯỢNG
Tập phép toán đại số đối tượng
phép toán đối tượng, bộ, tập
hợp, “túi”, danh sách và mảng
Các toán tử kiểu sưu tập listtoset, element, flatten
Tập luật biến đổi đại số đối tượng Có
2.3. Mô hình ước lượng chi phí xử lý truy vấn

Phần này phân tích mô hình chi phí xử lý truy vấn tổng quát trên các
lớp. Mô hình được sử dụng để ước lượng chi phí xử lý của truy vấn đối

tượng trong tiến trình tối ưu hoá truy vấn.
2.3.1. Mô hình chi phí các khối dựng sẵn
Tổng chi phí của tiến trình xử lý truy vấn được tính với công thức:
Total_cost = IO_cost + CPU_cost
trong đó, IO_cost là chi phí vào/ra của đĩa và CPU_cost là chi phí tính toán
trong tiến trình xử lý truy vấn. Luận án tập trung nghiên cứu trên chi phí
IO_cost và bỏ qua chi phí CPU_cost.
2.3.2. Các yế
u tố chi phí cơ sở
2.3.2.1. Ước lượng số các trang cho một lớp sưu tập
Tổng số trang lưu trữ cho một lớp c với kích thước đối tượng SC và
lực lượng
c
được tính với công thức:






×
=
PS
SCc
c
(2.1)
với PS là kích thước trang bộ nhớ dùng cho hệ thống CSDL hướng đối tượng.


- 7 -

2.3.2.2. Ước lượng số trang truy xuất để chọn các bản ghi một cách ngẫu nhiên
Định lý 2.1. (Định lý Yao) Cho n bản ghi cùng kiểu được nhóm vào m
trang (1 < m ≤ n), mỗi trang chứa n/m bản ghi. Nếu k bản ghi (k ≤ n – n/m)
được chọn một cách ngẫu nhiên từ n bản ghi, thì số các trang truy xuất là:







+−
+−
−×=

=
k
i
in
ind
mkmnYao
1
1
1
1),,(
, với
m
d
1
1−=

(2.2)
Áp dụng hàm Yao vào CSDL hướng đối tượng, ta có giá trị của các tham
số n, m, k là:
cmcn == , và
cSELk ×=
(SEL là số các đối tượng được chọn
thoả điều kiện trên lớp hiện thời c), lúc đó công thức (2.2) trở thành:









+−
+−×
−×=×

=
k
i
ic
idc
ccSELccYao
1
1
1
1),,(

, với
c
d
1
1−=
(2.3)
Ngoài ra, nếu c là một sưu tập gộp nhóm, công thức (2.2) không thể
sử dụng để ước lượng các trang truy xuất, vì sưu tập gộp nhóm c có nhiều
hơn một phân mảnh, các đối tượng được gộp nhóm với nhau từ các sưu tập
khác nhau, trong đó vẫn tồn tại một số đối tượng được lưu trữ riêng lẻ.
Trong trường hợp này, công thức ước lượng số
trang truy xuất được sử
dụng trong định lý 2.2.
Định lý 2.2. (Định lý Yao’) Cho sưu tập c có p phân mảnh, mỗi phân
mảnh có
i
c đối tượng. Nếu k đối tượng (

=
<
p
i
i
ck
1
) được chọn từ c một
cách ngẫu nhiên thì số các trang được truy xuất là:

()


=
=
p
i
iii
kccYaokcYao
1
,,),('
(2.4)
với k
i
là số các đối tượng được chọn trong phân mảnh c
i
.
Nếu số các đối tượng được chọn lấy giống nhau giữa các phân mảnh
thì
k
c
c
k
i
i
×=
. Ngược lại, nếu số các đối tượng chọn không giống nhau
giữa các phân mảnh khác nhau thì phải xác định chính xác giá trị của mỗi k
i
trên mỗi phân mảnh dựa vào mật độ của các đối tượng trong mỗi phân
mảnh. Công thức (2.2) là một trường hợp đặc biệt của (2.4) khi sưu tập c chỉ
có một phân mảnh.
Mặt khác, công thức (2.2) chỉ áp dụng được khi m ≤ n, tức là khi kích

thước đối tượng là nhỏ hơn hoặc bằng kích thước của trang. Đối với kích

- 8 -
thước đối tượng lớn hơn kích thước trang, số các trang được ước lượng
bằng:


=
=
×
p
i
i
p
i
i
c
k
c
1
1
. Vì vậy, hàm Y được định nghĩa như sau:
()










×
=



=
=
=
p
i
i
p
i
i
p
i
iii
c
k
c
kccYao
kcY
1
1
1
,,
),(
(2.5)

Như vậy, từ tính chất (2.5) của hàm Y và công thức (2.4), định lý 2.2
được mở rộng như sau:
Định lý 2.3
: [6]
*
Cho sưu tập c có p phân mảnh, mỗi phân mảnh có
i
c
đối
tượng. Nếu k đối tượng (

=
<
p
i
i
ck
1
) được chọn từ c một cách ngẫu nhiên thì số
các trang được truy xuất là:
),(),(' kcYkcYao
=
, k
i
là số các đối tượng được
chọn trong phân mảnh c
i
.
2.3.3. Chi phí xử lý truy vấn trên các lớp
Việc phân tích tổng chi phí IO_Cost được thực hiện theo ba thành

phần là chi phí nạp của lớp sưu tập (IO_Load), chi phí ước lượng tân từ
(IO_Eval) và chi phí kết xuất kết quả (IO_Build) được xem xét trong hai
trường hợp: giả thiết bộ nhớ xử lý đủ lớn và bộ nhớ nhỏ.

CHƯƠNG 3:
TỐI ƯU HOÁ TRUY VẤN ĐỐI TƯỢNG
TRONG CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG

3.1. Đặt vấn đề
Các phương án thực thi truy vấn đều có kết quả cuối cùng là tương
đương nhưng khác nhau trong chi phí thực hiện. Vấn đề phải quan tâm là
làm sao cực tiểu tần suất sử dụng của CPU, bộ nhớ, chi phí vào/ra và các
nguồn tài nguyên về lĩnh vực truyền thông. Một số phương pháp tối ưu hoá
truy vấn đối tượng được đưa ra trong luận án cũng tiếp cận theo hướng làm
c
ực tiểu chi phí xử lý vào/ra khi một truy vấn được thực thi. Các phương
pháp được trình bày trên cơ sở của mô hình dữ liệu ODMG93 và ngôn ngữ
truy vấn đối tượng OQL, nhưng không mất tính tổng quát đối với các mô
hình dữ liệu hướng đối tượng có hỗ trợ các đặc trưng này.


*
Chỉ số của các trích dẫn từ danh mục “Các công trình đã công bố liên quan đến luận án”
Với kích thước đối tượn
g
≤ kích thước tran
g

Với kích thước đối
t

ượn
g
> kích thước tran
g


- 9 -
3.2. Chuyển đổi lược đồ hướng đối tượng sang lược đồ quan hệ nhúng [2], [4]
3.2.1. Tiến trình tổng quát
Quy trình thực hiện tối ưu hoá truy vấn đối tượng OQL bằng phương
pháp chuyển đổi lược đồ và biên dịch truy vấn như sau:
Bước 1
: Chuyển đổi lược đồ hướng đối tượng sang lược đồ quan hệ nhúng
Bước 2
: Biên dịch các câu truy vấn đối tượng OQL trên CSDL hướng
đối tượng sang truy vấn quan hệ SQL
Bước 3
: Tối ưu hoá truy vấn quan hệ SQL (ở bước 2) bằng các
phương pháp truyền thống.
3.2.2. Chuyển đổi lược đồ CSDL hướng đối tượng sang lược đồ
quan hệ nhúng
Trước hết, một số định nghĩa liên quan về quan hệ nhúng được giới
thiệu như sau.
Định nghĩa 3.1. Quan hệ nhúng được biểu diễn hình thức như sau:
<TênQuanHệ>(a
1
, …, a
n
, R
1

, …, R
m
)
trong đó, a
i
(i = 1,…,n) là các thuộc tính có giá trị nguyên thuỷ, R
j
(j = 1,…,m)
là các quan hệ có dạng: R
j
= <TênQuanHệ>(b
1
, …, b
k
, R
jl
).
Định nghĩa 3.2. Cho trước một quan hệ R. Thuộc tính định danh bộ (TID)
là địa chỉ tham chiếu của R-bộ, được ký hiệu là &R. Định danh đối tượng
duy nhất (OID) là giá trị được dùng để xác định duy nhất đối tượng, do hệ
thống tạo lập, được ký hiệu là #R.
Thuộc tính &R là một thuộc tính của quan hệ nhúng R hoặc là thuộc
tính (lưu trữ) trong một quan hệ khác (với vai trò là trường liên kế
t để mô
tả việc lưu trữ các bộ chứa một tham chiếu đến một R-bộ).
Ví dụ 3.3. Cho các lớp
SinhVien và NhanSu như trong ví dụ 3.2
Lúc đó, quan hệ
SinhVien được khởi tạo như sau:


Hình 3.1. Biểu diễn quan hệ
SinhVien dưới dạng cây


- 10 -
3.2.2.1. Đặc tả các tham chiếu đối tượng và chỉ mục kết nối
Giả sử hai quan hệ R và S quan hệ với nhau qua tân từ P, các lược đồ
quan hệ nhúng được mô tả như sau:
Lớp không chứa quan hệ kế thừa: Các quan hệ R và S được lưu trữ
một cách độc lập:
R (#R, các thuộc tính )
S (#S, các thuộc tính )
Tham chiếu nhúng: Giả sử mỗi R-bộ có quan hệ với nhiều nhất là một
S-bộ, ta sẽ lưu trữ địa chỉ của S-bộ với mỗi R-bộ tương ứng. Tức là, trong
phép chèn vào R-bộ, tân từ P được định giá trên quan hệ S đối với R-bộ đó,
tìm S-bộ tương ứng và lưu trữ các địa chỉ
vật lý của nó (&S), hoặc định
danh đối tượng duy nhất của nó (#S), hoặc cả hai trong R-bộ.
S(S#, các thuộc tính )
và R(#R, #S, các thuộc tính )
hoặc R(#R, &S, các thuộc tính )
hoặc R(#R, #S, &S, các thuộc tính )
Trong trường hợp tân từ P là một hàm có kiểu đối tượng, thực hiện việc tổ
chức lưu trữ ít nhất là định danh đối tượng duy nhất của đối tượng tham chiếu.
Tham chiếu nhúng kiểu tập: Tương tự, nếu một R-bộ có quan hệ nhiều
hơn một S-bộ, ta có thể lưu trữ một tập các tham chiếu (OID và/hoặc TID)
đối với mỗi
R-bộ trong một quan hệ con nhúng SRef.
S(S#, các thuộc tính )
và R(#R, SRef(#S), các thuộc tính )

hoặc R(#R, SRef(&S), các thuộc tính )
hoặc R(#R, SRef(#S, &S), các thuộc tính )
Chỉ mục kết nối: Các con trỏ liên kết các đối tượng liên quan cũng được
lưu trữ thành các quan hệ riêng biệt đối với các đối tượng – bộ, hai quan hệ
JI1 và JI2 là các quan hệ lưu trữ các chỉ mục kết nối giữa quan hệ R và S:
R(#R, một vài thuộc tính )
S(#S, một vài thuộc tính )
JI1(&R, SRef(&S))
và JI2(&S, SRef(&R))


- 11 -
3.2.2.2. Chuyển đổi các thành phần trong CSDL hướng đối tượng
Quá trình ánh xạ các lược đồ CSDL hướng đối tượng từ mức khái
niệm lên các quan hệ nhúng sẽ được tiến hành qua các khái niệm cơ sở của
mô hình đối tượng.
a. Đối tượng
Một đối tượng được đặc tả bằng một định danh duy nhất và được khởi
tạo bởi hệ thống. Mọi dữ liệu liên quan đến
đối tượng sẽ tham chiếu đến
định danh này. Giả sử kiểu đối tượng là T thì các quan hệ nhúng chứa định
danh đối tượng duy nhất của các đối tượng có kiểu T là #T.
b. Phương thức của lớp
Về mặt nguyên lý, có thể biểu diễn một phương thức như là một
quan hệ nhị nguyên. Vì vậy, hàm đơn trị f
s
: T
1
→ T
2

và hàm đa trị
f
m
: T
1
→ set(T
3
) được biểu diễn bằng hai quan hệ nhị nguyên tương ứng
như sau:
f
s
(#T
1
, #T
2
) và f
m
(#T
1
, T
3
Ref(#T
3
)).
Tham chiếu lôgic và tham chiếu vật lý: Hàm cho kết quả là một đối
tượng (tập đối tượng) trở thành các quan hệ 3 - thuộc tính và các hàm đa trị
trở thành các quan hệ có chứa các quan hệ con. Quan hệ có chứa các tham
chiếu vật lý đối với hai hàm f
s
và f

m
, sẽ cho kết quả như sau:
T
1
(#T
1
, f
s
#, f
s
&, f
m
#Set(#T
3
, &T
3
))
c. Kiểu, lớp và sự kế thừa
Xét phân cấp giữa các kiểu (cấu trúc, sự kế thừa phương thức) và phân
cấp giữa các lớp (mối quan hệ bao hàm).
Kiểu: Mỗi kiểu đối tượng T được ánh xạ đến một kiểu bảng T’ chứa ít
nhất một thuộc tính #T. Các thuộc tính bổ sung trong bảng T’ do các hàm
(phương thức) đóng gói trong kiểu T và các hàm tr
ả về T - đối tượng.
Lớp: Mỗi lớp c được chuyển đổi thành một khung nhìn trên cơ sở
kiểu bảng. Nếu lớp được định nghĩa với một lượng từ “forall”, lượng từ
này được dùng như điều kiện lựa chọn trên lớp. Nếu lớp có một số đối
tượng thành viên được xác định bởi “forsome” thì kiể
u bảng cơ sở được
mở rộng bằng một thuộc tính lôgic B có giá trị true nếu và chỉ nếu đối

tượng là một thành viên của lớp c.
Sự kế thừa: Lớp con được chuyển đổi tương ứng với một kiểu bảng.



- 12 -
3.2.2.3. Thuật toán chuyển đổi lược đồ đối tượng sang lược đồ quan hệ nhúng
Giả sử lược đồ đối tượng được biểu diễn thành dãy S = (s
1
, s
2
, …, s
n
), s
i

là các lớp trong lược đồ.
Thuật toán 3.1: Chuyển đổi lược đồ đối tượng sang lược đồ quan hệ nhúng
Vào: Lược đồ đối tượng S = (s
1
, s
2
, …, s
n
)
Ra: Lược đồ quan hệ nhúng NR.
Phương pháp:
(1) Khởi tạo NR := ∅
(2) for mỗi s
i

∈ S do
(3) if s
i
là siêu lớp gốc then
(4) Khởi tạo quan hệ r chứa các thuộc tính có giá trị nguyên thuỷ trong s
i

(5) Bổ sung thuộc tính #s
i
vào r
(6) NR := NR ∪ r
(7) else if s
i
là lớp có kế thừa từ các siêu lớp s
j
then
(8) Khởi tạo quan hệ nhúng r
i
:= ∅
(9) for mỗi siêu lớp s
j
do
(10) Tạo quan hệ con r
j
chứa các thuộc tính của lớp s
j

(11) Bổ sung thuộc tính #s
j
vào r

j

(12) Bổ sung r
j
vào r
i

(13) for mỗi thuộc tính s
i
.a
k
∈ s
i
do
(14) if a
k
là định danh đối tượng then
(15) Bổ sung thuộc tính #s
i
vào r
i

(16) if (a
k
là thuộc tính đơn trị, có giá trị nguyên thuỷ) then
(17) Bổ sung thuộc tính a
k
tương ứng trong quan hệ r
i


(18) else if a
k
là thuộc tính đa trị then
(19) Tạo quan hệ con r
i
’ tương ứng với a
k

(20) Bổ sung thuộc tính #a
k
trong r
i

(21) Bổ sung r
i
’ vào r
i

(22) else if a
k
là các thuộc tính tham chiếu then
(23) if (a
k
là tham chiếu nhúng kiểu tập đến lớp s
l
) then
(24) Tạo quan hệ con a
k
Ref(#s
l

, &s
l
)
(25) Bổ sung quan hệ a
k
Ref vào quan hệ r
i

(26) else Bổ sung hai thuộc tính {#s
l
, &s
l
} vào r
i

(27) NR := NR ∪ r
i


- 13 -
Thuật toán 3.1 tập trung xử lý trên các lớp chứa các thuộc tính đa trị, các
tham chiếu (không tạo thành chu trình) và mối quan hệ kế thừa giữa các lớp.
Thuật toán cho kết quả là lược đồ quan hệ nhúng của lược đồ đối tượng. Gọi
n là số các lớp trong lược đồ đối tượng, k là số thuộc tính trong mỗi lớp s
i

m = max(n, k) thì độ phức tạp tính toán của thuật toán 3.1 là O(m
3
).
Đối với các phương thức của lớp, thực hiện chuyển đổi chúng thành

các quan hệ nhị nguyên, được lưu trữ độc lập và có liên kết đến lớp qua các
tham chiếu lôgic (tham chiếu vật lý).
Thuật toán 3.2: Chuyển đổi phương thức của lớp
Vào: Lược đồ đối tượng S(s
1
, s
2
, …, s
n
) và Lược đồ quan hệ nhúng NR(r
1
, r
2
, …, r
j
)
Ra: Lược đồ quan hệ nhúng NR.
Phương pháp:
(1) for mỗi lớp s
i
∈ S do
(2) for mỗi phương thức f
k
của lớp s
i
do
(3) if f
k
là hàm đơn trị then // Hàm đơn trị f
k

: T
1
→ T
2
(4) Tạo quan hệ f
k
(#T
1
, #T
2
)
(5) Bổ sung các thuộc tính {f
k
#, f
k
&} vào quan hệ r
k

(6) else Tạo quan hệ f
k
(#T
1
, T
3
Ref(#T
3
)) // Hàm đa trị f
k
: T
1

→ set(T
3
)
(7) Bổ sung quan hệ f
k
#Set(#T
3
, &T
3
) vào r
k
(8) Bổ sung f
k
vào NR
3.3. Biên dịch các truy vấn đối tượng OQL thành các truy vấn
quan hệ SQL

Trong phần này, xây dựng các thuật toán biên dịch các mệnh đề select và
mệnh đề
from. Sau đó, mệnh đề where của truy vấn OQL được biên dịch thành
mệnh đề
where quan hệ, sử dụng khái niệm đồ thị tân từ.
Lược đồ đối tượng S được biểu diễn hình thức là S = (s
1
, …, s
n
), s
i
là các
lớp trong S và truy vấn đối tượng QE = (s

1
, …, s
m
, Res, p
1
, …, p
k
), với s
i
∈ S
(i = 1,…, m) là các lớp tham gia truy vấn, Res là lớp/kiểu kết quả của truy vấn
và p
j
(j = 1, …, k) là các biểu thức điều kiện ở mệnh đề where.
3.3.1. Biên dịch mệnh đề
select trong OQL sang mệnh đề select của SQL
Thuật toán 3.3: Biên dịch mệnh đề
select từ OQL sang SQL.
Vào: Mệnh đề
select của truy vấn đối tượng (Res)
Ra: Truy vấn quan hệ SQL.

- 14 -
Phương pháp:
//Res là lớp kết quả của truy vấn; r là quan hệ được chuyển đổi tương ứng từ Res
(1) for mỗi thuộc tính kết quả a ∈ Res do
(2) if a là định danh đối tượng then
(3) a được thay bằng #r // a được xem như khoá của quan hệ r
(4) else if a là thuộc tính đơn trị
then

(5) c.a được thay bằng r.a
(6) if a là thuộc tính tập then
(7) - Khởi tạo quan hệ s với thuộc tính a // #s là khoá của s
(8) - Bổ sung khoá liên kết #s vào r
(9) - Bổ sung s vào mệnh đề
from của truy vấn quan hệ
(nếu nó chưa tồn tại)
(10) - Bổ sung r.#r = s.#s vào mệnh đề
where của SQL
3.3.2. Biên dịch mệnh đề
from của truy vấn OQL sang mệnh đề from
trong SQL
Việc chuyển đổi mệnh đề
from của OQL, chính là chuyển đổi các lớp tham
gia truy vấn đối tượng sang các quan hệ ở mệnh đề
from của truy vấn quan hệ.
Thuật toán 3.4: Biên dịch mệnh đề
from của OQL sang SQL
Vào: Truy vấn đối tượng QE = (s
1
, …, s
m
, R, p
1
, …, p
l
)
Ra: Tập các quan hệ FR = {r
1
, …, r

k
} (k ≥ m) ở mệnh đề from của truy vấn SQL.
Phương pháp:
(1) FR := ∅ // Chứa tập các quan hệ được chuyển đổi từ mệnh đề
from của OQL
(2) V := (s
1
, …, s
m
)
(3) for mỗi lớp s
i
∈ V do
(4) if (s
i
là siêu lớp gốc) then
(5) Bổ sung thuộc tính #s
i
vào r
i

(6) Tạo quan hệ r
i
có tập các thuộc tính tương ứng của s
i

(7) else for (mỗi lớp s
j
là siêu lớp của s
i

) do
(8) Tạo quan hệ con tạm thời r
j
có các thuộc tính từ lớp kế thừa s
j

(9) Bổ sung thuộc tính #s
j
vào r
j

(10) Tạo quan hệ r
i
từ các quan hệ con r
j

(11) FR := FR ∪ r
i


- 15 -
Các thuật toán 3.3 và 3.4 dừng sau một số hữu hạn bước, vì tập các
thuộc tính và các lớp tham gia trong mệnh đề
select, from là hữu hạn. Độ
phức tạp tính toán của các thuật toán có thời gian đa thức.
3.3.3. Biên dịch mệnh đề
where của truy vấn OQL sang mệnh đề where
của truy vấn quan hệ SQL
Bước 1
: Khởi lập đồ thị tân từ hướng đối tượng (OPG) từ mệnh đề where

của truy vấn đối tượng (Mục 3.3.3.1 – Các luật từ R1 – R3).
Bước 2
: Đồ thị tân từ hướng đối tượng được biên dịch thành đồ thị tân
từ quan hệ (RPG) (Mục 3.3.3.2 - Thuật toán 3.5).
Bước 3
: Mệnh đề where của truy vấn quan hệ được tạo lập từ đồ thị tân
từ quan hệ ở bước thứ hai (Mục 3.3.3.3 - Thuật toán 3.6).
3.4. Tối ưu hoá truy vấn đối tượng bằng các phép biến đổi các biểu
thức đại số đối tượng [1], [3]
3.4.1. Sự biểu diễn tương đương giữa truy vấn OQL và đại số đối tượng

Định nghĩa 3.5. Nếu E là biểu thức đại số đối tượng và Q là truy vấn đối
tượng OQL cùng xác định một tập đối tượng thì ta nói E biểu diễn Q hay Q
biểu diễn E, ta gọi E tương đương với Q, ký hiệu E

Q.
Định lý 3.1. Mọi biểu thức đại số đối tượng đều biểu diễn được bằng truy
vấn đối tượng trong OQL.
Định lý 3.2. Mọi truy vấn đối tượng trong OQL đều biểu diễn được bằng
các biểu thức đại số đối tượng.
Bổ đề 3.1. Mọi <
thphần_kiểu> đều biểu diễn được bằng các biểu thức đại
số đối tượng tương đương.
Bổ đề 3.2. Các <
kiểu/lớp> trong <mệnh_đề_from> với thành phần cuối
cùng không có chỉ số biểu diễn được bằng các biểu thức đại số đối tượng.
Bổ đề 3.3. Với mọi <
kiểu/lớp> ở <mệnh_đề_from> trong câu truy vấn
OQL luôn tồn tại một biểu thức đại số đối tượng tương đương.
Bổ đề 3.4. (<

biến_tham_chiếu>) được định nghĩa ở <mệnh_đề_from> biểu
diễn được bằng một biểu thức đại số đối tượng tương đương.
Bổ đề 3.5. Mọi <
kq_thphần> đều biểu diễn được bằng các biểu thức đại
số đối tượng tương đương.
Bổ đề 3.6. Các <
kq_đích> có thành phần cuối cùng không chứa chỉ số mảng
đều có thể chuyển đổi thành các biểu thức đại số đối tượng tương đương.

- 16 -
Bổ đề 3.7. Mọi <kq_đích> đều biểu diễn được bằng các biểu thức đại số
đối tượng tương đương.
Bổ đề 3.8. Mọi <
ds_đích> đều biểu diễn được bằng các biểu thức đại số
đối tượng tương đương.
Bổ đề 3.9. Mọi <
danh_sách_đích> luôn tồn tại biểu diễn tương đương với
biểu thức đại số đối tượng.
Bổ đề 3.10. Mọi <mệnh_đề_where> đều biểu diễn được bằng các tân từ
trong ngôn ngữ vị từ.
Bổ đề 3.11. Truy vấn đối tượng trong OQL mà không chứa từ khoá
"
distinct" và các kết nhập đều biểu diễn được bằng một biểu thức đại số
tương đương.
Bổ đề 3.12. Truy vấn đối tượng trong OQL có các hàm kết nhập nhưng
không chứa từ khoá "
distinct" được biểu diễn bằng một biểu thức đại số
tương đương.
Bổ đề 3.13. Truy vấn đối tượng trong OQL biểu diễn được bằng một biểu
thức đại số đối tượng tương đương.

Như vậy, việc viết lại một truy vấn đối tượng đã cho thành các biểu
thức đại số sử dụng tập phép toán đạ
i số đối tượng là tương đương.
3.4.2. Các luật biến đổi đại số đối tượng
Ký hiệu S, S
1
, S
2
, S
3
là các tập đối tượng; e, f, g, h là các biểu thức đại
số, phép toán op ∈ {union, diff}.
L1. Tính giao hoán của phép chọn: σ
λt.g

λs.f
(S)) = σ
λs.f

λt.g
(S))
L2. Tổ hợp các phép chọn:
σ
λs.(f∧g∧…∧h
(S) = σ
λs.f

λt.g
(…(σ
λu.h

(S))…))
L3. Dãy các phép chiếu:
)())((
)
1
()
1
()
1
(
SS
n
aa
m
bb
n
aa
π
π
π
=
, với {a
1
, , a
n
} ⊂ {b
1
, , b
m
}

L4. Giao hoán giữa phép chọn và phép chiếu

))(())((
.) () (.
11
SS
esaaaaes
nn
λλ
σππσ
=

L5. Giao hoán một phép chiếu với phép hợp, hiệu trên tập/đa tập
)( )( ) (
2)
1
(1)
1
(21)
1
(
SopSSopS
n
aa
n
aa
n
aa
π
π

π
=

L6. Phân phối phép chọn với phép hợp và phép hiệu trên tập/đa tập
σ
λs.f
(S
1
op S
2
) = σ
λs.f
(S
1
) op S
2
, nếu f chỉ liên quan với S
1
.

- 17 -
Tổng quát: σ
λs.(f∧g∧h
(S
1
op S
2
) = σ
λu.h


λs.f
(S
1
) op σ
λt.g
(S
2
)), nếu f liên quan
S
1
, g liên quan S
2
và h liên quan cả S
1
và S
2
.
L7. Giao hoán giữa phép apply và phép chọn: nếu điều kiện chọn chỉ
chứa các thuộc tính do phép toán apply trả về thì:
apply
λs.e

λt.f
(S)) = σ
λt.f
(apply
λs.e
(S))
L8. Giao hoán giữa phép làm phẳng (flat) và phép apply trên tập/đa tập:
giả sử S là thể hiện của một lớp và X là một tập thuộc tính phức của lớp.

)))((())((
))((
)(
))))((
)(
(
.
.(
SapplyflatapplySapplyflat
S
VX
setS
VXet
applys
ππλλππ
λ
λ
=
Biểu thức ở vế trái, có biểu thức e tác động trước tập các tập (thu được
bởi π
X
) sau đó làm phẳng thành một tập; biểu thức ở vế phải có phép toán
làm phẳng được tác động trước (kết quả thu được là một tập), sau đó thực
hiện phép toán apply.
L9. Tính kết hợp của phép hợp
(S
1
union S
2
) union S

3
= S
1
union (S
2
union S
3
)
L10. Các luật kế thừa đối với phép chọn và phép apply: nếu S
2
là một lớp
con của S
1
, thì thể hiện của S
2
là một tập con của thể hiện của S
1
:
σ
λs.f
(S
1
) union σ
λs.f
(S
2
) = σ
λs.f
(S
1

)
apply
λs.e
(S
1
) union apply
λs.e
(S
2
) = apply
λs.e
(S
1
)
3.4.3. Các quy tắc tối ưu hoá truy vấn đối tượng tổng quát
Tiếp theo, với tập luật biến đổi đại số đối tượng trong mục 3.4.2, các quy
tắc cho phép chọn lựa các luật thích hợp áp dụng trên biểu thức đại số đầu
vào nhằm tạo ra các bước ước lượng trên biểu thức đại số đối tượng có chi
phí xử lý thấp hơn tương đương với biểu thứ
c đã cho được đề xuất như sau:
(R1) Đưa các phép chọn, phép chiếu trên đối tượng, phép bagtoset vào
thực hiện trước các phép kết nối, tích Đề các, nhóm bộ (đối tượng)
trên các lớp theo thứ tự lần lượt.
(R2) Tổ hợp dãy các phép chọn và phép chiếu: Dãy các phép toán chọn
và chiếu có thể nhóm gộp bằng một phép chọn hoặc một phép chiếu

(A1)

(A2)
(S)) = π

(A1)
, nếu A1 ⊆ A2).
(R3) Làm phẳng các cấu trúc phức với các phép toán set_flat, bag_flat,
list_flag: chuyển các cấu trúc phức về các kiểu tập, bộ và các danh
sách với các phần tử đơn trị (lồng nhau). Phép biến đổi này loại bỏ
được các tham chiếu lồng, lặp (tự trỏ) trong các cấu trúc phức làm
giảm độ phức tạp tính toán trong quá trình xử lý truy vấn.

- 18 -
(R4) Xử lý trước các lớp sưu tập bằng các phép toán một ngôi: làm giảm
kích thước các lớp sưu tập khi tham gia kết nối hay lập nhóm.
(R5) Tính các thành phần cơ sở trong một biểu thức đại số đối tượng: Xác
định thành phần cơ sở chung nhất trên các biến vùng (thuật toán trong
bổ đề 3.11), nếu tồn tại một thành phần cơ sở chung nhất thì tính
trước các biểu th
ức con chung này, chúng được xem là đầu vào cho
các bước truy vấn tiếp theo.
3.4.4. Thuật toán tối ưu hoá truy vấn đối tượng dựa trên tập luật
Thuật toán 3.7 sẽ tập trung xử lý các phép toán chiếu, chọn, áp dụng
biểu thức đại số (set_apply) trên các kiểu đối tượng và phép toán loại bỏ
trùng lặp trên các đa tập, lớp sưu tập.
Thuật toán 3.7: Tối ưu hoá các biểu thức đại số đối tượng d
ựa trên tập luật.
Vào: Biểu thức đại số đối tượng.
Ra: Một dãy các bước ước lượng biểu thức đại số đối tượng.
Phương pháp:
(1) Khởi tạo cây phân tích cú pháp từ biểu thức đại số đối tượng.
(2) Sử dụng luật (L2) tách phép chọn σ
λ
s.(f∧g∧…∧h

(S) thành chuỗi các phép chọn:
σ
λ
s.f

λt.g
(…(σ
λu.h
(S))…))
(3) Sử dụng các luật kế thừa đối với các phép chiếu (L3), phép chọn và
phép apply (L10) tổ hợp dãy các phép chiếu, chọn thành một phép
chiếu và một phép chọn
(4) Đối với mỗi phép chọn, sử dụng các luật (L4, L6, L7, L10) “đẩy” các
phép chọn xuống các lớp thành phần hoặc “qua” các nút kết nối và
phép tạo nhóm.
(5) Đối với mỗi phép chiếu (đối tượng, tập, bộ), sử dụng luật (L3, L4, L5)
để di chuyể
n phép chiếu xuống càng sâu càng tốt. Nếu tập thuộc tính
được chiếu bao gồm tất cả các thuộc tính của biểu thức thì loại bỏ
phép chiếu đó.
(6) Sử dụng các luật (L8, L9, L10) trên các lớp sưu tập, để loại bỏ các phần
tử trùng lặp trong các lớp sưu tập; di chuyển phép làm phẳng (flat),
phép loại bỏ trùng lặp trong các đa tập (bagtoset) lên trước các phép
toán nhóm hoặc kết nối.
(7) T
ạo ra dãy các bước biến đổi để ước lượng mỗi nhóm theo một thứ tự sao
cho không có nhóm nào được ước lượng trước các nhóm con của nó.

- 19 -
Mệnh đề 3.1. Thuật toán 3.7 là đúng đắn và kết quả của thuật toán là

phương án truy vấn có chi phí thấp hơn chi phí ước lượng của biểu thức
đầu vào thuật toán.
Độ phức tạp tính toán của thuật toán 3.7 có thời gian đa thức theo kích
thước (số các biến thể) của các lớp tham gia trong biểu thức.
3.5. Tối ưu hoá truy vấn đối tượng bằng siêu đồ thị kết nối đố
i tượng [5]
Khái niệm siêu đồ thị kết nối đối tượng được đưa ra để biểu diễn các truy
vấn đối tượng trong OQL, đặc biệt là xử lý các truy vấn lồng. Từ đó, đề xuất
các thuật toán ước lượng các siêu cạnh và thuật toán thu gọn siêu đồ thị kết
nối đối tượng.
3.5.1. Siêu đồ thị kết nối đối tượng
Trước hết, khái niệ
m siêu đồ thị kết nối đối tượng được định nghĩa
một cách hình thức như sau:
Định nghĩa 3.6. Siêu đồ thị kết nối đối tượng

là một bộ sáu
H = (C
H
, V
H
, E
H
, L
H
, s
H
, lb
H
), trong đó:

(i) C
H
là tập hữu hạn các lớp tham gia trong truy vấn
(ii) V
H
là tập hữu hạn các nút
(iii) L
H
là tập hữu hạn các nhãn
(iv) E
H
= E
C
∪ E
Q
- tập các siêu cạnh (hữu hạn), trong đó E
C
, E
Q

tập các siêu cạnh biểu diễn các lớp đối tượng và các thành phần
của truy vấn.
(v) s
H
: V
H
→ E
H
là ánh xạ khởi tạo các siêu cạnh từ tập các nút
(vi) lb

H
: E
H
→ L
H
là hàm gán nhãn cho siêu cạnh, sao cho ∀ e ∈ E
H

thì lb
H
(e) ∈ L
H

Từ định nghĩa 3.6 (trong các phần sau, siêu đồ thị kết nối đối tượng
được gọi tắt là siêu đồ thị), sử dụng ký pháp siêu đồ thị để biểu diễn cho truy
vấn OQL và đưa ra các thuật toán khởi tạo siêu đồ thị như sau.
3.5.1.1. Thuật toán khởi tạo siêu đồ thị
Thuật toán 3.8: Khởi tạo siêu đồ thị của truy vấn đối tượng (không chứa
truy vấn lồng).
Vào: Lược đồ đối tượng S = (s
1
, …, s
n
)
Truy vấn đối tượng QE = (s
1
, …, s
m
, R, p
1

, …, p
k
)
Ra: Siêu đồ thị H

- 20 -
Phương pháp:
(1) SC := ∅ //tập chứa các siêu cạnh đối tượng của siêu đồ thị H
(2) V := (s
1
, …, s
m
)
(3) for s
i
∈ V do
(4) if (s
i
là siêu lớp gốc) then //không kế thừa từ các siêu lớp khác
(5) Khởi tạo siêu cạnh đối tượng e := s
H
({s
i
}) và nhãn lb
H
(e)
(6) else if (s
i
là lớp kế thừa đơn hoặc kế thừa bội) then
(7) Xử lý trường hợp xung đột về tên với các thuộc tính kế thừa

(8) Khởi tạo lớp s
i
’ chứa các thuộc tính của lớp và thuộc tính kế thừa
(9) Khởi tạo siêu cạnh đối tượng e := s
H
({s
i
’}) và gán nhãn lb
H
(e)
(10) SC := SC ∪ e
(11) Khởi tạo siêu cạnh đỉnh h := s
H
({R}) và lb
H
(h) := “head”
(12) SC := SC ∪ h
(13) SD := ∅ //tập chứa các siêu cạnh điều kiện của siêu đồ thị H
(14) for p
i
∈ (p
1
, …, p
k
) do
(15) if (p
i
có dạng (3.3) và (3.4)) then
(16) Khởi tạo siêu cạnh điều kiện f := s
H

({p
i
})
(17) SD := SD ∪ f
(18) else Gán nhãn cho nút lb
H
(e) := “= a”
(19) H := SC ∪ SD
Từ định nghĩa 3.6 dễ nhận thấy thuật toán 3.8 là đúng đắn và độ phức tạp
tính toán của thuật toán là O(n
2
), với n là số lớp tham gia trong truy vấn.
Với các bước xác lập các siêu đồ thị đơn, siêu đồ thị kết quả sẽ được
tạo từ các liên kết của các siêu đồ thị đơn với các siêu cạnh kết nhập.
Thuật toán 3.9: Khởi tạo siêu đồ thị của truy vấn lồng OQL.
Vào: Lược đồ đối tượng S = (s
1
, …, s
n
)
Truy vấn QE = (s
1
, …, s
m
, R, p
1
, …, p
k
), tập TT ⊆ {is, in, union, diff, forall, exists}
là tập các toán tử tham gia trong mệnh đề

where của truy vấn QE.
Ra: Siêu đồ thị H.
Phương pháp:
(1) H := ∅

- 21 -
(2) for (mỗi truy vấn con QE
i
trong truy vấn QE) do
(3) Khởi tạo siêu đồ thị H
i
với QE
i
(Thuật toán 3.8)
(4) H := H ∪ H
i

(5) for (mỗi toán tử t
i
∈ TT) do
(6) Khởi tạo siêu cạnh kết nhập g có nhãn là t
i
chứa siêu cạnh đỉnh
của siêu đồ thị ở vế phải của t
i
và thuộc tính ở vế trái của t
i

(7) H := H ∪ g
3.5.2. Phương pháp ước lượng siêu đồ thị

Biểu diễn hình thức cho siêu đồ thị là dãy các sự kiện: H
= (E
1
, E
2
, , E
n
), các sự kiện E
i
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 E
j
được ký hiệu là
Lớp_dẫn_xuất(E
1
, , E
j
).
Thủ tục Ướclượngsiêucạnh nhận vào lớp dẫn xuất thu được sau tác
động của sự kiện E
j-1
và sự kiện E
j
, kết quả của thủ tục là lớp dẫn xuất với
sự kiện E
j
trong H.
Procedure Ướclượngsiêucạnh(Lớp_dẫn_xuất(E
1

, , E
j-1
), E
j
)
Vào: Lớp_dẫn_xuất(E
1
, , E
j-1
) và sự kiện E
j

Ra: Lớp_dẫn_xuất(E
1
, , E
j
)
Phương pháp:
(1) Khởi tạo, Ướclượngsiêucạnh(E
1
) cho kết quả: Lớp_dẫn_xuất(E
1
) := c
1
,
trong đó, c
1
là lớp tương ứng với siêu cạnh đối tượng E
1
.

(2) if (E
j
là một điều kiện hoặc siêu cạnh điều kiện) then
Lớp_dẫn_xuất(E
1
, , E
j
) := σ
F
(Lớp_dẫn_xuất(E
1
, , E
j-1
))
với F là biểu thức điều kiện tương ứng với E
j

(3) if (E
j
là siêu cạnh đối tượng của lớp C
j
có giao với siêu đồ thị) then
Lớp_dẫn_xuất(E
1
, , E
j
) := Lớp_dẫn_xuất(E
1
, , E
j-1

)) C
j

(4) if (E
j
là siêu cạnh đối tượng không giao với siêu đồ thị) then
Lớp_dẫn_xuất(E
1
, , E
j
) := Lớp_dẫn_xuất(E
1
, , E
j-1
)) × C
j

Khi tất cả các siêu cạnh trong siêu đồ thị H được ước lượng, 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 cho
câu trả lời của truy vấn.

- 22 -
Thuật toán 3.10: Ước lượng các siêu cạnh của siêu đồ thị.
Vào: Siêu đồ thị H = (E
1
, E
2
, , E
n
), R là siêu cạnh đỉnh.

Ra: Lớp kết quả của truy vấn.

Phương pháp:
(1) Biểu diễn siêu đồ thị H = (E
1
, E
2
, , E
n
), với dãy các sự kiện E
i

(2) for j := 1 to n do
(3) Call Ướclượngsiêucạnh(Lớp_dẫn_xuất(E
1
, , E
j-1
), E
j
)
(4) Bổ sung Lớp_dẫn_xuất(E
1
, , E
j
) vào H
(5) H := π
R
(Lớp_dẫn_xuất(E
1
, , E

n
))
Mệnh đề 3.2. Thuật toán 3.10 dừng sau hữu hạn bước và cho câu trả lời đúng.
Mở rộng thuật toán 3.10 bằng việc xử lý các siêu cạnh kết nhập, ta có được
giải thuật 3.11.
Thuật toán 3.11: Thu gọn siêu đồ thị
Vào: Siêu đồ thị H = (E
1
, E
2
, …E
i
, EA
j
, E
i+1
, …, E
k
, …), R là siêu cạnh đỉnh.
Ra: Lớp kết quả của truy vấn.

Phương pháp:
(1) Biểu diễn siêu đồ thị H = (E
1
, E
2
, …E
i
, EA
j

, E
i+1
, …, E
k
, …)
(2) i := 1
(3) repeat
(4) if (EA
j
là siêu cạnh kết nhập) then
(5) for l := i + 1 to k – 1 do
(6) Call Ướclượngsiêucạnh(Lớp_dẫn_xuất(E
j
), E
j+1
)
(7) Bổ sung Lớp_dẫn_xuất(E
l
, , E
k
) vào H trước EA
j

(8) else Call Ướclượngsiêucạnh(Lớp_dẫn_xuất(E
1
, , E
i-1
), E
i
)

(9) Bổ sung Lớp_dẫn_xuất(E
1
, , E
i
) vào H
(10) inc(i)
(11) until (ước lượng tất cả các siêu cạnh trong H)
(12) H := π
R
(Lớp_dẫn_xuất(E
1
, , E
k
, …))
Độ phức tạp tính toán của thuật toán 3.11 có thời gian đa thức.
3.5.3. Không gian tìm kiếm của truy vấn
Sử dụng tập các danh sách với các phần tử chứa các thành phần của
siêu đồ thị, sau đó lần lượt duyệt tập các danh sách tương ứng để xác định
các phương án thực thi truy vấn.

×