B!m ng Dynamic Hashing..... Các i sách thay th buffer buffer-replacement policies... Bên c'nh ó, các h th ng khôi ph c crash-recovery subsystem s4 áp 6t các ràng bu c nghiêm nh6t lên vi
Trang 1M C L C
CH NG V L U TR VÀ C U TRÚC T P TIN 2
M c ích: 2
Yêu c u: 2
5.1 B qu n tr buffer 3
5.2 Cách th c t ch c file 4
5.2.1 M u tin v i dài c nh (Fixed-Length Records) 4
5.2.2 M u tin v i dài thay i (Variable-Length Records) 5
5.3 T ch c các m u tin trong file 6
5.3.1 T ch c file tu n t 7
5.3.2 T ch c file c m 7
5.3.3 L u tr t i n d li u 8
5.4 Ch m c 8
5.4.1 Ch m c c s p 9
5.4.2 Ch m c th c p 12
5.5 File ch m c B+-CÂY (B+-Tree Index file) 13
5.5.1 C u trúc c a B+-cây 13
5.5.2 Các v n tin trên B+-cây 14
5.5.3 C p nh t trên B+-cây 14
5.5.4 T ch c file B+-cây 15
5.6 File ch m c B - cây (B-Tree Index Files) 15
5.7 Ph ng pháp b!m (HASHING) 16
5.7.1 B!m t"nh (Static Hashing) 16
5.7.1.1 T ch c t p b!m 16
5.7.2 B!m ng (Dynamic Hashing) 18
5.7.3 Ch#n ch m c hay b!m? 19
CÂU H$I VÀ BÀI T P 20
TÀI LI%U THAM KH&O 23
Trang 2d li u và quan tr ng h n c là ph i cho truy c p d li u c n thi t mau chóng
- Các c u trúc tr giúp cho truy xu t nhanh d li u c trình bày là: ch
m c (indice), B+ cây (B+ tree), b m (hashing) Các thi t b l u tr ( a) có th b
h ng hóc không l ng tr c, các k thu t RAID cho m t gi i pháp hi u qu cho
v n này
Yêu c u:
- Hi u rõ các c i m c a các thi t b l u tr , cách t ch c l u tr , truy
xu t a
- Các k thu t t ch c các m u tin trong file, các k thu t t ch c file
- Hi u và v n d ng các k thu t h tr truy c p thông tin: ch m c (th t ,
B+ cây, b m.)
tìm hi u t t ph n này, b'n c n nh m t s ph n trong môn h#c h i(u hành và ki n trúc máy tính, c)ng nh môn h#c b o trì h th ng Các k* thu t liên quan n các ph ng ti n l u tr ngoài (b nh ngoài), các v n ( v( b nh m (buffer), cách truy xu t #c ghi I/O và chi phí CPU khi truy xu t d li u, các khái
ni m phân trang – phân o'n… có th #c thêm trong các tài li u liên quan các môn h#c nói trên
M t c s+ d li u c ánh x' vào m t s các file khác nhau c duy trì b+i h i(u hành n(n Các file này l u trú th ,ng tr c trên các "a v i backup trên b!ng M-i file c phân ho'ch thành các n v l u tr dài c nh c g#i
là kh i - n v cho c c p phát l u tr và truy(n d li u
M t kh i có th ch a m t vài h'ng m c d li u (data item) Ta gi thi t không m t h'ng m c d li u nào tr i ra trên hai kh i M t cách gi m s truy
xu t "a là gi nhi(u kh i có th c trong b nh chính M c ích là khi m t
kh i c truy xu t, nó ã n.m s/n trong b nh chính và nh v y không c n m t truy xu t "a nào c
Do không th l u t t c các kh i trong b nh chính, ta c n qu n tr c p phát không gian s/n có trong b nh chính l u tr các kh i B m (Buffer) là m t
ph n c a b nh chính s/n có l u tr b n sao kh i "a Luôn có m t b n sao trên "a cho m-i kh i, song các b n sao trên "a c a các kh i là các phiên b n c)
h n so v i phiên b n trong buffer H th ng con m trách c p phát không gian buffer c g#i là b qu n tr buffer
Trang 3m t s kh i khác, n u c n thi t, l y không gian cho kh i m i Kh i c rút ra
ch c vi t l'i trên "a khi nó có b s0a i k t l n c vi t lên "a g n nh t Sau ó b qu n tr buffer #c kh i t "a vào buffer, và chuy n a ch c a kh i trong b nh chính cho ng ,i yêu c u B qu n tr buffer không khác gì nhi(u so
v i b qu n tr b nh o, m t i m khác bi t là kích c1 c a m t CSDL có th r t
l n không ch a toàn b trong b nh chính do v y b qu n tr buffer ph i s0
d ng các k* thu t tinh vi h n các s 2 qu n tr b nh o ki u m u M t s k* thu t c a b qu n tr buffer:
Chi n lu c thay th : Khi không có ch- trong buffer, m t kh i ph i c xoá kh3i buffer tr c khi m t kh i m i c #c vào Thông th ,ng, h i(u hành s0
d ng s 2 LRU (Least Recently Used) vi t lên "a, kh i ít c dùng g n ây
nh t, c xoá b3 kh3i buffer
Kh i ch t (pinned blocks): h CSDL có th khôi ph c sau s c , c n thi t
ph i h'n ch th,i gian khi vi t l'i lên "a m t kh i M t kh i không cho phép vi t l'i lên "a c g#i là kh i ch t
Xu t ra b t bu c các kh i (Forced output of blocks): Có nh ng tình hu ng trong ó c n ph i vi t l'i m t kh i lên "a, cho dù không gian buffer mà nó chi m
là không c n n Vi c vi t này c g#i là s xu t ra b t bu c c a m t kh i Lý
do c a yêu c u xu t ra b t bu c kh i là n i dung c a b nh chính s4 b m t khi có
s c , ng c l'i d li u trên "a thì không
Các i sách thay th buffer (buffer-replacement policies)
M c ích c a chi n l c thay th kh i trong buffer là t i thi u hoá các truy
xu t "a Các h i(u hành th ,ng s0 d ng chi n l c LRU thay th kh i Tuy nhiên, m t h CSDL có th d oán d li u có th c n #c trong t ng lai Yêu
c dùng g n ây nh t!
B qu n tr buffer s0 d ng các thông tin th ng kê liên quan n xác su t m t yêu c u s4 tham kh o m t d li u riêng bi t nào ó Ch5ng h'n, t i n d li u và các ch m c là m t trong nh ng ph n c truy xu t th ,ng xuyên nh t c a CSDL Do ó, b qu n tr buffer s4 không xoá các kh i t i n d li u, ch m c kh3i b nh chính tr phi các nhân t khác b c ch làm i(u ó
Trang 4Trong b qu n tr buffer còn có các h con nh.m i(u khi n t ng tranh vì
t t nhiên s4 có nhi(u kh i cùng truy c p lên b nh m Các k* thu t i(u khi n
t ng tranh có th xem thêm trong ph n i(u khi n t ng tranh + ph n sau và trong môn h#c h i(u hành
Bên c'nh ó, các h th ng khôi ph c (crash-recovery subsystem) s4 áp 6t các ràng bu c nghiêm nh6t lên vi c thay th kh i N u m t kh i b s0a i, b
qu n tr buffer không c phép vi t l'i phiên b n m i c a kh i trong buffer lên
"a, vì nó s4 phá hu7 phiên b n c) Thay vào ó, ph i xem xét quy(n vi t l'i t h
th ng khôi ph c tr c khi vi t kh i H th ng khôi ph c có th òi h3i m t s
kh i nh t nh khác ph i xu t b t bu c (forced output) ra "a
5.2 Cách th c t ch c file
M t file c t ch c logic nh m t dãy các m u tin (record) Các m u tin này c ánh x' lên các kh i "a Các kh i có kích c1 c nh c xác nh b+i tính ch t v t lý c a "a và b+i h i(u hành, song kích c1 c a m u 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 ch c m t file, ó là file v i các m u tin v i dài c nh và file v i m u tin có dài không c nh
5.2.1 M u tin v i dài c nh (Fixed-Length Records)
Cách ti p c n n gi n này n y sinh nh ng v n ( sau:
Khi xóa m t m u tin thì không gian b chi m b+i m u tin b xoá ph i c
l p y b+i m u tin khác c a file ho6c ta ph i ánh d u m u tin b xoá
Kích c1 kh i ph i là b i c a kích c1 c a m t m u tin, n u không m t s m u tin s4 b t chéo qua biên c a kh i, t c là m t ph n m u tin c l u trong m t
kh i, m t ph n khác c l u trong m t kh i khác Khi ó òi h3i ph i truy xu t hai kh i #c/vi t m t m u tin "b c c u" ó
Khi m t m u tin b xoá, ta có th di chuy n m u tin k( sau nó vào không gian b chi m m t cách hình th c b+i m u tin b xoá, r2i m u tin k ti p vào không gian b chi m c a m u tin v a c di chuy n, c nh v y cho n khi m-i m u tin i sau m u tin b xoá c d ch chuy n h ng v( u Cách ti p c n này òi h3i ph i di chuy n m t s l n các m u tin M t cách ti p c n khác n gi n h n là
di chuy n m u tin cu i cùng vào không gian b chi m b+i m u tin b xoá Cách
ti p c n này òi h3i ph i truy xu t kh i b sung Do vi c chèn vào m t m u tin
th ,ng x y ra th ,ng xuyên h n ho't ng xoá, nên ta có th ch p nh n vi c
"ng3" không gian b chi m b+i m u tin b xoá, và ch, m t ho't ng chèn n sau tái s0 d ng không gian ó Nh v y c n a vào c u trúc b sung cho m t file
8 u m-i file, c c p phát m t s byte nh t nh làm header c a file Header này s4 ch a ng thông tin v( file Header ch a a ch c a m u tin b xoá th
nh t, trong n i dung c a m u tin này có ch a a ch c a m u tin b xoá th hai và
c nh v y Nh v y, các m u tin b xoá s4 t'o ra m t danh sách liên k t d c g#i
là danh sách t do (free list) Khi chèn m u tin m i, ta s0 d ng con tr3 u danh
Trang 5sách c ch a trong header xác nh danh sách, n u danh sách không r-ng ta chèn m u tin m i vào vùng c tr3 b+i con tr3 u danh sách n u không ta chèn
m u tin m i vào cu i file
Chèn và xoá i v i file m u tin dài c nh c th c hi n n gi n vì không gian c gi i phóng b+i m u tin b xoá úng b.ng không gian c n thi t chèn m t m u tin i v i file c a các m u tin dài thay i v n ( tr+ nên ph c t'p h n nhi(u
5.2.2 M u tin v i dài thay i (Variable-Length Records)
M u tin trong 1 file có dài thay i do m t s lý do sau:
- Vi c l u tr nhi(u ki u m u tin trong m t file
- Ki u m u tin cho phép dài tr ,ng thay i
- Ki u m u tin cho phép l6p l'i các tr ,ng
Có nhi(u k* thu t th c hi n m u tin dài thay i minh ho' ta xét các bi u di9n khác nhau trên các m u tin dài thay i có nh d'ng sau:
Bi u di n chu i byte (Byte-String Representation)
M t cách n gi n th c hi n các m u tin dài thay i là g n m t ký
hi u 6c bi t End-of-record (⊥) vào cu i m-i record Khi ó có th l u m-i m u tin nh m t chu-i byte liên ti p Thay vì s0 d ng m t ký hi u 6c bi t + cu i c a m-i m u tin, m t phiên b n c a bi u di9n chu-i byte là l u tr dài m u tin +
b t u c a m-i m u tin
Bi u di9n chu-i byte có m t s h'n ch sau:
- Khó s0 d ng không gian b chi m hình th c b+i m t m u tin b xoá, i(u này d n n m t s l n các m nh nh3 c a "a b lãng phí
- Không có không gian cho s phát tri n các m u tin N u m t m u tin dài thay i dài ra, nó ph i c di chuy n sang v trí khác và nh v y s4 t n chi phí truy c p file
M t d'ng s0a i c a bi u di9n chu-i byte là c u trúc khe-trang (slotted-page structure) th ,ng c dùng t ch c m u tin trong m t kh i n
Trong c u trúc slotted-page, có m t header + b t u c a m-i kh i, ch a các thông tin sau:
- S các u vào m u tin (record entries) trong header
- i m cu i không gian t do (End of Free Space) trong kh i
- M t m ng các u vào ch a v trí và kích c1 c a m-i m u tin
Các m u tin hi n hành c c p phát k( nhau trong kh i, b t u t cu i
kh i, Không gian t do trong kh i là m t vùng k( nhau, n.m gi a u vào cu i cùng trong m ng header và m u tin u tiên Khi m t m u tin c chèn vào, không gian c p phát cho nó + cu i c a không gian t do, và u vào t ng ng
v i nó c thêm vào header
Trang 6N u m t m u tin b xoá, không gian b chi m b+i nó c gi i phóng, u vào ng v i nó c ánh d u xoá Sau ó, các m u tin trong kh i tr c m u tin
b xoá c di chuy n sao cho không gian t do c a kh i l'i là ph n n.m gi a u vào cu i cùng c a m ng header và m u tin u tiên Con tr3 tr3 n i m cu i không gian t do và các con tr3 ng v i m u tin b di chuy n c c p nh t S
l n lên hay nh3 i c a m u tin c)ng s0 d ng k* thu t t ng t (trong tr ,ng h p
kh i còn không gian cho s l n lên c a m u tin)
Bi u di n dài c nh
M t cách khác th c hi n m u tin dài thay i m t cách hi u qu trong
m t h th ng file là s0 d ng m t ho6c m t vài m u tin dài c nh bi u di9n
m t m u tin dài thay i Hai k* thu t th c hi n file c a các m u tin dài thay i s0 d ng m u tin dài c nh là:
Không gian d tr (reserved space) Gi thi t r.ng các m u tin có dài không v t quá m t ng 1ng ( dài t i a) Ta có th s0 d ng m u tin dài c
nh (có dài t i a), Ph n không gian ch a dùng n c l p y b+i m t ký
t 6c bi t: null ho6c End-of-record
Contr3 (Pointers) M u tin dài thay i c bi u di9n b+i m t danh sách các m u tin dài c nh, c "móc xích" v i nhau b+i các con tr3
S b t l i c a c u trúc con tr3 là lãng phí không gian trong t t c các m u tin ngo'i tr m u tin u tiên trong danh sách gi i quy t v n ( này ng ,i ta ( ngh phân các kh i trong file thành hai lo'i:
Kh i neo (Anchor block) Ch ch a các m u tin u tiên trong danh sách
Kh i tràn (Overflow block) Ch a các m u tin còn l'i c a danh sách
Nh v y, t t c các m u tin trong m t kh i có cùng dài, cho dù file có th
ch a các m u tin không cùng dài
5.3 T ch c các m u tin trong file
Trong ph n trên ta ã xét làm th nào bi u di9n các m u tin trong m t c u trúc file.M t quan h c th hi n là m t t p h p các m u tin Gi s0 m t t p h p các m u tin nh th ã c cho tr c, v n ( 6t ra là làm th nào t ch c chúng trong m t file Có m t s cách t ch c sau:
T ch c file ng (Heap File Organization) Trong t ch c này, m t m u tin
b t k: có th c l u tr + b t k: n i nào trong file, + ó có không gian cho nó Không có th t nào gi a các m u tin M t file t ng ng v i m t quan h
T ch c file tu n t ( Sequential File Organization) Trong t ch c này, các
m u tin c l u tr th t tu n t , d a trên giá tr c a khoá tìm ki m c a m-i
m u tin
T ch c file b!m (Hashed File Organization) Trong t ch c này, có m t hàm b!m c tính toán trên thu c tính nào ó c a m u tin K t qu c a hàm b!m xác nh m u tin c b trí trong kh i nào trong file T ch c này liên h ch6t ch4 v i c u trúc ch m c
Trang 7T ch c file c m (Clustering File Organization) Trong t ch c này, các
m u tin c a m t vài quan h khác nhau có th c l u tr trong cùng m t file Các m u tin có liên h c a các quan h khác nhau c l u tr trên cùng m t kh i sao cho m t ho't ng I/O em l'i các m u tin có liên h t t t c các quan h 5.3.1 T ch c file tu n t
T ch c file tu n t c thi t k x0 lý hi u qu các m u tin trong th t
c s p d a trên m t khoá tìm ki m (search key) nào ó cho phép tìm l'i nhanh chóng các m u tin theo th t khoá tìm ki m, ta "xích" các m u tin l'i b+i các con tr3 Con tr3 trong m-i m u tin tr3 t i m u tin ti p theo, theo th t khoá tìm ki m H n n a, t i u hoá s kh i truy xu t trong x0 lý file tu n t , ta l u
tr v t lý các m u tin theo th t khoá tìm ki m ho6c g n v i khoá tìm ki m nh
có th
T ch c file tu n t cho phép #c các m u tin theo th t c s p nh.m phuc v cho m c ích trình bày c)ng nh cho các thu t toán x0 lý v n tin (query-processing algorithms)
Khó kh!n g6p ph i c a t ch c này là vi c duy trì th t tu n t v t lý c a các m u tin khi x y ra các ho't ng chèn, xoá Ta có th qu n tr v n ( xoá b+i dùng dây chuy(n các con tr3 nh ã trình bày tr c ây i v i chèn, ta có th áp
m u tin theo th t c a khoá tìm ki m
5.3.2 T ch c file c m
Nhi(u h CSDL quan h , m-i quan h c l u tr trong m t file sao cho có
th l i d ng c toàn b nh ng cái mà h th ng file c a i(u hành cung c p Thông th ,ng, các b c a m t quan h c bi u di9n nh các m u tin dài c
nh Nh v y các quan h có th ánh x' vào m t c u trúc file S th c hi n n
gi n ó c a h CSDL quan h r t phù h p v i các h CSDL c thi t k cho các máy tính cá nhân Trong các h th ng ó, kích c1 c a CSDL nh3
Tuy nhiên, nhi(u h CSDL quy mô l n không nh, c y tr c ti p vào h i(u hành n(n qu n tr file Thay vào ó, m t file c c p phát cho h CSDL T t
c các quan h c l u tr trong m t file này, và s qu n tr file này thu c v( h CSDL C u trúc file d'ng này, c g#i là gom c m (clustering), cho phép ta #c nhi(u m u tin c yêu c u trong m t kh i
Tuy nhiên, c u trúc gom c m trên l'i t3 ra không có l i b.ng t ch c l u m-i quan h trong m t file riêng, i v i m t s câu v n tin
Trang 8Vi c xác nh khi nào thì gom c m th ,ng ph thu c vào ki u câu v n tin
mà ng ,i thi t k CSDL ngh" r.ng nó x y ra th ,ng xuyên nh t S0 d ng th n tr#ng gom c m có th c i thi n hi u n!ng áng k trong vi c x0 lý câu v n tin 5.3.3 L u tr t i n d li u
M t h CSDL c n thi t duy trì d li u v( các quan h , nh s 2 c a các quan h Thông tin này c g#i là t i n d li u (data dictionary) hay m c l c
h th ng (system catalog) M t s thông tin mà h th ng l u tr là:
- Các tên c a các quan h
- Các tên c a các thu c tính c a m-i quan h
- Các mi(n (giá tr ) và các dài c a các thu c 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 d li u th ng kê và mô t v( các quan h có th c)ng c l u tr :
- S b trong m-i quan h
- Ph ng pháp l u tr c s0 d ng cho m-i quan h (c m hay không) Các thông tin v( m-i ch m c trên m-i quan h c)ng c n c l u tr :
S ch#n l a chính xác bi u di9n d li u h th ng s0 d ng các quan h nh
th nào là do ng ,i thi t k h th ng quy t nh
5.4 Ch m c
Xét ho't ng tìm sách trong m t th vi n Ví d ta mu n tìm m t cu n sách
c a m t tác gi nào ó u tiên ta tra trong m c l c tác gi , m t t m th< trong
m c l c này s4 ch cho ta bi t có th tìm th y cu n sách ó + âu Các th< trong
m t m c l c c th vi n s p x p th t theo v n ch cái , nh v y giúp ta có th
Trang 9tìm n th< c n tìm nhanh chóng không c n ph i duy t qua t t c các th< Ch m c
c a m t file r t gi ng v i m t m c l c trong m t th vi n Tuy nhiên, ch m c
c làm nh m c l c c mô t nh trên, trong th c t , s4 quá l n c qu n
lý m t cách hi u qu Thay vào ó, ng ,i ta s0 d ng các k* thu t ch m c tinh t
i v i c hai ki u này, ta s4 nêu ra m t vài k* thu t M-i k* thu t phù h p
v i các ng d ng CSDL riêng bi t M-i k* thu t ph i c ánh giá trên c s+ c a các nhân t sau:
Ki u truy xu t: Các ki u truy xu t c h- tr hi u qu Các ki u này bao hàm c tìm ki m m u tin v i m t giá tr thu c tính c th ho6c tìm các m u tin v i giá tr thu c tính n.m trong m t kho ng xác nh
Th,i gian truy xu t: Th,i gian tìm ki m m t h'ng m c d li u hay m t
ch m c trên khoá tìm ki m xác nh th t này c a file c g#i ch m c s c p (primary index) Các ch m c s c p c)ng c g#i là ch m c c m (clustering index) Khoá tìm ki m c a ch m c s c p th ,ng là khoá s c p (khoá chính) Các ch m c, khoá tìm ki m c a nó xác nh m t th t khác v i th t c a file,
Trang 10c g#i là các ch m c th c p (secondary indices) hay các ch m c không c m (nonclustering indices)
Hình 1
5.4.1.1 Ch m c s c p
Trong ph n này, ta gi thi t r.ng t t c các file c s p th t tu n t trên
m t khoá tìm ki m nào ó Các file nh v y, v i m t ch m c s c p trên khoá tìm
ki m này, c g#i là file tu n t ch m c (index-sequential files) Chúng bi u di9n m t trong các s 2 x a nh t c dùng trong h CSDL Chúng c thi t k cho các ng d ng òi h3i c x0 lý tu n t toàn b file l n truy xu t ng u nhiên n
Trang 11Hình 3
Có hai lo'i ch m c c s p:
Ch m c 6c M-i m u tin ch m c ( u vào ch m c/ index entry) xu t hi n
i v i m-i giá tr khoá tìm ki m trong file M u tin ch m c ch a giá tr khoá tìm
ki m và m t con tr3 t i m u tin d li u u tiên v i giá tr khoá tìm ki m ó
Ch m c th a M t m u tin ch m c c t'o ra ch v i m t s giá tr C)ng
nh v i ch m c 6c, m-i m u tin ch m c ch a m t giá tr khoá tìm ki m và m t con tr3 t i m u tin d li u u tiên v i giá tr khoá tìm ki m này nh v m t
m u tin, ta tìm u vào ch m c v i giá tr khoá tìm ki m l n nh t trong các giá tr khoá tìm ki m nh3 h n ho6c b.ng giá tr khoá tìm ki m ang tìm Ta b t u t
m u tin c tr3 t i b+i u vào ch m c, và l n theo các con tr3 trong file (d
li u) n t n khi tìm th y m u tin mong mu n
Ch m c 6c cho phép tìm ki m m u tin nhanh h n ch m c th a, song ch
m c th a l'i òi h3i ít không gian h n ch m c 6c H n n a, ch m c th a yêu
c u m t t n phí duy trì nh3 h n i v i các ho't ng chèn, xoá
Ng ,i thi t k h th ng ph i cân nh c s cân i gi a th,i truy xu t và t n phí không gian M t tho hi p t t là có m t ch m c th a v i m t u vào ch m c cho m-i kh i, vì nh v y cái giá n i tr i trong x0 lý m t yêu c u CSDL là th,i gian mang m t kh i t "a vào b nh chính M-i khi m t kh i c mang vào, th,i gian quét toàn b kh i là không áng k S0 d ng ch m c th a, ta tìm kh i
ch a m u tin c n tìm Nh v y, tr phi m u tin n.m trên kh i tràn, ta t i thi u hoá
c truy xu t kh i, trong khi gi c kích c1 c a ch m c nh3 nh có th
5.4.1.2 Ch m c nhi u m c
Ch m c có th r t l n, ngay c khi s0 d ng ch m c th a và không th ch a trong b nh m t l n Tìm ki m nh phân có th c s0 d ng tìm m t u vào trên file ch m c, song v n ph i truy xu t kh i, v i B là s kh i "a ch a ch
m c N u B l n, th,i gian truy xu t này v n là khá l n H n n a n u s0 d ng các
kh i tràn, tìm ki m nh phân không s0 d ng c và nh v y vi c tìm ki m ph i