GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
1
MC LC
CHNG V. LU TR VÀ CU TRÚC TP TIN 2
Mc ích: 2
Yêu cu: 2
5.1. B qun tr buffer 3
5.2. Cách thc t chc file 4
5.2.1. Mu tin vi dài c nh (Fixed-Length Records) 4
5.2.2. Mu tin vi dài thay i (Variable-Length Records) 5
5.3. T chc các mu tin trong file 6
5.3.1. T chc file tun t 7
5.3.2. T chc file cm 7
5.3.3. Lu tr t in d liu 8
5.4. Ch mc 8
5.4.1. Ch mc c sp. 9
5.4.2. Ch mc th cp 12
5.5. File ch mc B
+
-CÂY (B
+
-Tree Index file) 13
5.5.1. Cu trúc c a B
+
-cây 13
5.5.2. Các vn tin trên B
+
-cây 14
5.5.3. Cp nht trên B
+
-cây 14
5.5.4. T chc file B
+
-cây 15
5.6. File ch mc B - cây (B-Tree Index Files) 15
5.7. Phng pháp b!m (HASHING) 16
5.7.1. B!m t"nh (Static Hashing) 16
5.7.1.1. T chc tp b!m. 16
5.7.2. B!m ng (Dynamic Hashing) 18
5.7.3. Ch#n ch mc hay b!m? 19
CÂU H$I VÀ BÀI TP 20
TÀI LI%U THAM KH&O 23
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
2
CHNG V. LU TR VÀ CU TRÚC TP TIN
Mc ích:
- Trình bày các vn liên quan n vn lu tr d liu trên lu tr
ngoài.
- Vic lu tr d liu c t chc sao cho có th lu c mt lng ln
d liu và quan trng hn c là phi cho truy cp d liu cn thit mau chóng.
- Các cu trúc tr giúp cho truy xut nhanh d liu c trình bày là: ch
mc (indice), B
+
cây (B
+
tree), bm (hashing) Các thit b lu tr (a) có th b
hng hóc không lng trc, các k thut RAID cho mt gii pháp hiu qu cho
vn này.
Yêu cu:
- Hiu rõ các c im ca các thit b lu tr, cách t chc lu tr, truy
xut a.
- Các k thut t chc các mu tin trong file, các k thut t chc file.
- Hiu và vn dng các k thut h tr truy cp thông tin: ch mc (th t,
B
+
cây, bm.)
tìm hiu tt phn này, b'n cn nh mt s phn trong môn h#c h i(u
hành và kin trúc máy tính, c)ng nh môn h#c bo trì h thng. Các k* thut liên
quan n các phng tin lu tr ngoài (b nh ngoài), các vn ( v( b nh m
(buffer), cách truy xut #c ghi I/O và chi phí CPU khi truy xut d liu, các khái
nim phân trang – phân o'n… có th #c thêm trong các tài liu liên quan các
môn h#c nói trên.
Mt c s+ d liu c ánh x' vào mt s các file khác nhau c duy trì
b+i h i(u hành n(n. Các file này lu trú th,ng trc trên các "a vi backup trên
b!ng. M-i file c phân ho'ch thành các n v lu tr dài c nh c g#i
là khi - n v cho c cp phát lu tr và truy(n d liu.
Mt khi có th cha mt vài h'ng mc d liu (data item). Ta gi thit
không mt h'ng mc d liu nào tri ra trên hai khi. Mt cách gim s truy
xut "a là gi nhi(u khi có th c trong b nh chính. Mc ích là khi mt
khi c truy xut, nó ã n.m s/n trong b nh chính và nh vy không cn mt
truy xut "a nào c.
Do không th lu tt c các khi trong b nh chính, ta cn qun tr cp phát
không gian s/n có trong b nh chính lu tr các khi. B m (Buffer) là mt
phn c a b nh chính s/n có lu tr bn sao khi "a. Luôn có mt bn sao
trên "a cho m-i khi, song các bn sao trên "a c a các khi là các phiên bn c)
hn so vi phiên bn trong buffer. H thng con m trách cp phát không gian
buffer c g#i là b qun tr buffer.
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
3
5.1. B qun tr buffer
Các chng trình trong mt h CSDL a ra các yêu cu cho b qun tr
buffer khi chúng cn mt khi "a. Nu khi này ã s/n sàng trong buffer, a ch
khi trong b nh chính c chuyn cho ng,i yêu cu. Nu khi cha có trong
buffer, b qun tr buffer u tiên cp phát không gian trong buffer cho khi, rút ra
mt s khi khác, nu cn thit, ly không gian cho khi mi. Khi c rút ra
ch c vit l'i trên "a khi nó có b s0a i k t ln c vit lên "a gn nht.
Sau ó b qun tr buffer #c khi t "a vào buffer, và chuyn a ch c a khi
trong b nh chính cho ng,i yêu cu. B qun tr buffer không khác gì nhi(u so
vi b qun tr b nh o, mt im khác bit là kích c1 c a mt CSDL có th rt
ln không cha toàn b trong b nh chính do vy b qun tr buffer phi s0
dng các k* thut tinh vi hn các s 2 qun tr b nh o kiu mu. Mt s k*
thut c a b qun tr buffer:
Chin luc thay th: Khi không có ch- trong buffer, mt khi phi c xoá
kh3i buffer trc khi mt khi mi c #c vào. Thông th,ng, h i(u hành s0
dng s 2 LRU (Least Recently Used) vit lên "a, khi ít c dùng gn ây
nht, c xoá b3 kh3i buffer.
Khi cht (pinned blocks): h CSDL có th khôi phc sau s c, cn thit
phi h'n ch th,i gian khi vit l'i lên "a mt khi. Mt khi không cho phép vit
l'i lên "a c g#i là khi cht.
Xut ra bt buc các khi (Forced output of blocks): Có nhng tình hung
trong ó cn phi vit l'i mt khi lên "a, cho dù không gian buffer mà nó chim
là không cn n. Vic vit này c g#i là s xut ra bt buc c a mt khi. Lý
do c a yêu cu xut ra bt buc khi là ni dung c a b nh chính s4 b mt khi có
s c, ngc l'i d liu trên "a thì không.
Các i sách thay th buffer (buffer-replacement policies).
Mc ích c a chin lc thay th khi trong buffer là ti thiu hoá các truy
xut "a. Các h i(u hành th,ng s0 dng chin lc LRU thay th khi. Tuy
nhiên, mt h CSDL có th d oán d liu có th cn #c trong tng lai. Yêu
cu c a mt ng,i s0 dng i vi h CSDL bao g2m mt s bc. H CSDL có
th xác nh trc nhng khi nào s4 là cn thit b.ng cách xem xét m-i mt trong
các bc c yêu cu thc hin ho't ng c yêu cu b+i ng,i s0 dng.
Nh vy, khác vi h i(u hành, h CSDL có th có thông tin liên quan n tng
lai, chí ít là tng lai gn. Trong nhi(u tr,ng hp, chin lc thay th khi ti u
cho h CSDL là MRU (Most Recently Used): Khi b thay th s4 là khi mi
c dùng gn ây nht!
B qun tr buffer s0 dng các thông tin thng kê liên quan n xác sut mt
yêu cu s4 tham kho mt d liu riêng bit nào ó. Ch5ng h'n, t in d liu và
các ch mc là mt trong nhng phn c truy xut th,ng xuyên nht c a
CSDL. Do ó, b qun tr buffer s4 không xoá các khi t in d liu, ch mc
kh3i b nh chính tr phi các nhân t khác bc ch làm i(u ó.
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
4
Trong b qun tr buffer còn có các h con nh.m i(u khin tng tranh vì
tt nhiên s4 có nhi(u khi cùng truy cp lên b nh m. Các k* thut i(u khin
tng tranh có th xem thêm trong phn i(u khin tng tranh + phn sau và
trong môn h#c h i(u hành.
Bên c'nh ó, các h thng khôi phc (crash-recovery subsystem) s4 áp 6t
các ràng buc nghiêm nh6t lên vic thay th khi. Nu mt khi b s0a i, b
qun tr buffer không c phép vit l'i phiên bn mi c a khi trong buffer lên
"a, vì nó s4 phá hu7 phiên bn c). Thay vào ó, phi xem xét quy(n vit l'i t h
thng khôi phc trc khi vit khi. H thng khôi phc có th òi h3i mt s
khi nht nh khác phi xut bt buc (forced output) ra "a.
5.2. Cách thc t chc file
Mt file c t chc logic nh mt dãy các mu tin (record). Các mu tin
này c ánh x' lên các khi "a. Các khi có kích c1 c nh c xác nh b+i
tính cht vt lý c a "a và b+i h i(u hành, song kích c1 c a mu tin l'i thay i.
Trong CSDL quan h, các b c a các quan h khác nhau nói chung có kích c1
khác nhau.
Có hai cách t chc mt file, ó là file vi các mu tin vi dài c nh và
file vi mu tin có dài không c nh.
5.2.1. Mu tin vi dài c nh (Fixed-Length Records)
Cách tip cn n gin này ny sinh nhng vn ( sau:
Khi xóa mt mu tin thì không gian b chim b+i mu tin b xoá phi c
lp y b+i mu tin khác c a file ho6c ta phi ánh du mu tin b xoá.
Kích c1 khi phi là bi c a kích c1 c a mt mu tin, nu không mt s mu
tin s4 bt chéo qua biên c a khi, tc là mt phn mu tin c lu trong mt
khi, mt phn khác c lu trong mt khi khác. Khi ó òi h3i phi truy xut
hai khi #c/vit mt mu tin "bc cu" ó.
Khi mt mu tin b xoá, ta có th di chuyn mu tin k( sau nó vào không
gian b chim mt cách hình thc b+i mu tin b xoá, r2i mu tin k tip vào không
gian b chim c a mu tin va c di chuyn, c nh vy cho n khi m-i mu
tin i sau mu tin b xoá c dch chuyn hng v( u. Cách tip cn này òi
h3i phi di chuyn mt s ln các mu tin. Mt cách tip cn khác n gin hn là
di chuyn mu tin cui cùng vào không gian b chim b+i mu tin b xoá. Cách
tip cn này òi h3i phi truy xut khi b sung. Do vic chèn vào mt mu tin
th,ng xy ra th,ng xuyên hn ho't ng xoá, nên ta có th chp nhn vic
"ng3" không gian b chim b+i mu tin b xoá, và ch, mt ho't ng chèn n sau
tái s0 dng không gian ó. Nh vy cn a vào cu trúc b sung cho mt file.
8 u m-i file, c cp phát mt s byte nht nh làm header c a file. Header
này s4 cha ng thông tin v( file. Header cha a ch c a mu tin b xoá th
nht, trong ni dung c a mu tin này có cha a ch c a mu tin b xoá th hai và
c nh vy. Nh vy, các mu tin b xoá s4 t'o ra mt danh sách liên kt dc g#i
là danh sách t do (free list). Khi chèn mu tin mi, ta s0 dng con tr3 u danh
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
5
sách c cha trong header xác nh danh sách, nu danh sách không r-ng ta
chèn mu tin mi vào vùng c tr3 b+i con tr3 u danh sách nu không ta chèn
mu tin mi vào cui file.
Chèn và xoá i vi file mu tin dài c nh c thc hin n gin vì
không gian c gii phóng b+i mu tin b xoá úng b.ng không gian cn thit
chèn mt mu tin. i vi file c a các mu tin dài thay i vn ( tr+ nên phc
t'p hn nhi(u.
5.2.2. Mu tin vi dài thay i (Variable-Length Records)
Mu tin trong 1 file có dài thay i do mt s lý do sau:
- Vic lu tr nhi(u kiu mu tin trong mt file.
- Kiu mu tin cho phép dài tr,ng thay i.
- Kiu mu tin cho phép l6p l'i các tr,ng.
Có nhi(u k* thut thc hin mu tin dài thay i. minh ho' ta xét
các biu di9n khác nhau trên các mu tin dài thay i có nh d'ng sau:
Biu din chui byte (Byte-String Representation).
Mt cách n gin thc hin các mu tin dài thay i là gn mt ký
hiu 6c bit End-of-record (⊥) vào cui m-i record. Khi ó có th lu m-i mu
tin nh mt chu-i byte liên tip. Thay vì s0 dng mt ký hiu 6c bit + cui c a
m-i mu tin, mt phiên bn c a biu di9n chu-i byte là lu tr dài mu tin +
bt u c a m-i mu tin.
Biu di9n chu-i byte có mt s h'n ch sau:
- Khó s0 dng không gian b chim hình thc b+i mt mu tin b xoá, i(u
này dn n mt s ln các mnh nh3 c a "a b lãng phí.
- Không có không gian cho s phát trin các mu tin. Nu mt mu tin dài
thay i dài ra, nó phi c di chuyn sang v trí khác và nh vy s4 tn chi phí
truy cp file.
Mt d'ng s0a i c a biu di9n chu-i byte là cu trúc khe-trang (slotted-page
structure) th,ng c dùng t chc mu tin trong mt khi n.
Trong cu trúc slotted-page, có mt header + bt u c a m-i khi, cha các
thông tin sau:
- S các u vào mu tin (record entries) trong header
- im cui không gian t do (End of Free Space) trong khi
- Mt mng các u vào cha v trí và kích c1 c a m-i mu tin
Các mu tin hin hành c cp phát k( nhau trong khi, bt u t cui
khi, Không gian t do trong khi là mt vùng k( nhau, n.m gia u vào cui
cùng trong mng header và mu tin u tiên. Khi mt mu tin c chèn vào,
không gian cp phát cho nó + cui c a không gian t do, và u vào tng ng
vi nó c thêm vào header.
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
6
Nu mt mu tin b xoá, không gian b chim b+i nó c gii phóng, u
vào ng vi nó c ánh du xoá. Sau ó, các mu tin trong khi trc mu tin
b xoá c di chuyn sao cho không gian t do c a khi l'i là phn n.m gia u
vào cui cùng c a mng header và mu tin u tiên. Con tr3 tr3 n im cui
không gian t do và các con tr3 ng vi mu tin b di chuyn c cp nht. S
ln lên hay nh3 i c a mu tin c)ng s0 dng k* thut tng t (trong tr,ng hp
khi còn không gian cho s ln lên c a mu tin).
Biu din dài c nh.
Mt cách khác thc hin mu tin dài thay i mt cách hiu qu trong
mt h thng file là s0 dng mt ho6c mt vài mu tin dài c nh biu di9n
mt mu tin dài thay i. Hai k* thut thc hin file c a các mu tin dài
thay i s0 dng mu tin dài c nh là:
Không gian d tr (reserved space). Gi thit r.ng các mu tin có dài
không vt quá mt ng1ng ( dài ti a). Ta có th s0 dng mu tin dài c
nh (có dài ti a), Phn không gian cha dùng n c lp y b+i mt ký
t 6c bit: null ho6c End-of-record.
Contr3 (Pointers). Mu tin dài thay i c biu di9n b+i mt danh sách
các mu tin dài c nh, c "móc xích" vi nhau b+i các con tr3.
S bt li c a cu trúc con tr3 là lãng phí không gian trong tt c các mu tin
ngo'i tr mu tin u tiên trong danh sách. gii quyt vn ( này ng,i ta (
ngh phân các khi trong file thành hai lo'i:
Khi neo (Anchor block). Ch cha các mu tin u tiên trong danh sách
Khi tràn (Overflow block). Cha các mu tin còn l'i c a danh sách
Nh vy, tt c các mu tin trong mt khi có cùng dài, cho dù file có th
cha các mu tin không cùng dài.
5.3. T chc các mu tin trong file
Trong phn trên ta ã xét làm th nào biu di9n các mu tin trong mt cu
trúc file.Mt quan h c th hin là mt tp hp các mu tin. Gi s0 mt tp hp
các mu tin nh th ã c cho trc, vn ( 6t ra là làm th nào t chc
chúng trong mt file. Có mt s cách t chc sau:
T chc file ng (Heap File Organization). Trong t chc này, mt mu tin
bt k: có th c lu tr + bt k: ni nào trong file, + ó có không gian cho nó.
Không có th t nào gia các mu tin. Mt file tng ng vi mt quan h.
T chc file tun t ( Sequential File Organization). Trong t chc này, các
mu tin c lu tr th t tun t, da trên giá tr c a khoá tìm kim c a m-i
mu tin.
T chc file b!m (Hashed File Organization). Trong t chc này, có mt
hàm b!m c tính toán trên thuc tính nào ó c a mu tin. Kt qu c a hàm b!m
xác nh mu tin c b trí trong khi nào trong file. T chc này liên h ch6t
ch4 vi cu trúc ch mc.
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
7
T chc file cm (Clustering File Organization). Trong t chc này, các
mu tin c a mt vài quan h khác nhau có th c lu tr trong cùng mt file.
Các mu tin có liên h c a các quan h khác nhau c lu tr trên cùng mt khi
sao cho mt ho't ng I/O em l'i các mu tin có liên h t tt c các quan h.
5.3.1. T chc file tun t
T chc file tun t c thit k x0 lý hiu qu các mu tin trong th t
c sp da trên mt khoá tìm kim (search key) nào ó. cho phép tìm l'i
nhanh chóng các mu tin theo th t khoá tìm kim, ta "xích" các mu tin l'i b+i
các con tr3. Con tr3 trong m-i mu tin tr3 ti mu tin tip theo, theo th t khoá
tìm kim. Hn na, ti u hoá s khi truy xut trong x0 lý file tun t, ta lu
tr vt lý các mu tin theo th t khoá tìm kim ho6c gn vi khoá tìm kim nh
có th.
T chc file tun t cho phép #c các mu tin theo th t c sp nh.m
phuc v cho mc ích trình bày c)ng nh cho các thut toán x0 lý vn tin (query-
processing algorithms).
Khó kh!n g6p phi c a t chc này là vic duy trì th t tun t vt lý c a
các mu tin khi xy ra các ho't ng chèn, xoá. Ta có th qun tr vn ( xoá b+i
dùng dây chuy(n các con tr3 nh ã trình bày trc ây. i vi chèn, ta có th áp
dng các quy tc sau:
- nh v mu tin trong file ng trc mu tin c chèn theo th t khoá
tìm kim.
- Nu có mu tin t do (không gian c a mu tin b xoá) trong cùng khi,
chèn mu tin vào khi này. Nu không, chèn mu tin mi vào mt khi tràn.
Trong c hai tr,ng hp, cn phi i(u chnh các con tr3 sao cho nó móc xích các
mu tin theo th t c a khoá tìm kim.
5.3.2. T chc file cm
Nhi(u h CSDL quan h, m-i quan h c lu tr trong mt file sao cho có
th li dng c toàn b nhng cái mà h thng file c a i(u hành cung cp.
Thông th,ng, các b c a mt quan h c biu di9n nh các mu tin dài c
nh. Nh vy các quan h có th ánh x' vào mt cu trúc file. S thc hin n
gin ó c a h CSDL quan h rt phù hp vi các h CSDL c thit k cho các
máy tính cá nhân. Trong các h thng ó, kích c1 c a CSDL nh3.
Tuy nhiên, nhi(u h CSDL quy mô ln không nh, cy trc tip vào h i(u
hành n(n qun tr file. Thay vào ó, mt file c cp phát cho h CSDL. Tt
c các quan h c lu tr trong mt file này, và s qun tr file này thuc v( h
CSDL. Cu trúc file d'ng này, c g#i là gom cm (clustering), cho phép ta #c
nhi(u mu tin c yêu cu trong mt khi.
Tuy nhiên, cu trúc gom cm trên l'i t3 ra không có li b.ng t chc lu m-i
quan h trong mt file riêng, i vi mt s câu vn tin.
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
8
Vic xác nh khi nào thì gom cm th,ng ph thuc vào kiu câu vn tin
mà ng,i thit k CSDL ngh" r.ng nó xy ra th,ng xuyên nht. S0 dng thn
tr#ng gom cm có th ci thin hiu n!ng áng k trong vic x0 lý câu vn tin.
5.3.3. Lu tr t in d liu
Mt h CSDL cn thit duy trì d liu v( các quan h, nh s 2 c a các
quan h. Thông tin này c g#i là t in d liu (data dictionary) hay mc lc
h thng (system catalog). Mt s thông tin mà h thng lu tr là:
- Các tên c a các quan h.
- Các tên c a các thuc tính c a m-i quan h.
- Các mi(n (giá tr) và các dài c a các thuc tính.
- Các tên c a các View c nh ngh"a trên CSDL và nh ngh"a c a các
view này.
- Các ràng buc toàn v;n.
Nhi(u h thng còn lu tr các thông tin liên quan n ng,i s0 dng h
thng:
- Tên c a ng,i s0 dng c phép.
- Gii trình thông tin v( ng,i s0 dng.
Các d liu thng kê và mô t v( các quan h có th c)ng c lu tr:
- S b trong m-i quan h
- Phng pháp lu tr c s0 dng cho m-i quan h (cm hay không)
Các thông tin v( m-i ch mc trên m-i quan h c)ng cn c lu tr :
- Tên c a ch mc
- Tên c a quan h c ch mc
Các thuc tính trên nó ch mc c nh ngh"a
- Kiu c a ch mc c t'o
Toàn b các thông tin này trong thc t bao hàm mt CSDL nh3. Mt s h
CSDL s0 dng nhng cu trúc d liu và mã mc ích 6c bit lu tr các
thông tin này. Nói chung, lu tr d liu v( CSDL trong chính CSDL vn c a
chung hn. B.ng cách s0 dng CSDL lu tr d liu h thng, nh.m n gin
hoá cu trúc tng th c a h thng và cho phép s0 dng y sc m'nh c a
CSDL trong vic truy xut nhanh n d liu h thng.
S ch#n la chính xác biu di9n d liu h thng s0 dng các quan h nh
th nào là do ng,i thit k h thng quyt nh.
5.4. Ch mc
Xét ho't ng tìm sách trong mt th vin. Ví d ta mun tìm mt cun sách
c a mt tác gi nào ó. u tiên ta tra trong mc lc tác gi, mt tm th< trong
mc lc này s4 ch cho ta bit có th tìm thy cun sách ó + âu. Các th< trong
mt mc lc c th vin sp xp th t theo vn ch cái , nh vy giúp ta có th
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
9
tìm n th< cn tìm nhanh chóng không cn phi duyt qua tt c các th<. Ch mc
c a mt file rt ging vi mt mc lc trong mt th vin. Tuy nhiên, ch mc
c làm nh mc lc c mô t nh trên, trong thc t, s4 quá ln c qun
lý mt cách hiu qu. Thay vào ó, ng,i ta s0 dng các k* thut ch mc tinh t
hn. Có hai kiu ch mc:
Ch mc c sp (Ordered indices): c da trên mt th t sp xp theo
các giá tr.
Ch mc b!m (Hash indices): c da trên các giá tr c phân phi (u
qua các bucket. Bucket mà mt giá tr c gán vi nó c xác nh b+i mt
hàm, c g#i là hàm b!m (hash function).
i vi c hai kiu này, ta s4 nêu ra mt vài k* thut. M-i k* thut phù hp
vi các ng dng CSDL riêng bit. M-i k* thut phi c ánh giá trên c s+ c a
các nhân t sau:
Kiu truy xut: Các kiu truy xut c h- tr hiu qu. Các kiu này bao
hàm c tìm kim mu tin vi mt giá tr thuc tính c th ho6c tìm các mu tin vi
giá tr thuc tính n.m trong mt khong xác nh.
Th,i gian truy xut: Th,i gian tìm kim mt h'ng mc d liu hay mt
tp các h'ng mc.
Th,i gian chèn: Th,i gian chèn mt h'ng mc d liu mi. Giá tr này
bao hàm th,i gian tìm v trí chèn thích hp và th,i gian cp nht cu trúc ch
mc.
Th,i gian xoá: Th,i gian xoá mt h'ng mc d liu. Giá tr này bao hàm
th,i gian tìm kim h'ng mc cn xoá, th,i gian cp nht cu trúc ch mc.
Tng phí tn không gian: Không gian ph b chim b+i mt cu trúc ch
mc.
Mt file th,ng i kèm vi mt vài ch mc. Thuc tính ho6c tp hp các
thuc tính c dùng tìm kim mu tin trong mt file c g#i là khoá tìm
kim. Chú ý r.ng nh ngh"a này khác vi nh ngh"a khoá s cp (primary key),
khoá d tuyn (candidate key), và siêu khoá (superkey). Nh vy, nu có mt vài
ch mc trên mt file, có mt vài khoá tìm kim tng ng.
5.4.1. Ch mc c sp.
Mt ch mc lu tr các giá tr khoá tìm kim tng ng vi các mu tin, các
giá tr khóa này c sp xp trong ch mc khi lu tr. Các mu tin trong file
c ch mc có th chính nó c)ng c sp. Mt file có th có mt vài ch mc
theo nhng khoá tìm kim khác nhau. Nu file cha các mu tin c sp tun t,
ch mc trên khoá tìm kim xác nh th t này c a file c g#i ch mc s cp
(primary index). Các ch mc s cp c)ng c g#i là ch mc cm (clustering
index). Khoá tìm kim c a ch mc s cp th,ng là khoá s cp (khoá chính).
Các ch mc, khoá tìm kim c a nó xác nh mt th t khác vi th t c a file,
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
10
c g#i là các ch mc th cp (secondary indices) hay các ch mc không cm
(nonclustering indices).
Hình 1
5.4.1.1. Ch mc s cp.
Trong phn này, ta gi thit r.ng tt c các file c sp th t tun t trên
mt khoá tìm kim nào ó. Các file nh vy, vi mt ch mc s cp trên khoá tìm
kim này, c g#i là file tun t ch mc (index-sequential files). Chúng biu
di9n mt trong các s 2 xa nht c dùng trong h CSDL. Chúng c thit k
cho các ng dng òi h3i c x0 lý tun t toàn b file ln truy xut ngu nhiên n
mt mu tin.
Ch mc 6c và ch mc tha (Dense and Sparse Indices).
Ch mc 6c.
Hình 2
Ch mc tha
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
11
Hình 3
Có hai lo'i ch mc c sp:
Ch mc 6c. M-i mu tin ch mc (u vào ch mc/ index entry) xut hin
i vi m-i giá tr khoá tìm kim trong file. Mu tin ch mc cha giá tr khoá tìm
kim và mt con tr3 ti mu tin d liu u tiên vi giá tr khoá tìm kim ó.
Ch mc tha. Mt mu tin ch mc c t'o ra ch vi mt s giá tr. C)ng
nh vi ch mc 6c, m-i mu tin ch mc cha mt giá tr khoá tìm kim và mt
con tr3 ti mu tin d liu u tiên vi giá tr khoá tìm kim này. nh v mt
mu tin, ta tìm u vào ch mc vi giá tr khoá tìm kim ln nht trong các giá tr
khoá tìm kim nh3 hn ho6c b.ng giá tr khoá tìm kim ang tìm. Ta bt u t
mu tin c tr3 ti b+i u vào ch mc, và ln theo các con tr3 trong file (d
liu) n tn khi tìm thy mu tin mong mun.
Ch mc 6c cho phép tìm kim mu tin nhanh hn ch mc tha, song ch
mc tha l'i òi h3i ít không gian hn ch mc 6c. Hn na, ch mc tha yêu
cu mt tn phí duy trì nh3 hn i vi các ho't ng chèn, xoá.
Ng,i thit k h thng phi cân nhc s cân i gia th,i truy xut và tn
phí không gian. Mt tho hip tt là có mt ch mc tha vi mt u vào ch mc
cho m-i khi, vì nh vy cái giá ni tri trong x0 lý mt yêu cu CSDL là th,i
gian mang mt khi t "a vào b nh chính. M-i khi mt khi c mang vào,
th,i gian quét toàn b khi là không áng k. S0 dng ch mc tha, ta tìm khi
cha mu tin cn tìm. Nh vy, tr phi mu tin n.m trên khi tràn, ta ti thiu hoá
c truy xut khi, trong khi gi c kích c1 c a ch mc nh3 nh có th.
5.4.1.2. Ch mc nhiu mc
Ch mc có th rt ln, ngay c khi s0 dng ch mc tha và không th cha
trong b nh mt ln. Tìm kim nh phân có th c s0 dng tìm mt u
vào trên file ch mc, song vn phi truy xut khi, vi B là s khi "a cha ch
mc. Nu B ln, th,i gian truy xut này vn là khá ln. Hn na nu s0 dng các
khi tràn, tìm kim nh phân không s0 dng c và nh vy vic tìm kim phi
làm tun t. Nó òi h3i truy xut lên n B khi!
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
12
gii quyt vn ( này, ta xem file ch mc nh mt file tun t và xây
dng ch mc tha cho nó. tìm u vào ch mc, ta tìm kim nh phân trên ch
mc "ngoài" c mu tin có khoá tìm kim ln nht trong các mu tin có khoá
tìm kim nh3 hn ho6c b.ng khoá mun tìm. Con tr3 tng ng tr3 ti khi c a
ch mc "trong". Trong khi này, tìm kim mu tin có khoá tìm kim ln nht
trong các mu tin có khoá tìm kim nh3 hn ho6c b.ng khoá mun tìm, tr,ng
con tr3 c a mu tin này tr3 n khi cha mu tin cn tìm. Vì ch mc ngoài nh3,
có th n.m s/n trong b nh chính, nên mt ln tìm kim ch cn mt truy xut
khi ch mc. Ta có th l6p l'i quá trình xây dng trên nhi(u ln khi cn thit. Ch
mc vi không ít hn hai mc c g#i là ch mc nhi(u mc. Vi ch mc nhi(u
mc, vic tìm kim mu tin òi h3i truy xut khi ít hn áng k so vi tìm kim
nh phân.
5.4.1.3. Cp nht ch mc
M-i khi chèn ho6c xoá mt mu tin, bt buc phi cp nht các ch mc kèm
vi file cha mu tin này. Di ây, mô t các thut toán cp nht cho các ch mc
mt mc.
Xoá. xoá mt mu tin, u tiên phi tìm mu tin mun xoá. Nu mu tin
b xoá là mu tin u tiên trong dây chuy(n các mu tin c xác nh b+i con tr3
c a u vào ch mc trong quá trình tìm kim, có hai tr,ng hp phi xét: Nu
mu tin b xoá là mu tin duy nht trong dây chuy(n, ta xoá u vào trong ch mc
tng ng, ngc l'i ta thay th khoá tìm kim trong u vào ch mc b+i khoá
tìm kim c a mu tin k( sau mu tin b xoá trong dây chuy(n. Trong tr,ng hp
khác, vic xoá mu tin không dn n vic i(u chnh ch mc.
Chèn. Trc tiên, xét xem khoá tìm kim c a mu tin c chèn có trong ch
mc không. Nu là ch mc 6c và giá tr khoá tìm kim không xut hin trong ch
mc, chèn giá tr khoá này và con tr3 ti mu tin vào ch mc. Nu là ch mc tha
và lu u vào cho m-i khi, không cn thit phi thay i tr phi khi mi c
t'o ra. Trong tr,ng hp ó, giá tr khoá tìm kim u tiên trong khi mi c
chèn vào ch mc.
5.4.2. Ch mc th cp.
Ch mc th cp trên mt khoá d tuyn ging nh ch mc s cp 6c,
ngo'i tr các mu tin c tr3 n b+i các giá tr liên tip trong ch mc không
c lu tr tun t. Nói chung, ch mc th cp có th c cu trúc khác vi ch
mc s cp. Nu khoá tìm kim c a ch mc s cp không là khoá d tuyn, ch
mc ch cn tr3 n mu tin u tiên vi mt giá tr khoá tìm kim riêng là (các
mu tin khác cùng giá tr khoá này có th tìm l'i c nh, quét tun t file).
Nu khoá tìm kim c a mt ch mc th cp không là khoá d tuyn, vic tr3
ti mu tin u tiên vi giá tr khoá tìm kim riêng không , do các mu tin trong
file không còn c sp tun t theo khoá tìm kim c a ch mc th cp, chúng có
th n.m + bt k: v trí nào trong file. B+i vy, ch mc th cp phi cha tt c các
con tr3 ti m-i mu tin. Ta có th s0 dng mc ph gián tip thc hin ch mc
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
13
th cp trên các khoá tìm kim không là khoá d tuyn. Các con tr3 trong ch mc
th cp nh vy không trc tip tr3 ti mu tin mà tr3 ti mt bucket cha các con
tr3 ti file.
Ch mc th cp phi là 6c, vi mt u vào ch mc cho m-i mu tin. Ch
mc th cp ci thin hiu n!ng các vn tin s0 dng khoá tìm kim không là khóa
c a ch mc s cp, tuy nhiên nó l'i em l'i mt tn phí s0a i CSDL áng
k.Vic quyt nh các ch mc th cp nào là cn thit da trên ánh giá c a nhà
thit k CSDL v( tn sut vn tin và s0a i.
5.5. File ch mc B
+
-CÂY (B
+
-Tree Index file)
T chc file ch mc tun t có mt nhc im là hiu n!ng s0 dng kém
khi file ln. khc phc nhc im ó òi h3i phi t chc l'i file. Cu trúc ch
mc B
+
-cây là cu trúc c s0 dng rng rãi nht trong các cu trúc m bo
c tính hiu qu c a chúng bt chp các ho't ng chèn, xoá. Ch mc B
+
-cây là
mt d'ng cây cân b.ng (m#i ,ng dn t gc n và m/2lá có cùng dài).
M-i nút không là lá có s con n.m trong khong gia m, trong ó m là mt s c
nh c g#i là bc c a B
+
-cây. Ta thy r.ng cu trúc B
+
-cây c)ng òi h3i mt
tn phí hiu n!ng trên chèn và xoá c)ng nh trên không gian. Tuy nhiên, tn phí
này là chp nhn c ngay c i vi các file có tn sut s0a i cao.
5.5.1. Cu trúc c a B
+
-cây
Mt ch mc B
+
-cây là mt ch mc nhi(u mc, nhng có cu trúc khác vi
file tun t ch mc nhi(u mc (multilevel index-sequential). Mt nút tiêu biu c a
B
+
-cây cha n n-1 giá tr khoá tìm kim. K
1
, K
2
, , K
n-1
, và n con tr3 P
1
, P
2
, ,
P
n
, các giá tr khoá trong nút c sp th t: i < j K
i
< K
j
.
P
1
K
1
P
2
K
2
. . .
P
n-1
K
n-1
P
n
Trc tiên, ta xét cu trúc c a nút lá. i vi i = 1, 2, , n-1, con tr3 P
i
tr3
ti ho6c mu tin vi giá tr khoá K
i
ho6c ti mt bucket các con tr3 mà m-i mt
trong chúng tr3 ti mt mu tin vi giá tr khoá K
i
. Cu trúc bucket ch c s0
dng trong các tr,ng hp: ho6c khoá tìm kim không là khoá s cp ho6c file
không c sp theo khoá tìm kim. Con tr3 P
n
c dùng vào mc ích 6c bit:
P
n
c dùng móc xích các nút lá l'i theo th t khoá tìm kim, i(u này cho
phép x0 lý tun t file hiu qu.
Bây gi, ta xem các giá tr khoá tìm kim c gn vi mt nút lá nh th
nào. M-i nút nút lá có th cha n n-1 giá tr. Khong giá tr mà m-i nút lá cha
là không ch2ng chéo. Nh vy, nu L
i
và L
j
là hai nút lá vi i < j thì m-i giá tr
khoá trong nút L
i
nh3 hn m#i giá tr khoá trong L
j
. Nu ch mc B
+
-cây là 6c,
m-i giá tr khoá tìm kim phi xut hin trong mt nút lá nào ó.
Các nút không là lá c a mt B
+
-cây t'o ra mt ch mc nhi(u mc trên các
nút lá. Cu trúc c a các nút không là lá tng t nh cu trúc nút lá ngo'i tr tt
c các con tr3 (u tr3 n các nút c a cây. Các nút con tr3m/2không là lá có th
cha n m con tr3 và phi cha không ít hn ngo'i tr nút gc. Nút gc c
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
14
phép cha ít nht 2 con tr3. S con tr3 trong mt nút c g#i là s nan (fanout)
c a nút.
Con tr3 P
i
c a mt nút không là lá (cha p con tr3, 1 < i < p) tr3 n mt cây
con cha các giá tr khoá tìm kim nh3 hn K
i
và ln hn ho6c b.ng K
i-1
. Con tr3
P
1
tr3 n cây con cha các giá tr khoá tìm kim nh3 hn K
1
. Con tr3 P
p
tr3 ti
cây con cha các khoá tìm kim ln hn K
p-1
.
5.5.2. Các vn tin trên B
+
-cây
Gi s0 ta mun tìm tt c các mu tin vi giá tr khoá tìm kim k. u tiên, ta
kim tra nút gc, tìm giá tr khoá tìm kim nh3 nht ln hn k, gi s0 giá tr khoá
ó là K
i
. i theo con tr3 P
i
di ti mt nút khác. Nu nút có p con tr3 và k > K
p-1
,
i theo con tr3 P
p
. n mt nút ti, l6p l'i quá trình tìm kim giá tr khoá tìm kim
nh3 nht ln hn k và theo con tr3 tng ng i ti mt nút khác và tip tc
nh vy n khi 't ti mt nút lá. Con tr3 tng ng trong nút lá, hng ta ti
mu tin/bucket mong mun. S khi truy xut không vt quá log
m/2
K, trong ó K
là s giá tr khoá tìm kim trong B
+
-cây, m là bc c a cây.
5.5.3. Cp nht trên B
+
-cây
Chèn. S0 dng cùng k* thut nh tìm kim, ta tìm nút lá trong ó giá tr khoá
tìm kim cn chèn s4 xut hin. Nu khoá tìm kim ã xut hin r2i trong nút lá,
chèn mu tin vào trong file, thêm con tr3 ti mu tin vào trong bucket tng ng.
Nu khoá tìm kim cha hin din trong nút lá, ta chèn mu tin vào trong file r2i
chèn giá tr khoá tìm kim vào trong nút lá + v trí úng (bo t2n tính th t), t'o
mt bucket mi vi con tr3 tng ng. Nu nút lá không còn ch- cho giá tr khoá
mi, Mt khi mi c yêu cu t h i(u hành, các giá tr khoá trong nút lá
c tách mt n0a cho nút mi, giá tr khoá mi c chèn vào v trí úng c a nó
vào mt trong hai khi này. i(u này kéo theo vic chèn giá tr khoá u khi mi
và con tr3 ti khi mi vào nút cha. Vic chèn c6p giá tr khoá và con tr3 vào nút
cha này l'i có th dn n vic tách nút ra làm hai. Quá trình này có th dn n
tn nút gc. Trong tr,ng hp nút gc b tách làm hai, mt nút gc mi c t'o
ra và hai con c a nó là hai nút c tách ra t nút gc c), chi(u cao cây t!ng lên
mt.
Xoá. S0 dng k* thut tìm kim tìm mu tin cn xoá, xoá nó kh3i file, xoá
giá tr khoá tìm kim kh3i nút lá trong B
+
-cây nu không có bucket kt hp vi giá
tr khoá tìm kim ho6c bucket tr+ nên r-ng sau khi xoá con tr3 tng ng trong
nó. Vic xoá mt giá tr khoá kh3i mt nút c a B
+
-cây có th dn n nút lá tr+
nên r-ng, phi tr l'i, t ó nút cha c a nó có th có s con nh3 hn ng1ng cho
phép, trong tr,ng hp ó ho6c phi chuyn mt con t nút anh em c a nút cha ó
sang nút cha nu i(u ó có th (nút anh em c a nút cha này còn s con ≥ m/2
sau khi chuyn i mt con). Nu không, phi gom nút cha này vi mt nút anh em
c a nó, i(u này dn ti xoá mt nút trong kh3i cây, r2i xoá kh3i nút cha c a nó
mt h'ng, quá trình này có th dn n tn gc. Trong tr,ng hp nút gc ch
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
15
còn mt con sau xoá, cây phi thay nút gc c) b+i nút con c a nó, nút gc c) phi
tr l'i cho h thng, chi(u cao cây gim i mt.
5.5.4. T chc file B
+
-cây.
Trong t chc file B
+
- cây, các nút lá c a cây lu tr các mu tin, thay cho
các con tr3 ti file. Vì mu tin th,ng ln hn con tr3, s ti a các mu tin c
lu tr trong mt khi lá ít hn s con tr3 trong mt nút không lá. Các nút lá vn
c yêu cu c lp y ít nht là mt n0a.
Chèn và xoá trong t chc file B
+
-cây tng t nh trong ch mc B
+
-cây.
Khi B
+
-cây c s0 dng t chc file, vic s0 dng không gian là 6c bit
quan tr#ng, vì không gian b chim b+i mu tin là ln hn nhi(u so vi không gian
b chim b+i (khoá,con tr3). Ta có th ci tin s s0 sng không gian trong B
+
-cây
b.ng cách bao hàm nhi(u nút anh em hn khi tái phân phi trong khi tách và trn.
Khi chèn, nu mt nút là y, ta th0 phân phi l'i mt s u vào n mt trong
các nút k( t'o không gian cho u vào mi. Nu vic th0 này tht b'i, ta mi
thc hin tách nút và phân chia các u vào gia mt trong các nút k( và hai nút
nhn c do tách nút. Khi xoá, nu nút u vào, ta th0 mn mt u vào t mt
trong hai nút anh em2m/3cha ít hn mu tin, ta phân phi l'i các u vào c a
nút2m/3k(. Nu c hai (u có úng cho hai nút anh em k( và xoá nút th 3. Nu
k nút c s0 dng trong tái phân u vào. Tuy(k-1)m/kphi (k-1 nút anh em),
m-i nút m bo cha ít nht nhiên, cái giá phi tr cho cp nht c a cách tip
cn này s4 cao hn.
5.6. File ch mc B - cây (B-Tree Index Files)
Ch mc B-cây tng t nh ch mc B+-cây. S khác bit là + ch- B-cây
lo'i b3 lu tr d tha các giá tr khoá tìm kim. Trong B-cây, các giá tr khoá ch
xut hin mt ln. Do các khoá tìm kim xut hin trong các nút không là lá không
xut hin + bt k: ni nào khác na trong B-cây, ta phi thêm mt tr,ng con tr3
cho m-i khoá tìm kim trong các nút không là lá. Con tr3 thêm vào này tr3 ti
ho6c mu tin trong file ho6c bucket tng ng.
Mt nút lá B-cây tng quát có d'ng:
P1
K1
P2
K2
Pm-1
Km-1
Pm
Mt nút không là lá có d'ng:
P1
B1
K1
P2
B2
K2
Pm-1
Bm-1
Km-1
Pm
Các con tr3 Pi là các con tr3 cây và c dùng nh trong B+-cây. Các con
tr3 Bi trong các nút không là lá là các con tr3 mu tin ho6c con tr3 bucket. Rõ ràng
là s giá tr khoá trong nút không lá nh3 hn s giá tr trong nút lá. S nút c
truy xut trong quá trình tìm kim trong mt B-cây ph thuc ni khoá tìm kim
c nh v.
Xoá trong mt B-cây phc t'p hn trong mt B+-cây. Xoá mt u vào xut
hin + mt nút không là lá kéo theo vic tuyn ch#n mt giá tr thích hp trong cây
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
16
con c a nút cha u vào b xoá. Nu khoá Ki b xoá, khoá nh3 nht trong cây con
c tr3 b+i Pi+1 phi c di chuyn vào v trí c a Ki. Nu nút lá còn l'i quá ít
u vào, cn thit các ho't ng b sung.
nh ngha ch mc trong SQL
Mt ch mc c t'o ra b+i lnh CREATE INDEX vi cú pháp
CREATE INDEX < index-name > ON < relation_name > (< attribute-list >)
attribute-list là danh sách các thuc tính c a quan h c dùng làm khoá tìm
kim cho ch mc. Nu mun khai báo là khoá tìm kim là khoá d tuyn, thêm
vào t khoá UNIQUE:
CREATE UNIQUE INDEX < index-name > ON < relation_name > (<
attribute-list >)
8 ây attribute-list phi t'o thành mt khoá d tuyn, nu không s4 có mt
thông báo l-i.
b3 i mt ch mc ta s0 dng lnh DROP:DROP INDEX < index-name >
5.7. Phng pháp b!m (HASHING)
5.7.1. B!m t"nh (Static Hashing)
Bt li c a t chc file tun t là ta phi truy xut mt cu trúc ch mc
nh v d liu, ho6c phi s0 dng tìm kim nh phân, và kt qu là có nhi(u ho't
ng I/O. T chc file da trên k* thut b!m cho phép ta tránh c truy xut mt
cu trúc ch mc. Phng pháp b!m c)ng cung cp mt phng pháp xây dng
các ch mc.
5.7.1.1. T chc tp b!m.
Trong t chc file b!m, ta nhn c a ch c a khi "a cha mt mu tin
mong mun b+i tính toán mt hàm trên giá tr khoá tìm kim c a mu tin. thut
ng bucket c dùng ch mt n v lu tr. Mt bucket kiu mu là mt khi
"a, nhng có th c ch#n nh3 hn ho6c ln hn mt khi "a.
G#i K là tp tt c các giá tr khoá tìm kim, B ký hiu tp tt c các a ch
bucket. Mt hàm b!m h là mt hàm t K vào B: h: K→B.
Ta xét mt s thao tác trên CSDL vi tp b!m.
Chèn mt mu tin vi giá tr khoá K vào trong file:
Trc ht tính h(K). Giá tr c a h(K) là a ch c a bucket s4
cha mu tin. Nu có không gian trong bucket cho mu tin, mu tin
c lu tr trong bucket.
Tìm kim mt mu tin theo giá tr khoá K:
u tiên tính h(K), ta tìm c bucket tng ng. Sau ó tìm
trong bucket này mu tin vi giá tr khoá K mong mun.
Xoá mu tin vi giá tr khoá K:
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
17
Tính h(K), tìm trong bucket tng ng mu tin mong mun, xoá
nó kh3i bucket.
Hàm b!m xu nht là hàm ánh x' tt c các giá tr khoá vào cùng mt bucket.
Mt hàm b!m lý t+ng là hàm phân phi (u các giá tr khoá vào các bucket, nh
vy m-i bucket cha mt s lng mu tin nh nhau. Ta mun ch#n mt hàm b!m
tho mãn các tiêu chun sau:
+ Phân phi (u: M-i bucket c gán cùng mt s giá tr khoá tìm
kim trong tp hp tt c các giá tr khoá có th.
+ Phân phi ngu nhiên: Trong tr,ng hp trung bình, các bucket
c gán mt s lng giá tr khoá tìm kim gn b.ng nhau.
Các hàm b!m phi c thit k thn tr#ng. Mt hàm b!m xu có th dn
n vic tìm kim chim mt th,i gian t7 l vi s khoá tìm kim trong file.
5.7.1.2. #iu khin tràn bucket
Khi chèn mt mu tin, nu bucket tng ng còn ch-, mu tin c chèn vào
bucket, nu không s4 xy ra tràn bucket. Tràn bucket do các nguyên do sau:
+ Các bucket không . S các bucket nB phi tho mãn nB > nr / fr trong ó
nr là tng s mu tin s4 lu tr, fr là s mu tin có th lp y trong mt bucket.
+ S lch. Mt vài bucket c gán cho mt s lng mu tin nhi(u hn các
bucket khác, nh vy mt bucket có th tràn trong khi các bucket khác vn còn
không gian. Tình hung này c g#i là s lch bucket. S lch xy ra do hai
nguyên nhân:
+ Nhi(u mu tin có cùng khoá tìm kim
+ Hàm b!m c ch#n phân phi các giá tr khoá không (u
Ta qun lý tràn bucket b.ng cách dùng các bucket tràn (phng pháp liên kt
ngoài). Nu mt mu tin phi c chèn vào bucket B nhng bucket B ã y, khi
ó mt bucket tràn s4 c cp cho B và mu tin c chèn vào bucket tràn này.
Nu bucket tràn c)ng y mt bucket tràn mi l'i c cp và c nh vy. Tt c
các bucket tràn c a mt bucket c “móc xích” vi nhau thành mt danh sách
liên kt. Vic i(u khin tràn dùng danh sách liên kt nh vy c g#i là dây
chuy(n tràn. i vi dây chuy(n tràn, thut toán tìm kim thay i chú ít: trc
tiên ta c)ng tính giá tr hàm b!m trên khoá tìm kim, ta c bucket B, kim tra
các mu tin, trong bucket B và tt c các bucket tràn tng ng, có giá tr khoá
khp vi giá tr tìm không.
Mt cách i(u khin tràn bucket na là phng pháp a ch m+ (b!m óng):
Khi cn chèn mt mu tin vào mt bucket nhng nó ã y, thay vì cp thêm
mt bucket tràn, ta s0 dng mt hàm b!m k trong mt dãy các hàm b!m c
ch#n tìm bucket khác cho mu tin, nu bucket sau c)ng y, ta l'i s0 dng mt
hàm b!m k và c nh vy Dãy các hàm b!m th,ng c s0 dng là
{h
i
(K)=(h
i-1
(K) +1) mod n
B
vi 1 ≤i ≤ n
B
-1 và h
0
là hàm b!m c s+}.
5.7.1.4. Ch mc b!m
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
18
Mt ch mc b!m t chc các khoá tìm kim cùng con tr3 kt hp vào mt
cu trúc file b!m nh sau: áp dng mt hàm b!m trên khoá tìm kim nh danh
bucket sau ó lu giá tr khoá và con tr3 kt hp vào bucket này (ho6c vào các
bucket tràn). Ch mc b!m th,ng là ch mc th cp.
5.7.2. B!m ng (Dynamic Hashing)
Trong k* thut b!m t"nh (static hashing), tp B các a ch bucket phi là c
nh. Vi các CSDL phát trin ln lên theo th,i gian. Nu ta s0 dng b!m t"nh cho
CSDL, ta có ba la ch#n:
+ Ch#n mt hàm b!m da trên kích c1 file hin hành. S la ch#n này s4 dn
n s suy gim hiu n!ng khi CSDL ln lên.
+ Ch#n mt hàm b!m da trên kích c1 file d oán trc cho mt th,i im
nào ó trong tng lai. M6c dù s suy gim hiu n!ng c ci thin, mt lng
áng k không gian có th b lãng phí lúc kh+i u.
+ T chc l'i theo chu k: cu trúc b!m áp ng s phát trin kích c1 file.
Mt s t chc l'i nh vy kéo theo vic la ch#n mt hàm b!m mi, tính l'i hàm
b!m trên m-i mu tin trong file và sinh ra cách gán bucket mi. T chc l'i là mt
ho't ng tn th,i gian. Hn na, nó òi h3i cm truy xut file trong khi ang t
chc l'i file.
K* thut b!m ng cho phép s0a i hàm b!m phù hp vi s t!ng ho6c
gim c a CSDL. Mt d'ng b!m ng c g#i là b!m có th m+ rng (extendable
hashing) c thc hin nh sau: Ch#n mt hàm b!m h vi các tính cht (u,
ngu nhiên và có mi(n giá tr tng i rng, ch5ng h'n, là mt s nguyên b bit (b
th,ng là 32). Khi kh+i u ta không s0 dng toàn b b bit b. i bit này c≤i≤giá
tr b!m. T'i mt th,i im, ta ch s0 dng i bit 0. i bit này c dùng nh mt
d,i (offset) trong mt bng a ch bucket ph. giá tr i t!ng lên hay gim xung
tu: theo kích c1 CSDL.
S i xut hin bên trên bng a ch bucket ch ra r.ng i bit c a giá tr b!m
h(K) c òi h3i xác nh bucket úng cho K, s này s4 thay i khi kích c1
file thay i. M6c dù i bit dc òi h3i tìm u vào úng trong bng a ch
bucket, mt s u vào bng k( nhau có th tr3 n cùng mt bucket. Tt c các
nh vy có chung hash prefix chung, nhng chi(u dài c a prefix này có th nh3
hn i. Ta kt hp mt s nguyên ch dài c a hash prefix chung này, ta s4 ký
hiu s nguyên kt hp vi bucket j là ij. S các u vào bng a ch bucket tr3
n bucket j là 2
i−ij
.
Cu trúc b!m có th m+ rng tng quát
nh v bucket cha giá tr khoá tìm kim K , ta ly i bit cao u tiên c a
h(K), tìm trong u vào bng tng ng vi chu-i bit này và ln theo con tr3 trong
u vào bng này. chèn mt mu tin vi giá tr khoá tìm kim K, tin hành th
tc dnh v trên, ta c bucket, gi s0 là bucket j. Nu còn cho cho mu tin, chèn
mu tin vào trong bucket ó. Nu không, ta phi tách bucket ra và phân phi l'i
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
19
các mu tin hin có cùng mu tin mi. tách bucket, u tiên ta xác nh t giá
tr b!m có cn t!ng s bit lên hay không.
Nu i = ij , ch có mt u vào trong bng a ch bucket tr3 n bucket j. ta
cn t!ng kích c1 c a bng a ch bucket sao cho ta có th bao hàm các con tr3 n
hai bucket kt qu c a vic tách bucket j b.ng cách xét thêm mt bit c a giá tr
b!m. t!ng giá tr i lên mt, nh vy kích c1 c a bng a ch bucket t!ng lên gp
ôi. M-i mt u vào c thay b+i hai u vào, c hai cùng cha con tr3 c a u
vào gc. Bây gi, hai u vào trong bng a ch bucket tr3 ti bucket j. Ta nh v
mt bucket mi (bucket z), và 6t u vào th hai tr3 ti bucket mi, 6t ij và iz
v( i, tip theo ó m-i mt mu tin trong bucket j c b!m l'i, tu: thuc vào i bit
u tiên, s4 ho6c + l'i bucket j ho6c c cp phát cho bucket mi c t'o.
Nu i > ij khi ó nhi(u hn mt u vào trong bng a ch bucket tr3 ti
bucket j. nh vy ta có th tách bucket j mà không cn t!ng kích c1 bng a ch
bucket. Ta cp phát mt bucket mi (bucket z) và 6t ij và iz n giá tr là kt qu
c a vic thêm 1 vào giá tr ij gc. K n, ta i(u chnh các u vào trong bng a
ch bucket trc ây tr3 ti bucket j. Ta l'i n0a u các u vào, và 6t tt c
các u vào còn l'i tr3 ti bucket mi t'o (z). Tip theo, m-i mu tin trong trong
bucket j c b!m l'i và c cp phát cho ho6c vào bucket j ho6c bucket z.
xoá mt mu tin vi giá tr khoá K, trc tiên ta thc hin th tc nh v,
ta tìm c bucket tng ng, g#i là j, ta xoá c khoá tìm kim trong bucket ln
mu tin mu tin trong file. bucket c)ng b xoá, nu nó tr+ nên r-ng. Chú ý r.ng, t'i
im này, mt s bucket có th c kt hp l'i và kích c1 c a bng a ch
bucket s4 gim i mt n0a.
u im chính c a b!m có th m+ rng là hiu n!ng không b suy gim khi
file t!ng kích c1, hn na, tng phí không gian là ti tiu m6c dù phi thêm vào
không gian cho bng a ch bucket. Mt khuyt im c a b!m có th m+ rng là
vic tìm kim phi bao hàm mt mc gián tip: ta phi truy xut bng a ch
bucket trc khi truy xut n bucket. Vì vy, b!m có th m+ rng là mt k* thut
rt hp dn.
5.7.3. Ch$n ch mc hay b!m?
Ta ã xét qua các s 2: ch mc th t, b!m. Ta có th t chc file các mu
tin b+i ho6c s0 dng t chc file tun t ch mc, ho6c s0 dng B+-cây, ho6c s0
dng b!m M-i s 2 có nhng các u im trong các tình hung nht nh. Mt
nhà thc thi h CSDL có th cung cp nhi(u nhi(u s 2, l'i vic quyt nh s0
dng s 2 nào cho nhà thit k CSDL. có mt s la ch#n khôn ngoan, nhà
thc thi ho6c nhà thit k CSDL phi xét các yu t sau:
Cái giá phi tr cho vic t chc l'i theo nh k: c a ch mc ho6c b!m có
chp nhn c hay không?
Tn s tng i c a các ho't ng chèn và xoá là bao nhiêu ?
Có nên ti u hoá th,i gian truy xut trung bình trong khi th,i gian truy xut
tr,ng hp xu nht t!ng lên hay không ?
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
20
Các kiu vn tin mà các ng,i s0 dng thích 6t ra là gì ?
CÂU H%I VÀ BÀI TP
1. Xét vic xoá mu tin 5 trong file:
So sánh các i(u tt/xu tng i c a các k* thut xoá sau:
Di chuyn mu tin 6 n không gian ch chim b+i mu tin 5, r2i di chuyn
mu tin 7 n ch- b chim b+i mu tin 6.
Di chuyn mu tin 7 n ch- b chim b+i mu tin 5
ánh du xoá mu tin 5.
2.V4 cu trúc c a file:
Hình 22
Sau m-i bc sau:
Insert(Brighton, A-323, 1600)
Xoá mu tin 2
Insert(Brighton, A-636, 2500)
3. V4 l'i cu trúc file:
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
21
Sau m-i bc sau:
Insert(Mianus, A-101, 2800)
Insert(Brighton, A-323, 1600)
Delete (Perryridge, A-102, 400)
4. i(u gì s4 xy ra nu chèn mu tin (Perryridge, A-999, 5000) vào file
trong bài 3.
5.V4 l'i cu trúc file di ây sau m-i bc sau:
Insert(Mianus, A-101, 2800
Insert(Brighton, A-323, 1600)
Delete (Perryridge, A-102, 400)
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
22
6. Nêu lên mt ví d, trong ó phng pháp không gian d tr biu di9n
các mu tin dài thay i phù hp hn phng pháp con tr3.
7. Nêu lên mt ví d, trong ó phng pháp con tr3 biu di9n các mu tin
dài thay i phù hp hn phng pháp không gian d tr.
8. Nu mt khi tr+ nên r-ng sau khi xoá. Khi này c tái s0 dng vào
mc ích gì ?
9. Trong t chc file tun t, t'i sao khi tràn c s0 dng thm chí, t'i th,i
im ang xét, ch có mt mu tin tràn ?
10. Lit kê các u im và nhc im c a m-i mt trong các chin lc lu
tr CSDL quan h sau:
Lu tr m-i quan h trong mt file
Lu tr nhi(u quan h trong mt file
11. Nêu mt ví d biu thc 'i s quan h và mt chin lc x0 lý vn tin
trong ó:
MRU phù hp hn LRU
LRU phù hp hn MRU
12. Khi nào s0 dng ch mc 6c phù hp hn ch mc tha ? Gii thích.
13. Nêu các im khác nhau gia ch mc s cp và ch mc th cp .
14. Có th có hai ch mc s cp i vi hai khoá khác nhau trên cùng mt
quan h ? Gii thích.
15. Xây dng mt B
+
-cây i vi tp các giá tr khoá: (2, 3, 5, 7, 11, 15, 19,
25, 29, 33, 37, 41, 47). Gi thit ban u cây là r-ng và các giá tr c chèn theo
th t t!ng. Xét trong các tr,ng hp sau:
M-i nút cha ti a 4 con tr3
M-i nút cha ti a 6 con tr3
M-i nút cha ti a 8 con tr3
16. i vi m-i B
+
-cây trong bài tp 15, trình bày các bc thc hin trong
các vn tin sau:
Tìm mu tin vi giá tr khoá tìm kim 11
Tìm các mu tin vi giá tr khoá n.m trong khong [ 7 19 ]
17. i vi m-i B
+
-cây trong bài tp 15. V4 cây sau m-i mt trong dãy ho't
ng sau:
Insert 9
Insert 11
Insert 11
Delete 25
Delete 19
18. Cùng câu h3i nh trong bai 15 nhng i vi B-cây
GT CSDL – Chng 5. Lu tr và cu trúc tp tin
NTD – Khoa Tin – HSP Hu
23
19. Nêu và gii thích s khác nhau gia b!m t"nh và b!m ng. Nêu các u,
nhc im c a m-i k* thut này.
20. i(u gì gây ra s tràn bucket trong mt t chc file b!m ? Làm gì
gim s tràn này ?
21. Gi s0 ta ang s0 dng b!m có th m+ rng trên mt trên mt file cha
các mu tin vi các giá tr khoá tìm kim sau:
2, 3, 5, 7, 11, 17, 19, 23, 37, 31, 35, 41, 49, 55
V4 cu trúc b!m có th m+ rng i vi file này nu hàm b!m là h(x) = x
mod 8 và m-i bucket có th cha nhi(u nht c ba mu tin.
22. V4 l'i cu trúc b!m có th m+ rng trong bài tp 15 sau m-i bc sau:
Xoá 11
Xoá 55
Chèn 1
Chèn 15
TÀI LI&U THAM KH'O
[1]. Ph'm Gia Tin, Ph'm Th Phi, H qun tr c s+ d liu, B môn h
thng máy tính & truy(n thông, Khoa CNTT, H Cn Th, 2007.