lưu trữ và cấu trúc tập tin

23 335 0
lưu trữ và cấu trúc tập tin

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

GT CSDL – Chng 5. Lu tr cu trúc tp tin NTD – Khoa Tin – HSP Hu 1 MC LC CHNG V. LU TR 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 BÀI TP 20 TÀI LI%U THAM KH&O 23 GT CSDL – Chng 5. Lu tr cu trúc tp tin NTD – Khoa Tin – HSP Hu 2 CHNG V. LU TR CU TRÚC TP TIN Mc ích: - Trình bày các vn  liên quan n vn  lu tr d liu trên lu tr ngoài. - Vic lu tr d liu c t chc sao cho có th lu c mt lng ln d liu 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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 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 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 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 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. GT CSDL – Chng 5. Lu tr cu trúc tp tin NTD – Khoa Tin – HSP Hu 3 5.1. B qun tr buffer Các chng trình trong mt h CSDL a ra các yêu cu cho b qun tr buffer khi chúng cn mt khi "a. Nu khi này ã s/n sàng trong buffer, a ch khi trong b nh chính c chuyn cho ng,i yêu cu. Nu khi cha có trong buffer, b qun tr buffer u tiên cp phát không gian trong buffer cho khi, rút ra m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, 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u c a mt ng,i s0 dng i vi h CSDL bao g2m mt s bc. H CSDL có th xác nh trc nhng khi nào s4 là cn thit b.ng cách xem xét m-i mt trong các bc c yêu cu  thc hin ho't ng c yêu cu b+i ng,i s0 dng. Nh vy, khác vi h i(u hành, h CSDL có th có thông tin liên quan n tng lai, chí ít là tng lai gn. Trong nhi(u tr,ng hp, chin lc thay th khi ti u cho h CSDL là MRU (Most Recently Used): Khi b thay th s4 là khi mi 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 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 ó. GT CSDL – Chng 5. Lu tr cu trúc tp tin NTD – Khoa Tin – HSP Hu 4 Trong 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 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 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 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á, 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 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 GT CSDL – Chng 5. Lu tr cu trúc tp tin NTD – Khoa Tin – HSP Hu 5 sá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 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 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í 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 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, u vào tng ng vi nó c thêm vào header. GT CSDL – Chng 5. Lu tr cu trúc tp tin NTD – Khoa Tin – HSP Hu 6 N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 mu tin u tiên. Con tr3 tr3 n im cui không gian t do 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. GT CSDL – Chng 5. Lu tr cu trúc tp tin NTD – Khoa Tin – HSP Hu 7 T 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 dng các quy tc sau: - nh v mu tin trong file ng trc mu tin c chèn theo th t khoá tìm kim. - Nu có mu tin t do (không gian c a mu tin b xoá) trong cùng khi, chèn mu tin vào khi này. Nu không, chèn mu tin mi vào mt khi tràn. Trong c hai tr,ng hp, cn phi i(u chnh các con tr3 sao cho nó móc xích các 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, 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. GT CSDL – Chng 5. Lu tr cu trúc tp tin NTD – Khoa Tin – HSP Hu 8 Vi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) 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 nh ngh"a c a các view này. - Các ràng buc toàn v;n. Nhi(u h thng còn lu tr các thông tin liên quan n ng,i s0 dng h thng: - Tên c a ng,i s0 dng c phép. - Gii trình thông tin v( ng,i s0 dng. Các d liu thng kê 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 : - Tên c a ch mc - Tên c a quan h c ch mc Các thuc tính trên nó ch mc c nh ngh"a - Kiu c a ch mc c t'o Toàn b các thông tin này trong thc t bao hàm mt CSDL nh3. Mt s h CSDL s0 dng nhng cu trúc d liu mã mc ích 6c bit  lu tr các thông tin này. Nói chung, lu tr d liu v( CSDL trong chính CSDL vn c a chung hn. B.ng cách s0 dng CSDL  lu tr d liu h thng, nh.m n gin hoá cu trúc tng th c a h thng cho phép s0 dng y  sc m'nh c a CSDL trong vic truy xut nhanh n d liu h thng. 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 GT CSDL – Chng 5. Lu tr cu trúc tp tin NTD – Khoa Tin – HSP Hu 9 tì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 hn. Có hai kiu ch mc: Ch mc c sp (Ordered indices): c da trên mt th t sp xp theo các giá tr. Ch mc b!m (Hash indices): c da trên các giá tr c phân phi (u qua các bucket. Bucket mà mt giá tr c gán vi nó c xác nh b+i mt hàm, c g#i là hàm b!m (hash function). 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 tp các h'ng mc. Th,i gian chèn: Th,i gian  chèn mt h'ng mc d liu mi. Giá tr này bao hàm th,i gian  tìm v trí chèn thích hp th,i gian cp nht cu trúc ch mc. Th,i gian xoá: Th,i gian  xoá mt h'ng mc d liu. Giá tr này bao hàm th,i gian tìm kim h'ng mc cn xoá, th,i gian cp nht cu trúc ch mc. Tng phí tn không gian: Không gian ph b chim b+i mt cu trúc ch mc. Mt file th,ng i kèm vi mt vài ch mc. Thuc tính ho6c tp hp các thuc tính c dùng  tìm kim mu tin trong mt file c g#i là khoá tìm kim. Chú ý r.ng nh ngh"a này khác vi nh ngh"a khoá s cp (primary key), khoá d tuyn (candidate key), siêu khoá (superkey). Nh vy, nu có mt vài ch mc trên mt file, có mt vài khoá tìm kim tng ng. 5.4.1. Ch mc c sp. Mt ch mc lu tr các giá tr khoá tìm kim tng ng vi các mu tin, các giá tr khóa này c sp xp trong ch mc khi lu tr. Các mu tin trong file c ch mc có th chính nó c)ng c sp. Mt file có th có mt vài ch mc theo nhng khoá tìm kim khác nhau. Nu file cha các mu tin c sp tun 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, GT CSDL – Chng 5. Lu tr cu trúc tp tin NTD – Khoa Tin – HSP Hu 10 c 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 mt mu tin. Ch mc 6c ch mc tha (Dense and Sparse Indices). Ch mc 6c. Hình 2 Ch mc tha [...]... trong u vào b ng t ng ng v i chu-i bit này l n theo con tr3 trong u vào b ng này chèn m t m u tin v i giá tr khoá tìm ki m K, ti n hành th t c d nh v trên, ta c bucket, gi s0 là bucket j N u còn cho cho m u tin, chèn m u tin vào trong bucket ó N u không, ta ph i tách bucket ra phân ph i l'i NTD – Khoa Tin – HSP Hu 18 GT CSDL – Ch ng 5 L u tr c u trúc t p tin các m u tin hi n có cùng m u tin m... không gian ch chi m b+i m u tin 5, r2i di chuy n m u tin 7 n ch- b chi m b+i m u tin 6 Di chuy n m u tin 7 n ch- b chi m b+i m u tin 5 ánh d u xoá m u tin 5 2.V4 c u trúc c a file: Hình 22 Sau m-i b c sau: Insert(Brighton, A-323, 1600) Xoá m u tin 2 Insert(Brighton, A-636, 2500) 3 V4 l'i c u trúc file: NTD – Khoa Tin – HSP Hu 20 GT CSDL – Ch ng 5 L u tr c u trúc t p tin Sau m-i b c sau: Insert(Mianus,... ph i l'i m t s u vào n m t trong các nút k( t'o không gian cho u vào m i N u vi c th0 này th t b'i, ta m i th c hi n tách nút phân chia các u vào gi a m t trong các nút k( hai nút nh n c do tách nút Khi xoá, n u nút u vào, ta th0 m n m t u vào t m t trong hai nút anh em 2m/3 ch a ít h n m u tin, ta phân ph i l'i các u vào c a nút 2m/3 k( N u c hai (u có úng cho hai nút anh em k( xoá nút th 3... {hi(K)=(hi-1(K) +1) mod nB v i 1 ≤i ≤ nB -1 h0 là hàm b!m c s+} 5.7.1.4 Ch m c b!m NTD – Khoa Tin – HSP Hu 17 GT CSDL – Ch ng 5 L u tr c u trúc t p tin M t ch m c b!m t ch c các khoá tìm ki m cùng con tr3 k t h p vào m t c u trúc file b!m nh sau: áp d ng m t hàm b!m trên khoá tìm ki m nh danh bucket sau ó l u giá tr khoá con tr3 k t h p vào bucket này (ho6c vào các bucket tràn) Ch m c b!m th ,ng... CSDL – Ch ng 5 L u tr c u trúc t p tin Hì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 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... chèn ho6c xoá m t m u tin, b t bu c ph i c p nh t các ch m c kèm v i file ch a m u tin này D i ây, mô t các thu t toán c p nh t cho các ch m c m t m c Xoá xoá m t m u tin, u tiên ph i tìm m u tin mu n xoá N u m u tin b xoá là m u tin u tiên trong dây chuy(n các m u tin c xác nh b+i con tr3 c a u vào ch m c trong quá trình tìm ki m, có hai tr ,ng h p ph i xét: N u m u tin b xoá là m u tin duy nh t trong... khoá tìm ki m 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, 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... u tr c u trúc t p tin gi i quy t v n ( này, ta xem file ch m c nh m t file tu n t xây d ng ch m c th a cho nó tìm u vào ch m c, ta tìm ki m nh phân trên ch m c "ngoài" c m u tin có khoá tìm ki m l n nh t trong các m u tin có khoá tìm ki m nh3 h n ho6c b.ng khoá mu n tìm Con tr3 t ng ng tr3 t i kh i c a ch m c "trong" Trong kh i này, tìm ki m m u tin có khoá tìm ki m l n nh t trong các m u tin. .. (bucket z) 6t ij iz n giá tr là k t qu c a vi c thêm 1 vào giá tr ij g c K n, ta i(u ch nh các u vào trong b ng a ch bucket tr c ây tr3 t i bucket j Ta l'i n0a u các u vào, 6t t t c các u vào còn l'i tr3 t i bucket m i t'o (z) Ti p theo, m-i m u tin trong trong bucket j c b!m l'i c c p phát cho ho6c vào bucket j ho6c bucket z xoá m t m u tin v i giá tr khoá K, tr c tiên ta th c hi n th t c nh... chèn xoá là bao nhiêu ? Có nên t i u hoá th,i gian truy xu t trung bình trong khi th,i gian truy xu t tr ,ng h p x u nh t t!ng lên hay không ? NTD – Khoa Tin – HSP Hu 19 GT CSDL – Ch ng 5 L u tr c u trúc t p tin Các ki u v n tin mà các ng ,i s0 d ng thích 6t ra là gì ? CÂU H%I BÀI T P 1 Xét vi c xoá m u tin 5 trong file: So sánh các i(u t t/x u t ng i c a các k* thu t xoá sau: Di chuy n m u tin . mu tin, chèn mu tin vào trong bucket ó. Nu không, ta phi tách bucket ra và phân phi l'i GT CSDL – Chng 5. Lu tr và cu trúc tp tin NTD – Khoa Tin – HSP Hu 19 các mu tin. 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. GT CSDL – Chng 5. Lu tr và. b!m? 19 CÂU H$I VÀ BÀI TP 20 TÀI LI%U THAM KH&O 23 GT CSDL – Chng 5. Lu tr và cu trúc tp tin NTD – Khoa Tin – HSP Hu 2 CHNG V. LU TR VÀ CU TRÚC TP TIN Mc ích: -

Ngày đăng: 01/07/2014, 12:28

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan