109
TP CHÍ KHOA HC, Đại hc Huế, S 53, 2009
PHƯƠNG PHÁP TI ƯU HOÁ TRUY VN ĐỐI TƯỢNG BNG CÁC PHÉP
BIN ĐỔI BIU THC ĐẠI S ĐỐI TƯỢNG OQL
Lê M
nh Th
nh,
Đ
i h
c Hu
ế
Hoàng B
o Hùng
S
Thông tin và Truy
n thông t
nh Th
a Thiên Hu
ế
TÓM TT
T
i
ư
u hóa truy v
n v
n
đ
đư
c quan tâm nghiên c
u v
thuy
ế
t c
ơ
s
d
li
u.
Nh
ng k
ế
t qu
khá tr
n v
n v
t
i
ư
u hóa truy v
n trên mô hình c
ơ
s
d
li
u quan h
đ
ã là l
i
gi
i cho nhi
u l
p bài toán qu
n lý nói chung và thuy
ế
t c
ơ
s
d
li
u nói riêng. T
c
ơ
s
đ
ó,
vi
c nghiên c
u m
r
ng các ph
ươ
ng pháp t
i
ư
u hóa truy v
n quan h
trên hình c
ơ
s
d
li
u h
ư
ng
đ
i t
ư
ng là ph
ươ
ng pháp
đư
c
đ
xu
t trong bài báo này.
Đ
i
u khác bi
t so v
i
hình quan h
vi
c t
i
ư
u hóa truy v
n
đ
i t
ư
ng d
a trên t
p lu
t bi
ế
n
đ
i bi
u th
c truy
v
n b
ng các phép bi
ế
n
đ
i
đ
i s
đ
i t
ư
ng,
đư
c th
c hi
n qua vi
c chuy
n
đ
i t
ươ
ng
đươ
ng
gi
a truy v
n vi
ế
t b
ng OQL (Object Query Language)
đ
i s
đ
i t
ư
ng t
ươ
ng
ng, k
ế
t qu
gi
a truy v
n vi
ế
t b
ng OQL và bi
u th
c
đ
i s
đ
i t
ư
ng t
ươ
ng
ng là t
ươ
ng
đươ
ng. Bài báo
đư
a ra các quy t
c t
ng quát
đ
t
i
ư
u hóa truy v
n
đ
i t
ư
ng, trên c
ơ
s
đ
ó
đ
xu
t thu
t toán
t
i
ư
u hóa truy v
n
đ
i t
ư
ng d
a trên t
p lu
t.
I. Gii thiu
Khi thc thi mt truy vn, chúng ta nhiu phương án h thng cơ s d
liu (CSDL) cho phép x lý để câu tr li. Các phương án đều kết qu cui cùng
tương đương nhưng khác nhau trong chi phí thc hin, tc tng thi gian cn để
thc hin mt truy vn. Ti ưu hoá truy vn la chn phương án đ tng thi
gian thc hin truy vn là nh nht. Như vy, vn đ chúng ta phi quan tâm làm
sao cc tiu tn sut s dng ca CPU, b nh, chi phí vào/ra các ngun tài nguyên
v lĩnh vc truyn thông. Vi k thut phn cng hin nay (kh năng ca các chip nh),
vic ti ưu thc thi mt truy vn ch còn là vn đề làm cc tiu thi gian tr li ca truy
vn, trong khi đó, các h thng li chu s chi phi ch yếu thi gian trao đi vào/ra.
Do đó, các k thut ti ưu hoá truy vn ch yếu tp trung gii quyết vn đề cc tiu chi
phí x lý vào/ra khi mt truy vn được thc thi. Phương pháp ti ưu hoá truy vn đối
tượng trong bài báo cũng được đề xut theo hướng tiếp cn này.
Phương pháp ti ưu hoá truy vn đối tượng được nghiên cu gii quyết các
vn đề vi đặc trưng ca hình hướng đối tượng. Phương pháp y được trình bày
trên cơ s ca hình d liu ODMG ngôn ng truy vn đối tượng OQL, nhưng
không mt tính tng quát đối vi các mô hình d liu hướng đối tượng có h tr các đặc
trưng này [2], [4], [6].
110
Tiến trình tng quát ti ưu hoá truy vn đối tượng da trên tp lut được t
trong hình 1, đu vào ca tiến trình x lý các truy vn được viết bng ngôn ng truy
vn đối tượng, chuyn đổi các truy vn thành các biu thc đại s đối tượng tương
đương. Sau đó, áp dng các lut biến đổi trên các phép toán đại s như chn, chiếu, kết
ni đối vi các lp đối tượng, loi b trùng lp trong các đa tp,... Cui cùng, chúng ta
có kết qu là phương án thc thi được chn trong tiến trình ti ưu truy vn.
Ngôn ng
truy v
n
Ki
m tra ki
u
T
i
ư
u hoá các
ki
u
đ
i t
ư
ng
Chuy
n
đ
i ngôn
ng
truy v
n v
đ
i
s
đ
i t
ư
ng
Bi
u th
c
đ
i
s
đ
i t
ư
ng
T
i
ư
u hoá
Các ph
ươ
ng án
th
c thi t
ng quát
Ph
ươ
ng án
th
c thi truy v
n
Hình 1. Ti
ế
n trình khung x
lý truy v
n
Ni dung ca bài báo được cu trúc như sau: chi tiết ca phương pháp ti ưu hoá
truy vn đối tượng bng các phép biến đổi biu thc đại s đối tượng OQL được trình
bày trong phn 2; phn 3 d minh ho cho phương pháp đã được trình bày. Kết
lun v các đóng góp ca bài báo cũng như hướng phát trin được trình bày trong phn
4.
Để thng nht trong trình bày các d trong bài báo, chúng ta s dng lược đồ
đối tượng được định nghĩa trong OQL như sau:
Ví d 1.1. Cho lược đồ đối tượng TruongDaihoc như sau:
class NhanSu
type tuple (maso: int, hoten: string, pho: string, tpho: string, matinh: int,
ngaysinh: tuple (ngay: int, thang: int, nam:int))
class SinhVien inherits NhanSu
type tuple (gvhd: string, dtb: float, hocbong: float, tenkhoa: Khoa)
class GiangVien inherits NhanSu
type tuple (bomon: string, mabomon: int, chucvu: string,
tenkhoa: Khoa, luong: int, con: set(NhanSu))
class Khoa
type tuple (makhoa: int, tenkh: string, diadiem: string, ngansach: float,
cbgd: set(GiangVien))
111
II. Ti ưu hoá truy vn đối tượng bng các phép biến đổi biu thc đại s đối
tượng OQL
2.1. S biu din tương đương gia truy vn OQLđại s đối tượng
Định nghĩa. Nếu E biu thc đại s đối tượng Q truy vn đối tượng
OQL cùng xác định mt tp đối tượng thì ta nói E biu din Q hay Q biu din E, ta gi
E tương đương vi Q, ký hiu E
Q.
S biu din tương đương gia truy vn viết bng ngôn ng OQL đại s đối
tượng được th hin qua hai định lý 1 và 2 sau:
Định 1. [3] Mi biu thc đại s đối tượng đều biu din được bng các truy
vn đối tượng trong OQL.
Định 2. [3] Mi truy vn đối tượng trong OQL đều biu din được bng các
biu thc đại s đối tượng.
Như vy, vic viết li mt truy vn đã cho thành các biu thc đại s vi tp
phép toán đại s đối tượng tương đương. Các biu thc đại s y th được ước
lượng vi các chi phí x khác nhau. vy, v mt lý thuyết chúng ta mong mun
tìm được biu thc đại s tương đương vi mt truy vn sao cho th đt được mt
phương án thc thi hiu qu hơn. Tuy nhiên, trong các gii pháp cài đặt, vì s lượng các
truy vn tương đương qln, trong lúc đó chúng ta ch cn mt tp con các truy vn
này. Do đó, đ tìm ra các truy vn tương đương khác, chúng ta s cn mt tp lut nhm
biến đổi các biu thc đại s tương đương. Tuy nhiên, trong mô nh d liu hướng đối
tượng li không mt đại s đối tượng chun áp dng được cho tt c các hình
hướng đối tượng, cho nên s k vng để có mt tp chun tc gm các lut biến đổi bo
toàn tương đương không tn ti. vy, chúng ta mong mun chng t rng s biến
đổi bo toàn tương đương trên mt cơ s đại s đối tượng là có th chp nhn được. Mt
s lut biến đổi được trình bày trong phn 2.2.
2.2. Các lut biến đổi đại s đối tượng
hiu S, S1, S2, S3 các tp đối tượng; e, f, g, h các biu thc đại s, phép
toán op
{union, diff}. Nhng lut y ch áp dng trên các phép toán đối tượng, phép
toán b, phép toán tp hp các phép toán đa tp (bag). V mt hiu, chúng ta ch
s dng các hiu phép toán mt ch nh thc [6], [7], [8], c phép toán này th
đượci đt vi mt s thay đổi trongc nh khác nhau.
L1. Hoán v phép chn:
σ
λ
t.g(
σ
λ
s.f(S)) =
σ
λ
s.f(
σ
λ
t.g(S))
L2. T hp các phép chn:
σ
λ
s.(f
g
h(S) =
σ
λ
s.f(
σ
λ
t.g(…(
σ
λ
u.h (S))…))
L3. Thu gn dãy các phép chiếu:
112
)())((
)...
1
()...
1
()...
1
(
SS
n
aa
m
bb
n
aa
π
π
π
=
, vi {a1,..., an}
{b1,..., bm}
L4. Hoán v phép chn và phép chiếu
))(())((
.)...()...(.
11
SS
esaaaaes
nn
λλ
σππσ
=
L5. Hoán v mt phép chiếu vi phép hp, hiu trên tp/đa tp
)( )( ) (
2)...
1
(1)...
1
(21)...
1
(
SopSSopS
n
aa
n
aa
n
aa
π
π
π
=
L6. Phân phi phép chn vi pp hp phép hiu trên tp/đa tp
σ
λ
s.f(S1 op S2) =
σ
λ
s.f(S1) op S2, nếu f ch liên quan vi S1.
Tng quát:
σ
λ
s.(f
g
h(S1 op S2) =
σ
λ
u.h(
σ
λ
s.f(S1) op
σ
λ
t.g(S2)), nếu f liên quan S1, g
liên quan S2 và h liên quan c S1 và S2.
L7. Hoán v gia phép apply phép chn: nếu điu kin chn ch cha các
thuc tính do phép toán apply tr v thì:
apply
λ
s.e(
σ
λ
t.f(S)) =
σ
λ
t.f(apply
λ
s.e(S))
L8. Hoán v gia phép làm phng (flat) và phép apply trên tp/đa tp: gi s
S là th hin ca mt lp và X là mt tp thuc tính phc ca lp.
)))((())((
))((
)(
..))))((
)(
(
.
.(
SapplyflatapplySapplyflat
S
VX
setS
VXet
applys
ππλλππ
λ
λ
=
Biu thc vế trái, biu thc e tác động trước tp các tp (thu được bi
π
X)
sau đó làm phng thành mt tp; biu thc vế phi phép toán làm phng được tác
động trước (kết qu thu được là mt tp), sau đó thc hin phép toán apply.
L9. Tính kết hp ca phép hp
(S1 union S2) union S3 = S1 union (S2 union S3)
L10. Các lut kế tha đối vi phép chn phép apply: nếu S2 mt lp con
ca S1, thì th hin ca S2 là mt tp con ca th hin ca S1:
σλs.f(S1) union σλs.f(S2) = σλs.f(S1)
applyλs.e(S1) union applyλs.e(S2) = applyλs.e(S1)
2.3. Các quy tc tng quát trong ti ưu hoá truy vn đối tượng
Tiếp theo, vi tp lut biến đổi đại s đối tượng trong phn 2.2, chúng ta s đưa
ra các quy tc cho phép chn la các lut thích hp áp dng trên các biu thc đại s
đầu vào nhm to ra các bước ước lượng trên các biu thc đại s đối tượng chi phí
x lý thp hơn tương đương vi biu thc đã cho.
(R1) Thc hin các phép chn, phép chiếu trên đối tượng, phép bagtoset trước
các phép kết ni, tích Đề các, nhóm b (đối tượng) trên các lp theo th t trên: Nhm
113
làm gim s lượng các đối tượng tham gia trong các phép toán. Phép chiếu được áp
dng cho trường hp tp thuc tính ca các lp quá ln nhưng không tham gia trong kết
qu ca truy vn, do đó cho phép gim kích thước lưu tr ca mi lp.
(R2) T hp dãy các phép chn và phép chiếu: Dãy các phép toán chn và chiếu
th nhóm gp bng mt phép chn hoc mt phép chiếu (lut L3). Vi phép biến đổi
này chúng ta s làm gim s ln truy xut trên các lp.
(R3) Làm phng các cu trúc phc vi c phép toán set_flat, bag_flat,
list_flag: chuyn các cu trúc phc v các kiu tp, b các danh sách vi các phn t
đơn tr (lng nhau). Vi phép biến đổi này chúng ta loi b được các tham chiếu lng,
lp (t tr) trong các cu trúc phc làm gim độ phc tp tính toán trong quá trình x
truy vn.
(R4) X lý trước các lp đối tượng bng các phép toán mt ngôi: làm gim kích
thước các lp đối tượng khi tham gia kết ni hay lp nhóm.
(R5) Tính các thành phn cơ s trong mt biu thc đại s đối tượng: Xác định
thành phn cơ s chung nht trên các biến vùng, nếu tn ti mt thành phn cơ s chung
nht thì chúng ta s tính trước các biu thc con chung này, chúng được xem đầu vào
cho các bước truy vn tiếp theo.
Th tc xác định thành phn cơ s chung nht trên các biến vùng: Để thun tin
trong trình bày, chúng ta biu din li cú pháp ca truy vn đi tưng OQL:
Truy vn:
select [distinct] <danh_sách_
đ
ích>
from <m
nh_
đ
_from>
where <m
nh_
đ
_where>
trong đó, các thành phn đưc th hin c th như sau:
<danh_sách_
đ
ích>::= <ds_
đ
ích> // danh sách k
ế
t qu
c
a truy v
n.
<ds_
đ
ích> ::= (<kq_
đ
ích>,) <kq_
đ
ích>
<kq_
đ
ích> ::= (<kq_thph
n>.)<kq_thph
n> : <kq_
đ
ích>
(có th
ch
a các k
ế
t n
i
n, s
d
ng d
u “.”)
<kq_thph
n> ::= (<
đ
i_t
ư
ng> | <bi
ế
n_tham_chi
ế
u>)
<m
nh_
đ
_from> ::=<ki
u/l
p> [<toán_t
_t
p> <ki
u/l
p>] as
<bi
ế
n_tham_chi
ế
u>:
danh sách các lp (có th cha các toán t tp hp) được
tham chiếu (định nghĩa qua biến vùng ) vi <biến_tham_chiếu>
<ki
u/l
p> ::= (<thph
n_ki
u>.)<thph
n_ki
u>
<thph
n_ki
u> ::= <
đ
i_t
ư
ng>([<th
_hi
n_h
ng> [ : <th
_hi
n_h
ng>])
<m
nh_
đ
_where>::= <m
nh_
đ
_where> (and | or) <m
nh_
đ
_where>