Rõ ràng, ch có... tr lâu dài... Ngôn ng chu n và ph bi n nh t trong các HQT CSDL quan h là SQL Structured Query Language... Các trang bên trong và các trang lá nút lá th ng có c u trúc k
Trang 1Xin cám n b n đã dành s quan tâm cho tài li u này!
Tài li u này tôi t ng h p t nhi u quy n sách khác nhau Tôi ngh nó có ích cho nh ng
ng i mu n hi u các h qu n tr c s d li u làm vi c nh th nào Trên c s đó, ng i
đ c có th thi t k các c s d li u và t o ra các h th ng s d ng c s d li u quan h t t
h n Ngoài ra, tôi còn gi i thi u m t s h ng đang đ c phát tri n trên th gi i đ các b n tham kh o
Trong quá trình biên-d ch-so n d a trên ki n th c c a mình, tôi đã r t c g ng nh ng ch c
ch n v n có nhi u h n ch và sai sót N u b n phát hi n sai sót, ho c có ý ki n đóng góp
nh m m c đích giúp tôi nâng cao ch t l ng c a tài li u này c ng nh hoàn thi n chính
ntquocvinh@due.edu.vn
Tôi s c g ng hoàn thi n tài li u này, và t t nhiên, không th thi u nh ng ý ki n ph n h i
c a các b n
Nguy n Tr n Qu c Vinh
Trang 2M C L C
Ph n I Ki n th c c b n 1
Ch ng I.1 CSDL và h th ng t p tin 1
I.1.1 H th ng t p tin 3
I.1.1.1 C u trúc t p tin 3
I.1.1.2 t tên (gán nhãn) cho t p tin 4
I.1.1.3 B o v t p tin 5
I.1.1.4 Ch đ truy c p nhi u ng i dùng 6
I.1.2 L nh v c ng d ng c a t p tin 6
I.1.3 Yêu c u c a các h th ng thông tin 7
Ch ng I.2 Các ch c n ng c a HQT CSDL T ch c đi n hình c a m t HQT CSDL hi n đ i 10 I.2.1 Các ch c n ng c a HQT CSDL 10
I.2.1.1 Qu n tr d li u tr c ti p trong b nh ngoài 10
I.2.1.2 Qu n tr các b nh đ m (buffers) trong RAM 10
I.2.1.3 i u khi n các giao tác 11
I.2.1.4 Nh t ký 12
I.2.1.5 H tr các ngôn ng CSDL 14
I.2.1.6 Các l i ích khác 15
I.2.2 T ch c đi n hình c a m t HQT CSDL hi n đ i 16
Ph n II T ch c bên trong c a HQT CSDL 18
Ch ng II.1 T ch c bên trong c a HQT CSDL 18
II.1.1 Ki n trúc c a m t HQT CSDL 18
II.1.2 Các c u trúc b nh ngoài, các ph ng pháp t ch c ch m c (index) 18
II.1.3 L u tr quan h 19
II.1.4 Các ch m c 22
II.1.4.1 B-tree 23
II.1.4.2 B m (Hashing) 26
II.1.4.3 Thông tin nh t ký 27
II.1.4.4 Thông tin ph c v 27
Trang 3Ch ng II.2 Giao tác và tính toàn v n CSDL 29
II.2.1 Ví d s phá hu tính toàn v n CSDL 29
II.2.2 Khái ni m giao tác 30
II.2.3 Phân lo i giao tác 32
II.2.3.1 Giao tác t ch p nh n (Autocommit mode) 32
II.2.3.2 Giao tác đ c khai báo t ng minh (Explicit) 33
II.2.3.3 Giao tác gi m (Implicit ) 34
II.2.3.4 Giao tác t ph c h i (Auto rollback) 35
II.2.3.5 Giao tác l ng (Nested Transaction) 37
II.2.3.5.1 Khái ni m 37
II.2.3.5.2 Các quy t c 37
II.2.3.5.3 Bi n @@trancount trong HQT CSDL SQL Server 39
II.2.4 Ràng bu c tính toàn v n CSDL 39
II.2.5 Phân lo i ràng bu c tính toàn v n CSDL 41
II.2.5.1 B ng các cách tri n khai (realization) 42
II.2.5.2 Phân lo i ràng bu c tính toàn v n theo th i đi m ki m tra 44
II.2.5.3 Phân lo i ràng bu c tính toàn v n theo không gian ng d ng 45
II.2.5.3.1 Ràng bu c Mi n giá tr 45
II.2.5.3.2 Ràng bu c thu c tính 45
II.2.5.3.3 Ràng bu c b n ghi 46
II.2.5.3.4 Ràng bu c quan h 50
II.2.5.3.5 Ràng bu c CSDL 51
II.2.6 Tri n khai ràng bu c tính toàn v n d ng đ nh ngh a b ng công c SQL 52
II.2.6.1 Các nguyên t c chung trong tri n khai ràng bu c b ng các công c SQL 52 II.2.6.2 Cú pháp ràng bu c theo chu n SQL 54
Ch ng II.3 Giao tác và tính song song (tính đ i ng u) 64
II.3.1 ôi đi u v công vi c c a giao tác 65
II.3.2 Các v n đ th c hi n song song các giao tác 66
II.3.2.1 V n đ m t k t qu c p nh t d li u 66
II.3.2.2 V n đ ph thu c ch a c đ nh (đ c d li u b n, đ c không chu n…) 67
II.3.2.3 V n đ xung kh c trong phân tích 67
II.3.2.3.1 c không l p l i 67
Trang 4II.3.2.3.2 Các ph n t o 68
II.3.2.3.3 Phân tích xung kh c th c ch t 69
II.3.2.3.4 Xung đ t gi a các giao tác 70
II.3.3 m b o th c thi song song (tính tu n t ) các giao tác 73
II.3.3.1 nh lý Esvaran v tính tu n t 73
II.3.3.2 Chi m l nh đ ng b 75
II.3.3.2.1 Các phong to 75
II.3.3.2.2 Gi i quy t các v n đ c a tính song song b ng s giúp đ c a các phong to 76 II.3.3.2.2.1 V n đ m t k t qu c p nh t 77
II.3.3.2.2.2 V n đ ph thu c không đ c c đ nh (đ c d li u b n, đ c không chu n) 77 II.3.3.2.2.3 V n đ xung kh c trong phân tích 78
II.3.3.2.2.4 Xung kh c th c ch t trong phân tích 80
II.3.3.2.2.5 Gi i quy t (g b ) các tình hu ng b t c 81
II.3.3.2.2.6 Phong to có ch đ nh (Chi m l nh đ ng b b ng cách tán nh ) 83
II.3.3.2.3 Phong to theo m nh đ 88
II.3.3.2.4 C ch tách phiên b n d li u 89
II.3.3.3 Ph ng pháp m c th i gian 91
II.3.3.4 Tri n khai tính cô l p các giao tác b ng các công c SQL 92
II.3.3.4.1 Các m c đ cô l p 92
II.3.3.4.2 Cú pháp các l nh SQL đ đ nh ngh a m c đ cô l p 93
Ch ng II.4 Các giao tác và ph c h i d li u 95
II.4.1 Nh t ký và ghi nh trung gian (buffering) 96
II.4.2 Các ki u ph c h i d li u 98
II.4.2.1 Rollback giao tác riêng bi t 98
II.4.2.2 Ph c h i sau s c “m m” 99
II.4.2.3 Tính nh t quán v t lý c a CSDL 101
II.4.2.4 Ph c h i sau s c “c ng” 103
II.4.2.5 Ph c h i d li u và chu n SQL 104
Ch ng II.5 Các trình biên d ch SQL Các v n đ t i u hoá 105
II.5.1 S đ chung trong x lý các truy v n 105
Trang 5H QU N TR C S D LI U – B n Nháp 30-08-08
II.5.2 T i u hoá cú pháp các truy v n 106
II.5.2.1 Bi n đ i logic đ n gi n các truy v n 106
II.5.2.2 Bi n đ i các truy v n b ng cách thay đ i th t các thao tác quan h 106
II.5.2.3 Chuy n các truy v n ch a các truy v n l ng thành các truy v n ch a các phép n i 107 II.5.3 T i u ng ngh a các truy v n 108
II.5.3.1 Bi n đ i các truy v n trên c s thông tin m ng ng ngh a 108
II.5.3.2 S d ng các thông tin m ng ng ngh a trong t i u hoá các truy v n 108
II.5.4 Ch n và đánh giá các k ho ch th c thi các truy v n khác nhau 108
II.5.4.1 T o ra các k ho ch 108
II.5.4.2 ánh giá tr giá các k ho ch th c thi truy v n 108
II.5.4.3 Các đánh giá chính xác h n 108
Ph n III HQT CSDL trong ki n trúc “Client−Server” 109
Ch ng III.1 Ki n trúc “Client−Server” 109
III.1.1 Các h th ng m 109
III.1.2 Các máy khách và máy ch trong m ng c c b 110
III.1.3 Ki n trúc h th ng “khách-ch ” 111
III.1.3.1 Khách thông minh (Smart Client) 113
III.1.4 Các máy ch CSDL 115
III.1.4.1 Các nguyên t c t ng tác gi a ph n khách và ph n ch 115
III.1.4.2 Các u đi m c a giao th c g i th t c t xa 115
III.1.4.3 S phân b ch c n ng đi n hình gi a khách và ch 116
III.1.4.4 Các yêu c u kh n ng ph n c ng và ph n m m n n t ng đ i v i khách và ch 116 Ph n IV Các khung nhìn th c 117
Ch ng IV.1 Khái ni m khung nhìn th c 117
Ch ng IV.2 ng d ng c a KNT 119
IV.2.1 ng d ng KNT trong các HQT CSDL th ng m i 121
IV.2.2 ng d ng KNT nh m đ y nhanh t c đ th c thi các truy v n 122
IV.2.3 ng d ng KNT trong các kho d li u 124
Ch ng IV.3 C p nh t KNT 124
IV.3.1 Các c ch c p nh t KNT 124
Trang 6IV.3.2 Phân lo i các thu t toán CNGT KNT 126
IV.3.2.1 CNGT có s d ng đ y đ thông tin (b ng KNT, các b ng g c, v n b n truy v n và v n b n truy v n thao tác d li u) 126
IV.3.2.2 CNGT KNT s d ng m t ph n thông tin 127
IV.3.2.3 C p nh t trì hoãn 130
Ch ng IV.4 ng d ng ý t ng KNT trong các HQT CSDL ch a h tr KNT 131
IV.4.1 Ví d v h n ch c a KNT trong các HQT CSDL th ng m i 131
IV.4.2 “KNT” trong các HQT CSDL không h tr KNT 134
Ph n V Kho d li u – DataWarehouse 138
Ph n VI CSDL phân tán 139
Ch ng VI.1 Các lo i hình h th ng phân tán 140
Ch ng VI.2 Các ki n trúc c a HQT CSDL PT 142
VI.2.1 Các h th ng khách-ch 142
VI.2.2 Các h th ng máy ch h p tác 142
VI.2.3 Các h th ng t ng trung gian 143
Ch ng VI.3 L u tr d li u trên HQT CSDL PT 144
VI.3.1 Phân m nh (fragmentation) 144
VI.3.2 Nhân b n (replication) 145
VI.3.2.1 Nhân b n đ ng b 146
VI.3.2.2 Nhân b n không đ ng b 147
VI.3.2.2.1 Nhân b n theo nút chính và nhân b n ngang hàng 147
VI.3.3 Qu n tr danh m c phân tán 150
VI.3.3.1 t tên cho các đ i t ng 150
VI.3.3.2 C u trúc danh m c phân tán 151
VI.3.4 Tính đ c l p c a d li u phân tán 152
Ch ng VI.4 X lý các truy v n phân tán 154
VI.4.1 Các thu t toán n i join 154
VI.4.1.1 Các truy v n nonjoin 154
VI.4.1.2 Th c thi phép n i trên HQT CSDL PT 155
VI.4.1.2.1 Rút ra nh ng gì c n thi t 155
VI.4.1.2.2 Chuy n đ n m t nút 155
VI.4.1.2.3 Semijoins và Bloomjoins 155
Trang 7VI.4.2 Biên d ch phân tán các truy v n 157
Ch ng VI.5 Qu n tr các giao tác và quá trình đ ng b hoá 159
VI.5.1 Giao th c c đ nh hai pha (2PC – Two-Phases Commit Protocol) 159
VI.5.2 Các ph ng pháp qu n tr 161
VI.5.3 Các b t c phân tán 162
Ch ng VI.6 Kh i đ ng l i sau s c 164
VI.6.1 Kh i đ ng l i h th ng sau s c 164
VI.6.2 Giao th c c đ nh 3 pha (3PC – Three Phases Commit Protocol) 165
Ch ng VI.7 Các h th ng tích h p (hay liêng bang) và đa CSDL 168
Ph n VII Các h ng nghiên c u và phát tri n hi n đ i 169
Ch ng VII.1 Các HQT CSDL th h m i 169
VII.1.1 Theo h ng m r ng mô hình quan h 170
VII.1.2 Các ki u d li u tr u t ng 172
VII.1.3 T o ra các h CSDL theo h ng trình ng d ng 173
VII.1.4 T i u các truy v n đ c đi u khi n b i các quy lu t 174
VII.1.5 H tr các thông tin l ch s và các truy v n bi u th th i gian 175
Ch ng VII.2 Các HQT CSDL h ng đ i t ng 178
VII.2.1 M i liên h gi a HQT CSDL h ng đ i t ng v i khái ni m chung v cách ti p c n h ng đ i t ng 179
VII.2.2 Các mô hình d li u h ng đ i t ng 181
VII.2.3 Các ngôn ng l p trình các CSDL H T 184
VII.2.3.1 S đánh m t m i t ng quan gi a các ngôn ng l p trình và các ngôn ng truy v n trong HQT CSDL quan h 184
VII.2.3.2 Các ngôn ng l p trình CSDL H T nh là các ngôn ng H T h tr các đ i t ng b n v ng (persistent) 185
VII.2.3.3 Các ví d ngôn ng l p trình CSDL H T 186
VII.2.4 Các ngôn ng truy v n CSDL H T 187
VII.2.4.1 i u h ng (navigation) t ng minh nh là m t công c v t qua s m t mát tính t ng ng 187
VII.2.4.2 Các ngôn ng truy v n không-đi u h ng (non-navigation) 187
VII.2.4.3 Các v n đ t i u hoá truy v n 189
VII.2.5 Các ví d HQT CSDL H T 191
Trang 8VII.2.5.1 D án ORION 192
VII.2.5.2 Project O2 193
Ch ng VII.3 Các h CSDL trên n n t ng các quy lu t 195
VII.3.1 Ph n m r ng và ph n t ng c ng c a CSDL 195
VII.3.2 Các CSDL n ng đ ng (ch đ ng – active DB) 196
VII.3.3 CSDL suy di n 197
Ph n VIII Ph l c 199
A MS SQL Server 199
A.1 Ki n trúc c a SQL Server 201
A.2 Cài đ t và khôi ph c trong SQL Server 205
B Oracle 205
B.1 Ki n trúc c a Oracle 205
B.2 Cài đ t và khôi ph c trong Oracle 205
C Các hình v 206
D Các b ng 207
Tài li u tham kh o 208
Trang 10Ph n I Ki n th c c b n
Ch ng I.1 CSDL và h th ng t p tin
u tiên, chúng ta hãy xem qua ý t ng chung c a các khái ni m c s d li u (CSDL, DB – Database) và h qu n tr c s d li u (HQT CSDL, DBMS – Databases Managerment System)
CSDL là m t t p h p các d li u mô t m t l nh v c ng d ng nào đó ho c m t l nh
v c c a th gi i th c Ví d , CSDL v đào t o c a m t tr ng đ i h c có th ch a các thông tin v :
– Các th c th nh sinh viên, gi ng viên, các h c ph n, khoa, l p, phòng h c
– Các m i quan h gi a các th c th , ch ng h n nh sinh viên đ ng ký m t h c
ph n, gi ng viên ph trách m t h c ph n cho l p nào đó, vi c s d ng các phòng h c,…
HQT CSDL là m t h th ng ph n m m đ c thi t k nh m m c đích qu n tr và khai thác m t s l ng l n các t p h p l n d li u v i kh i l ng có th t ng lên r t nhanh
T bu i ban đ u c a quá trình phát tri n công ngh tính toán, có hai đ nh h ng chính trong vi c s d ng nó Th nh t, đó là ng d ng k thu t tính toán đ th c hi n các tính toán s mà n u th c hi n th công thì r t lâu ho c là không th S tr ng thành c a
đ nh h ng này đã kh i d y s t ng c ng các ph ng pháp gi i quy t b ng tính toán các bài toán toán h c ph c t p, s phát tri n c a l p các ngôn ng l p trình theo h ng đ n gi n hoá cài đ t các thu t toán tính toán, và thi t đ t m i quan h ng c l i v i các nhà phát tri n các ki n trúc máy đi n toán m i
nh h ng th hai, đó là s d ng các công c c a k thu t tính toán trong các h
th ng thông tin t đ ng ho c là t đ ng hoá Theo ngh a r ng, h th ng thông tin là m t t
h p ch ng trình Các ch c n ng c a h th ng thông tin ch y u là duy trì vi c l u tr thông tin m t cách tin c y trong b nh c a máy tính, th c hi n các bi n đ i thông tin và/ho c tính toán đ c thù cho m t ng d ng đã cho, và cung ng cho ng i dùng m t giao
di n thu n ti n và d ti p thu Th ng thì kh i l ng thông tin mà các h th ng đó c n ph i
qu n lý/x lý là r t l n, và c u trúc c a chính d li u c ng ph c t p Ví d c đi n c a h
th ng thông tin là các h th ng ngân hàng, các h th ng đ t vé máy bay ho c là vé tàu, đ t
ch khách s n, v.v…
Trong th c t , đ nh h ng th hai xu t hi n mu n h n b i vì trong th i gian đ u c a
k thu t tính toán các máy tính s h u các tính n ng h n ch ph n b nh Rõ ràng, ch có
Trang 11gi thông tin sau khi ngu n đi n c a máy tính b c t B nh t m th i truy c p ng u nhiên (RAM – Random Access Memory) không có tính n ng đó Ban đ u có hai lo i thi t b b
nh ngoài đ c s d ng là b ng t và tr ng Dung l ng c a b ng t khá l n nh ng nó ch cho phép truy c p n i ti p đ n d li u Các tr ng t cho phép truy c p ng u nhiên đ n d
li u gi ng nh các đ a t ngày nay (v i đ u đ c c đ nh) nh ng dung l ng l i nh
D th y r ng, nh ng gi i h n đã nêu trên không nh h ng nhi u đ n các tính toán thu n s Th m chí n u ch ng trình c n ph i x lý m t kh i l ng l n thông tin thì trong quá trình l p trình có th ngh ra m t các phân b thông tin trong b nh ngoài đ ch ng trìn làm vi c nhanh h n đ n m c có th
M t khác, cho các h th ng thông tin mà trong đó ng i dùng yêu c u trong các d
li u hi n t i, thì các b ng t và tr ng không đáp ng yêu c u Ví d , m t khách hàng mu n mua vé c n ph i đ ng ch máy tính tua h t m t b ng t M t trong nh ng yêu c u rõ ràng
đ i v i các h th ng nh th là th i gian trung bình đ th c hi n m t giao d ch c n ph i nhanh
Có th chính các yêu c u trong k thu t tính toán t phía các ng d ng không thu n tính toán s đã đ a đ n s xu t hi n các đ a t có th tháo ra v i các đ u đ c di đ ng S
xu t hi n đó là cu c cách m ng trong l ch s k thu t tính toán Các thi t b b nh ngoài đó
s h u dung l ng l n h n nhi u so v i các tr ng t , còn kh n ng thay th các đ a trên thi t b cho phép s h u kho d li u g n nh không gi i h n v m t dung l ng
C ng t n t i d ng đ a đ u đ c c đ nh (Fixed-head), ngh a là các đ u đ c không d ch chuy n Trong các đ a đó có nhi u đ u đ c và m t đ u riêng bi t cho m i rãnh S s p x p này cho phép máy tính chuy n t rãnh này sang rãnh khác mau chóng, không ph i di chuy n
đ u đ c-vi t i u này làm gi m thi u th i gian truy c p đ a vì th i gian d ch chuy n đ u
đ c gi a các rãnh trong đ a v i đ u đ c di đ ng chi m ph n l n th i gian c a c quá trình truy c p đ a Tuy nhiên, c n m t s r t l n đ u đ c-vi t cho lo i đ a này,và nh v y giá
c a thi t b b nâng cao lên r t nhi u
Trang 12tr lâu dài Ngoài ra, m i trình ng d ng ph i gi i quy t v n đ đ t tên (g n nhãn) các ph n
d li u và ph i c u trúc d li u trong b nh ngoài
I.1.1 H th ng t p tin
Chuy n sang s d ng các h th ng qu n tr t p t p trung là b c ngo c l ch s Trên quan đi m trình ng d ng, t p là m t vùng đã đ c đ t tên c a b nh ngoài và có th ghi
d li u lên ho c đ c d li u t đó Các quy lu t đ t tên t p, cách th c truy c p d li u đ c
l u tr trong t p, và c u trúc các d li u đó ph thu c vào m t h th ng qu n lý t p c th ,
và có th , ph thu c vào ki u t p H th ng qu n lý t p ch u trách nhi m phân b b nh ngoài, bi u di n các tên t p trên các đ a ch t ng ng trong b nh ngoài và đ m b o truy
c p đ n d li u
H th ng t p tin tiên ti n l n đ u tiên đ c phát tri n công ty IBM Chúng ta s không xem xét nó b i vì nó quá l i th i so v i các h th ng t p bây gi nh Ext3, NTFS,
I.1.1.1 C u trúc t p tin
Bây gi chúng ta xem xét k nh ng h th ng t p có t ch c tiên ti n h n Hi n t i,
h u nh trong t t c các máy tính hi n đ i, thi t b b nh ngoài ch đ o là nh ng đ a t có
đ u đ c d ch chuy n, và chính chúng ph c v cho vi c l u tr t p Nh ng đ a t nh v y
th c t là nh ng “gói” các b n t (b m t), gi a chúng là “gói” nh ng đ u đ c t di đ ng
B c chuy n đ ng c a gói đ u đ c là r i r c (không liên t c, discrete), và m i v trí c a gói
đ u đ c t ng ng m t cách lu n lý các tr (cylinder) c a các đ a t Trên m i b m t, tr
v ra m t đ ng (track) Vì th , m i b m t đ a ch a s đ ng b ng s tr Trong quá trình
đ nh d ng đ a, m i đ ng s đ c chia thành các kh i (block) v i s l ng nh nhau, và s
l ng bytes có th ch a t i đa trong m i kh i là nh nhau Nh v y, đ trao đ i thông tin
v i đ a t trên c p đ thi t b c n ph i ch ra s th t c a tr , s th t c a b m t, s th
t c a kh i trên đ ng t ng ng và s l ng bytes c n ghi vào ho c là đ c ra tính t đ u
kh i
Tuy nhiên, kh n ng trao đ i thông tin v i các đ a t theo nh ng ph n nh h n dung
l ng c a kh i hi n t i không đ c s d ng trong các h th ng t p i u đó liên quan đ n hai đi m Th nh t, quá trình trao đ i thông tin v i đ a c a thi t b đ c th c hi n theo ba thao tác chính: d ch chuy n đ u đ c đ n đ ng c n thi t – b c chi m ph n l n th i gian trong t ng th , tìm trên đ ng đó kh i c n thi t và trao đ i thông tính v i kh i đó Th hai,
đ có th làm vi c v i nh ng ph n c a các kh i, h th ng t p c n ph i đ m b o m t dung
Trang 13l ng b nh t m th i t ng ng, và đi u đó làm ph c t p quá trình phân b b nh r t nhi u
Vì th , trong t t c các h th ng t p, ho c là tr c ti p, ho c là gián ti p m t c p đ c
b n nào đó đ c phân ra C p đ đó đ m b o công vi c v i các t p M i t p là m t t h p các kh i có đ a ch trong không gian đ a ch c a t p Kích th c các kh i lu n lý đó c a t p trùng ho c là b i s kích th c c a kh i v t lý c a đ a, và th ng đ c ch n b ng kích
th c m t trang b nh o (virtual memory) B nh o này đ c duy trì b i thi t b máy tính cùng v i h đi u hành
Trong m t vài h th ng t p c p đ c b n là có th truy c p đ c đ i v i ng i dùng,
nh ng th ng thì b bao ph b i m t c p đ cao h n, và chu n h n cho ng i dùng Ph
bi n h n là hai cách ti p c n ch đ o sau Cách th nh t, t p là m t chu i các b n ghi M i
b n ghi là m t chu i các bytes có kích th c c đ nh ho c là thay đ i Các b n ghi có th
đ c đ c ho c ghi m t cách n i ti p ho c có th theo v trí b ng s th t c a b n ghi trong
t p M t vài h th ng t p cho phép c u trúc hoá các b n ghi theo các tr ng và khai báo
nh ng tr ng nào đó là các khoá c a b n ghi Trong các h th ng t p đó có th yêu c u
ch n ra m t b n ghi t m t t p theo khoá c a nó Rõ ràng, trong tr ng h p này h th ng
t p ph i duy trì nh ng c u trúc d li u b tr , n v i ng i dùng Các ph ng pháp t ch c các t p có khoá ph bi n d a trên n n t ng k thu t b m (hashing) và cây nh phân (B-tree)
C ng t n t i các ph ng pháp t ch c t p nhi u khoá
Cách ti p c n th hai ph bi n song song cùng v i h đi u hành UNIX Mà theo đó,
m i t p là m t chu i các bytes T m t t p có th đ c m t s cho tr c các byte ho c là b t
đ u t đ u t p, ho c đ u tiên chuy n đ n v trí byte có s th t cho tr c T ng t , có th ghi m t s cho tr c các byte vào cu i t p, ho c vào m t v trí nào đó Chú ý r ng, dù là n
đ i v i ng i dùng, nh ng trong t t c các bi n th c a h th ng t p c a h đi u hành UNIX
là ki u bi u di n t p theo kh i
I.1.1.2 t tên (gán nhãn) cho t p tin
T t c các h th ng t p h tr đ t tên các t p theo nhi u t ng nh vào vi c duy trì trong b nh ngoài nh ng t p b tr có c u trúc đ c bi t ó là các th m c M i m t th
m c ch a các tên c a các th m c khác ho c/và các t p đ c ch a trong th m c đó Nh
v y, tên đ y đ c a t p đ c c u thành th tên c a các th m c c ng v i tên t p trong th
m c S khác bi t gi a các ph ng pháp đ t tên t p trong các h th ng t p khác nhau là
Trang 14ch , t cái gì chu i các tên đó đ c b t đ u Có hai ph ng án Trong nhi u h th ng qu n
lý t p yêu c u m i m t l u tr các t p (cây tra c u đ y đ ) đ u hoàn toàn phân b trên m t gói đ a, ho c là trên m t đ a lu n lý Trong tr ng h p đó, tên đ y đ c a m t t p đ c b t
đ u t tên c a thi t b đ a, mà trên đó đ a t ng ng đ c cài đ t Có th g i cách t ch c
đó là duy trì các h th ng t p cô l p
Trong m t ph ng án khác, là h th ng t p c a h đi u hành Multics, nhi u ý t ng
g c đ c phát tri n, nh ng chúng ta ch quan tâm đ n các đ c tính t ch c l u tr các t p Trong h th ng t p đó, ng i dùng bi u di n t h p các th m c và các t p c a mình d i
d ng m t cây duy nh t Tên đ y đ c a t p đ c b t đ u t tên c a th m c g c, và ng i dùng không ph i quan tâm đ n các thi t đ t các đ a c th trên thi t b đ a B n thân h
th ng s h i v thi t đ t các đ a c n thi t khi tìm m t t p theo tên c a nó M t h th ng t p
nh th có th nói là hoàn toàn t p trung hoá Ví d , các h th ng t p c a Windows
T t nhiên, h u h t các h th ng t p đ c cô l p thu n ti n h n: h th ng qu n lý t p
đ m nh n h u h t công vi c Nh ng trong các h th ng đó l i xu t hi n các v n đ khá l n,
n u nh m t ai đó c n chuy n m t ph n c a cây h th ng t p đ n m t tr m đi n toán khác
M t gi i pháp tho hi p đã đ c áp d ng trong các h th ng t p h đi u hành UNIX Các
l u tr t p cô l p đ c duy trì trên c p đ c b n trong các h th ng t p M t trong nh ng
l u tr đó s đ c khai báo nh là h th ng t p g c (root) Sau khi h th ng đ c kh i
đ ng, ng i dùng có th l p đ t (mount) h th ng t p g c và hàng lo t các h th ng t p cô
l p vào m t h th ng t p duy nh t Vi c đó đ c th c hi n b ng cách thêm vào h th ng t p
g c các th m c r ng m t cách ch ý M t phân h c a h đi u hành s làm nhi m v k t
n i th m c g c c a l u tr t p (h th ng t p) v i m t th m c r ng đ c t o ra tr c đó Sau khi l p ghép thành h th ng t p chung, vi c đ t tên cho các t p đ c di n ra nh là chính nó t ban đ u đã đ c t p trung hoá N u vi c l p đ t đ c di n ra trong quá trình
kh i đ ng h th ng, thì ng i dùng không c m giác v quá trình phát sinh ban đ u c a h
th ng t p chung nh t
I.1.1.3 B o v t p tin
B i vì h th ng t p là kho l u tr chung c a các t p thu c v nhi u ng i dùng khác nhau, nên h th ng qu n lý t p ph i đ m b o vi c xác th c quy n truy c p các t p Th ng thì theo quan h v i m i ng i dùng đã đ c đ ng ký trong h th ng máy tính, cho m i m t
t p s có thông tin v nh ng quy n truy c p ho c là b c m đ i v i ng i dùng đó
Trang 15Trong h u h t các h th ng qu n lý t p hi n đ i đ u áp d ng bi n pháp b o v t p
u tiên đ c tri n khai trong h đi u hành UNIX Trong h th ng đó, m i m t ng i dùng
đã đ ng ký t n t i hai t đ nh danh: t đ nh danh c a nhóm mà ng i đó thu c v , và t
đ nh danh c a chính ng i dùng trong nhóm T ng ng, kèm theo m i t p s đ c l u tr
t đ nh danh c a ng i dùng đã t o ra t p đó, và đánh d u nh ng thao tác nào ng i dùng
đó có th th c hi n v i t p, đánh d u nh ng thao tác nào các ng i dùng khác cùng nhóm
đó có th th c hi n v i t p, và nh ng thao tác nào nh ng ng i dùng khác thu c các nhóm khác có th th c hi n v i t p
I.1.1.4 Ch đ truy c p nhi u ng i dùng
N u h đi u hành h tr ch đ nhi u ng i dùng, thì tình hu ng hai ho c nhi u
ng i dùng đ ng th i mu n làm vi c v i cùng m t t p nào đó là hoàn toàn có th N u t t
c các ng i dùng đó ch đ nh đ c t p, thì không có v n đ gì đ bàn cãi Nh ng n u ch c n
m t ng i trong h thay đ i n i dung c a t p, thì đ công vi c c a t t c ng i dùng s
d ng t p lúc đó đ c đúng đ n c n ph i có s đ ng b qua l i
Th ng thì trong các h th ng t p ng d ng cách sau b t đ u m t phiên làm vi c
v i t p, ti n trình (ch ng trình) c n ph i th c hi n thao tác m t p Trong thao tác m t p, ngoài nh ng thông s c n thi t c a h th ng, c n ph i ch ra ch đ làm vi c v i t p – m
ch đ đ c hay là có s a đ i N u t i th i đi m ti n trình A ti n hành thao tác m t p X, t p
X đã đ c m b i ti n trình B, và ch đ m t p mà ti n trình A mong mu n không t ng thích v i ch đ m t p mà ti n trình B đã s d ng, thì tu thu c vào các tính n ng c a h
th ng mà ti n trình A s đ c thông báo v vi c không th m t p X trong ch đ mong
mu n, ho c là ti n trình A s b phong to cho đ n khi ti n trình B ch a th c hi n thao tác đóng t p X
Trong các phiên b n m i c a h đi u hành UNIX có h tr ch đ đ ng b hoá trong khi m t p Th m chí, t n t i kh n ng đ ng b nhi u ti n trình cùng m và s đ i n i dung
m t t p th c hi n đi u đó, m t c ch các phong to đ ng b các kho ng đ a ch c a t p
đ c m đ c đ a vào áp d ng
I.1.2 L nh v c ng d ng c a t p tin
Tr c tiên, các t p đ c s d ng đ l u tr các d li u v n b n: tài li u, mã ngu n
ch ng trình,… Nh ng t p nh v y th ng đ c t o ra và đ c thao tác b i các ch ng trình x lý v n b n khác nhau C u trúc c a các t p v n b n th ng r t đ n gi n: ho c là
Trang 16m t chu i các b n ghi ch a các xâu ký t , ho c là chu i các bytes, mà trong chúng có th
g p nh ng ký t đ c bi t, ví d các ký t cu i câu
Các t p ch a mã ngu n các ch ng trình đ c s d ng là đ u vào c a các trình biên
d ch n phiên mình, các trình biên d ch c ng t o ra các t p ch a các mô-đun đ i t ng Trên quan đi m h th ng t p, các t p đ i t ng c ng s h u c u trúc r t đ n gi n – chu i các b n ghi ho c các bytes H th ng l p trình thi t đ t lên c u trúc đó m t c u trúc mô-đun
đ i t ng ph c t p h n và chuyên bi t cho h th ng đó ó là c u trúc lu n lý (logic), và
c u trúc mô-đun đ i t ng đó là “không hi u” đ i v i h th ng t p
T ng t v i các t p đ c t o ra b i các trình so n th o các liên k t và ch a các
đo n ch ng trình th c thi C u trúc lu n lý c a các t p nh th c ng ch “hi u đ c” v i trình so n th o các liên k t và trình kh i đ ng c a h đi u hành V i các t p ch a thông tin
đ ho , âm thanh… c ng có tình hu ng nh th Ví d , m t t p ch a nh có đ nh d ng JPG thì ch có các trình so n th o, xem nh có ch c n ng xem nh đ nh d ng JPG hi u đ c
Nh v y, h th ng t p th ng ch đ m b o l u tr các thông tin đ c c u trúc y u,
và đ ph n c u trúc hoá còn l i cho các trình ng d ng i u đó th m chí r t t t trong các
tr ng h p s d ng t p đã nêu trên, b i vì trong quá trình phát tri n m t h th ng ng d ng
m i nào đó, ch c n d a trên nh ng công c chu n và đ n gi n c a h th ng t p có th tri n khai các c u trúc l u tr Các c u trúc l u tr g n g i v i các đ c thù c a l nh v c ng d ng
c a h th ng h n
I.1.3 Yêu c u c a các h th ng thông tin
Tuy nhiên, th c ch t tình hu ng c a các h th ng thông tin khác bi t v i các ng
d ng đã nêu trên Các h th ng này ch y u thiên v l u tr , l a ch n và s a đ i các thông tìn t n t i v nh vi n C u trúc thông tin th ng r t ph c t p, và dù c u trúc d li u khác bi t nhau trong các h th ng thông tin, nh ng gi a chúng th ng t n t i nhi u th chung giai
đo n đ u s d ng k thu t máy tính đ qu n tr thông tin, các v n đ c u trúc hoá d li u
đ c gi i quy t riêng l trong m i h th ng thông tin Nh ng b i vì các h th ng thông tin yêu c u các c u trúc d li u ph c t p, các công c b tr riêng l đ qu n tr d li u đó là
m t ph n khá l n c a các h th ng thông tin và trên th c t g n nh l p l i trong các h
th ng Vi c c g ng phân ra và công b ph n chung c a các h th ng thông tin, ph n ch u trách nhi m qu n tr các d li u đ c c u trúc ph c t p có th đ c xem là nguyên nhân đ u tiên đánh th c vi c c n thi t ph i xây d ng HQT CSDL Sau này th y r ng, không th b
Trang 17qua th vi n ch ng trình chung, mà trong đó các công c l u tr d li u ph c t p h n
đ c tri n khai trên m t h th ng t p chu n và c n b n
Ví d , chúng ta mu n tri n khai m t h th ng thông tin đ n gi n đ h tr qu n lý nhân s m t t ch c nào đó H th ng c n ph i có nh ng tính n ng sau: Cho xem danh sách nhân viên theo phòng ban, chuy n m t nhân viên t phòng ban này sang phòng ban khác,
nh n nhân viên m i ho c cho ngh vi c m t nhân viên Ngoài ra, có th tính t ng s nhân viên trong m i phòng ban, t ng s ti n l ng cho m i phòng ban, c ng nh t ng s ti n
l ng ph i tr cho toàn c quan Ngoài ra, v i m i nhân viên có th xem thông tin v h , công vi c h đang làm, trách nhi m quy n h n h đang n m gi ,…
N u chúng ta s d ng h th ng t p đ l u tr , ngh a là t t c thông tin đ c ghi vào
m t t p v n b n d ng text, t t nhiên, ph i phát tri n thêm th vi n công c đ c bi t đ làm
vi c v i h th ng t p đây, đ n v thông tin nh nh t là nhân viên, vì th m i b n ghi là
m t dòng l u gi t t c m i thông tin liên quan nhân viên V i m t h th ng thông tin đ n
gi n nh th , trong tr ng h p này đòi h i: 1) xây d ng các thi t đ t đ ph c t p đ truy
c p đ n các t p theo nhi u khoá; 2) rõ ràng, t n t i s d th a r t l n trong l u tr d li u,
và ph i th c hi n quá nhi u phép ch n và tính toán đ thu đ c thông tin t ng k t v m t phòng ban Ngoài ra, trong quá trình khai thác h th ng, n u mu n đ a vào thêm ch c n ng
đ n gi n, ch ng h n nh cho xem danh sách nh ng nhân viên đ c h ng m c l ng cho
tr c, chúng ta ph i đ c toàn b t p, ho c là ph i c u trúc l i t p đ thêm khoá
C ng có th làm vi c tr c ti p trên n n t ng h th ng t p, nh ng chúng ta chia t p đó thành nhi u t p Và khi đó, nh ng s b t ti n và khó kh n nêu trên s đ c v t qua, nh ng
rõ ràng h th ng thông tin c a chúng ta bây gi ph i s h u nh ng tính n ng m i trong th
vi n các công c , và b c chuy n này đã làm h th ng ti n g n đ n HQT CSDL
Tr c tiên, h th ng ph i bi t r ng, nó đang làm vi c v i nhi u t p khác nhau ch a thông tin liên quan m t thi t v i nhau, và bi t đ c ý ngh a (ng ngh a) c a t ng tr ng Và
r ng, n u thay đ i thông tin trong m t t p thì c ng ph i t đ ng thay đ i t ng ng nh ng
t p khác ch a thông tin liên quan Khái ni m tính nh t quán d li u (tính toàn v n) là khái
ni m mang tính chìa khoá c a CSDL Th c t , n u h th ng thông tin h tr l u tr d li u
m t cách nh t quán trong nhi u t p, th ì có th nói r ng, nó đã đ m b o tính nh t quán, và có
th g i nó là h qu n tr c s d li u (HQT CSDL) Dù bây gi ch yêu c u duy trì tính
nh t quán d li u trong nhi u t p, nh ng th vi n các ch c n ng (công c ) c a chúng ta
c ng không th b đi Vì h th ng nh th c n ph i có nh ng d li u c a riêng nó, đó là
Trang 18nh ng siêu d li u (meta-data), và th m chí nh ng tri th c đ nh ngh a tính nh t quán c a d
li u
Nh ng đó c ng ch a ph i là t t c nh ng gì đòi h i t m t HQT CSDL Th nh t, rõ ràng trong h th ng thông tin đ n gi n đó c ng r t khó đ tri n khai nh ng truy v n r t đ n
gi n ki u nh “cho xem s l ng nhân viên trong phòng ban mà nhân viên A làm tr ng” Suy ra, HQT CSDL c n ph i h tr m t ngôn ng g n v i ngôn ng con ng i và cho phép
t o ra các truy v n m t cách đ n gi n, và ng i dùng không c n quan tâm c n ph i th c thi
truy v n nh th nào Nh ng ngôn ng nh th g i là ngôn ng truy v n đ n CSDL SQL
(Structured Query Language) cho mô hình d li u quan h là m t ngôn ng nh th
Th hai, HQT CSDL ph i nh n trách nhi m v tính nh t quán c a d li u N u chúng ta làm vi c tr c ti p trên n n t ng h th ng t p b ng th vi n các công c m r ng đ làm vi c v i t p, và phân tách CSDL ra làm nhi u t p khác nhau; khi c n s a đ i d li u
m t t p thì t t nhiên c ng ph i th c hi n nh ng thay đ i t ng ng trong nh ng t p ch a d
li u liên quan N u trong quá trình đó, chúng ta không k p th c hi n các thay đ i c n thi t trong t t c các t p liên quan và trong h th ng x y ra s c , ví d m t đi n, thì sau khi h
th ng kh i đ ng l i, CSDL đ c ch a trong các t p c a chúng ta không còn n m trong
tr ng thái nh t quán n a Các HQT CSDL hi n đ i nh n t t c các trách nhi m đó, nó đ m
b o CSDL s đ c khôi ph c l i tr ng thái nh t quán sau khi x y ra s c và ng i dùng
c ng nh trình ng d ng không c n ph i quan tâm đ n v n đ đó
Và cu i cùng, n u chúng ta mu n đ m b o công vi c song song c a nhi u ng i dùng đ ng th i trên CSDL, và chúng ta ch d a trên vi c s d ng tr c ti p các t p, thì đ
đ m b o tính đúng đ n trong công vi c trong c th i gian s a đ i d li u b i m t ng i dùng nào đó trong m t trong s các t p ch a thông tin liên quan, thì vi c truy c p c a t t c các ng i dùng còn l i đ n t p đó b phong to (nh đã nói trên) Nh v y, th i gian đ
th c hi n m t truy v n dù là trên các d li u không liên quan c ng b kéo dài Các HQT CSDL hi n đ i đ m b o c ch m m d o h n nhi u đ đ ng b hoá truy c p đ ng th i đ n
d li u
Và nh th , HQT CSDL gi i quy t nhi u v n đ mà h u nh không th gi i quy t
đ c ho c r t khó n u gi i quy t b ng vi c s d ng h th ng t p Trong khi đó c ng t n t i nhi u trình ng d ng, mà đ i v i chúng các t p là đ ; ho c c n ph i xác đ nh cho chúng
m c đ c n thi t đ làm vi c v i d li u đ c l u tr trong b nh ngoài; ho c là đ i v i
Trang 19b o ngôn ng thao tác và truy v n d li u; khôi ph c d li u sau các s c khác nhau; và
đ m b o công vi c song song gi a các ng i dùng khác nhau Có th nói r ng, n u m t h
th ng thông tin ng d ng nào đó d a trên m t h th ng qu n tr d li u s h u các tính n ng trên, thì h qu n tr d li u đó có th đ c g i là HQT CSDL
I.2.1 Các ch c n ng c a HQT CSDL
I.2.1.1 Qu n tr d li u tr c ti p trong b nh ngoài
Ch c n ng này bao g m s đ m b o các c u trúc c n thi t c a b nh ngoài đ l u
tr d li u là d li u c a CSDL, và c cho các m c đích ph c d ch (ph c v ) khác, ví d , đ
đ y nhanh quá trình truy c p đ n d li u trong m t s tr ng h p nào đó Trong m t vài phiên b n HQT CSDL các tính n ng c a h th ng t p đ c s d ng r t tích c c, nh ng trong vài phiên b n khác công vi c đ c th c hi n trên c p đ các thi t b b nh ngoài
Nh ng trong các HQT CSDL tiên ti n, ng i dùng không c n bi t HQT CSDL s d ng h
th ng t p hay không, và n u s d ng, thì ng i dùng không c n bi t các t p đ c t ch c
nh th nào Thông th ng, HQT CSDL đ m b o h th ng chuyên bi t c a mình đ đ t tên các đ i t ng c a CSDL
I.2.1.2 Qu n tr các b nh đ m (buffers) trong RAM
Trang 20CSDL Vì th trong các HQT CSDL tiên ti n, m t t h p b nh đ m RAM c a chính nó cùng v i các nguyên t c trao đ i/thay đ i b đ m c a riêng nó đ c duy trì
C ng t n t i m t l p HQT CSDL riêng h ng đ n vi c luôn t n t i c CSDL trong RAM H ng này d a trên n n t ng gi thuy t r ng, dung l ng RAM trong t ng lai là không gi i h n ho c l n đ n m c nào đó, đ cho phép không quan tâm đ n đ m hoá n a
Hi n t i các công trình theo h ng này đang n m trong giai đo n nghiên c u
I.2.1.3 i u khi n các giao tác
Giao tác là m t chu i n i ti p các thao tác trên CSDL, và các thao tác đó xem HQT CSDL là m t th th ng nh t Giao tác ho c là đ c th c thi hoàn toàn, và HQT CSDL c
đ nh (COMMIT) trong b nh ngoài các thay đ i trong CSDL b i giao tác đó; ho c là không có b t c m t thay đ i nào do nó gây nên đ c th hi n trong tr ng thái c a CSDL Khái ni m giao tác c n thi t đ đ m b o tính nh t quán lu n lý c a CSDL Trong tr ng
h p s d ng h th ng t p và l u tr các b ng trong các t p nh đã nêu trên (?), cách duy
nh t đ đ m b o tính nh t quán CSDL khi th c thi m t s a đ i d li u và d n t i c n thi t
ph i s đ i trên các t p có thông tin liên quan, đó là liên k t t t c các thao tác đó vào m t
“gói” g i là giao tác Nh v y, duy trì c ch giao tác là đi u ki n c n, th m chí trong các HQT CSDL v i ch đ m t ng i dùng Khái ni m giao tác còn quan trong h n r t nhi u trong các HQT CSDL cho phép nhi u ng i dùng làm vi c đ ng th i
Tính ch t m i giao tác đ c b t đ u trong tr ng thái toàn v n c a CSDL và c ng đ
l i m t tr ng thái toàn v n CSDL khi k t thúc, cho phép s d ng giao tác nh là m t đ n v
ho t đ ng c a ng i dùng trong quan h v i CSDL D i m t s đi u khi n t ng ng vi c
th c thi song song các giao tác đ ng th i c a HQT CSDL, h u nh m i m t trong s các
ng i dùng c m giác nh h là ng i dùng duy nh t trong HQT CSDL Ch trong m t s
tr ng h p đ c bi t, ng i dùng m i c m giác r ng còn có nh ng ng i khác c ng làm vi c trên HQT CSDL nh mình
Cùng v i khái ni m đi u khi n các giao tác trong HQT CSDL nhi u ng i dùng liên
quan đ n các khái ni m r t quan tr ng, đó là khái ni m tu n t hoá (serialization) các giao
tác và khái ni m k ho ch tu n t th c thi h n h p các giao tác Khái ni m tu n t hoá các
giao tác đ c hi u là th t hoá k ho ch th c hi n công vi c c a chúng, mà k t qu (hi u
qu ) cu i cùng th c thi c a h n h p các giao tác t ng đ ng v i k t qu th c thi chúng theo m t th t n i ti p nào đó K ho ch tu n t th c thi h n h p các giao tác là m t k
Trang 21ho ch th c thi s đ a đ n k t qu là tu n t hoá các giao tác Hi u r ng, n u có th đ t đ c
th c thi tu n t m t cách th c s h n h p các giao tác, thì v i m i m t ng i m t giao tác
đ c t o nên và s có m t c a các giao tác khác trong h th ng là không nh n th y, n u chúng ta không tính đ n kh n ng h th ng s đ a l i k t qu th c thi ch m h n so v i khi
ch có m t ng i dùng (ho c trong ch đ m t ng i dùng)
T n t i m t s thu t toán tu n t hoá các giao tác.Trong các HQT CSDL t p trung,
ph bi n nh t là các thu t toán trên n n t ng phong to đ ng b (synch locks) các đ i t ng CSDL Trong quá trình s d ng b t k m t thu t toán tu n t hoá các giao tác nào c ng có
th xu t hi n các xung đ t gi a hai ho c nhi u h n các giao tác theo truy c p đ n các đ i
t ng c a CSDL Trong tr ng h p đó, đ duy trì tính tu n t c n ph i th c hi n rollback (làm ng c l i t t c các thay đ i trong CSDL đ c th c hi n b i) m t hay nhi u giao tác
ó là m t trong nh ng tr ng h p làm cho ng i dùng c a HQT CSDL nhi u ng i dùng
c m nh n s có m t trong h th ng nhi u giao tác c a các ng i dùng khác
I.2.1.4 Nh t ký
M t trong nh ng yêu c u c n b n đ i v i HQT CSDL là tính tin c y trong l u tr d
li u trong b nh ngoài Tính tin c y trong l u tr đ c hi u là, HQT CSDL c n ph i trong
t th s n sàng khôi ph c tr ng thái nh t quán cu i cùng c a CSDL sau khi x y ra b t k s
c nào, ph n c ng hay ph n m m Các x c ph n c ng (thi t b ) đ c chia làm hai lo i, đó
d ng l i tr ng thái ch a hoàn thành Tr ng h p đ u có th xem là m t d ng đ c bi t c a
s c thi t b m m Khi x y ra tr ng h p th hai, c n ph i thanh lý (hu b ) t t c các h u
qu (nh ng thay đ i) đ c t o ra ch b i giao tác đó
Rõ ràng, trong m i tr ng h p, đ khôi ph c CSDL c n ph i có nh ng thông tin b
tr nào đó Nói cách khác, đ duy trì tính tin c y c a vi c l u tr d li u trong CSDL đòi
h i tính d th a trong l u tr d li u, và khi đó, ph n d li u đ c s d ng đ khôi ph c CSDL c n ph i đ c l u tr đ c bi t tin c y Bi n pháp ph bi n đ duy trì tính d th a d
li u nh th là đ a vào nh t ký các thay đ i c a CSDL
Trang 22Nh t ký là ph n đ c bi t c a CSDL l u tr thông tin v t t c các thay đ i trong CSDL, là không th truy c p đ i v i ng i dùng và đ c b o qu n m t cách vô cùng c n
th n Th m chí thông th ng ng i ra l u gi nh t ký theo nhi u b n sao trong ít nh t hai thi t b l u tr b nh ngoài khác nhau Trong các HQT CSDL khác nhau các thay đ i đ c ghi nh t ký các c p đ khác nhau: đôi khi b n ghi nh t ký t ng ng v i m t thao tác lu n
lý thay đ i d li u, ví d , thao tác xoá m t dòng t m t b ng c a CSDL quan h ; đôi khi – thao tác t i thi u đ s a đ i m t trang b nh ngoài; và đôi khi c hai ph ng pháp trên đ u
đ c s d ng
Trong t t c các tr ng h p, chi n l c ghi nh t ký tr c (WAL – Write Ahead
Log) Chi n l c đó chính là b n ghi v s thay đ i c a b t k đ i t ng nào c a CSDL đ u
ph i đ c c đ nh trong b nh ngoài c a nh t ký, tr c khi đ i t ng đã đ c s a đ i đ c
c đ nh trong b nh ngoài c a ph n ch y u c a CSDL Và nh th , d th y r ng, n u HQT CSDL tuân th giao th c WAL, thì v i s giúp đ c a nh t ký có th gi i quy t t t c các v n đ khôi ph c CSDL sau b t k s c nào
Tình hu ng đ n gi n nh t c a vi c khôi ph c – đó là rollback riêng l m t giao tác Cho tr ng h p này không nh t thi t ph i s d ng nh t ký thay đ i CSDL chung c a c h
th ng, ch c n duy trì m t nh t ký c c b các thao tác s a đ i CSDL cho m i giao tác, và
th c thi rollback giao tác b ng cách làm ng c l i t t c các thao tác, b t đ u cu i nh t ký
c c b Trong vài HQT CSDL làm nh th , nh ng ph n l n các HQT CSDL không duy trì các nh t ký c c b , còn rollback riêng l m t giao tác đ c th c hi n theo nh t ký chung
c a h th ng Và vì th , t t c các b n ghi t m t giao tác liên k t v i nhau b ng m t danh sách ng c t cu i cho đ n đ u
Trong s c m m, trong b nh ngoài c a ph n chính c a CSDL có th có các đ i
t ng đã đ c s a đ i b i các giao tác ch a hoàn thành cho đ n th i đi m x y ra s c , và
có th không có các đ i t ng đã đ c s a đ i b i nh ng giao tác hoàn thành tr c th i
đi m x y ra s c nh ng k t qu c a nó trên b nh đ m v n ch a đ c c đ nh trong b
nh ngoài N u tuân theo giao th c WAL, các b n ghi thu c các thao tác s a đ i c a c hai
lo i đ i t ng đ m b o có m t trong b nh ngoài c a nh t ký M c đích c a quá trình khôi
ph c sau s c m m là tr ng thái b nh ngoài c a ph n chính c a CSDL, tr ng thái mà s
xu t hi n n u t t c các s a đ i CSDL b i các giao tác đã hoàn thành đ c c đ nh trong b
nh ngoài, và tr ng thái đó CSDL không ch a b t c m t d u n nào c a các giao tác
ch a đ c hoàn t t đ t đ c tr ng thái đó, đ u tiên ph i th c hi n rollback các giao tác
Trang 23ch a hoàn t t (undo), và sau đó l p l i các thao tác c a các giao tác đã hoàn t t nh ng k t
qu c a nó v n ch a đ c c đ nh trong b nh ngoài Quá trình đó ch a r t nhi u đi m
m m d o, tinh vi liên quan đ n cách t ch c chung c a vi c qu n tr các b nh đ m và nh t
ký
Nh t ký và b n sao l u l u tr c a CSDL đ c s d ng đ khôi ph c CSDL sau s
c c ng Có th nói nôm na, b n sao l u l u tr là b n sao toàn b CSDL cho đ n th i đi m
b t đ u ghi nh t ký T t nhiên, đ khôi ph c CSDL sau s c c ng m t cách bình th ng, thì nh t ký không b đánh m t ho c h h i Và khi đó, công vi c khôi ph c CSDL bao g m:
xu t phát t b n sao l u l u tr c a CSDL th c thi công vi c c a tât c các giao tác đ ã hoàn
t t thành công cho đ n th i đi m x y ra s c V nguyên t c, c ng có th th c thi công vi c
c a các giao tác ch a hoàn t t và cho phép ti p t c công vi c sau khi k t thúc quá trình khôi
ph c Tuy nhiên, trong các h th ng th c ti n đi u đó không đ c th c hi n, b i vì quá trình khôi ph c CSDL sau s c c ng là quá trình khá lâu dài v m t th i gian
I.2.1.5 H tr các ngôn ng CSDL
Các ngôn ng đ c bi t đ c s d ng đ làm vi c v i các CSDL th ng đ c g i là
các ngôn ng CSDL Trong các HQT CSDL tr c đây duy trì vài ngôn ng chuyên bi t theo
ch c n ng c a chúng Th ng phân ra hai ngôn ng - ngôn ng đ nh ngh a l c đ (SDL – Schema Definition Language) CSDL và ngôn ng thao tác d li u (DML – Data
Manipulation Language) SDL ph c v ch y u đ đ nh ngh a c u trúc lu n lý c a CSDL, ngh a là c u trúc c a CSDL đ c th hi n v i ng i dùng DML ch a t h p các toán t (l nh) thao tác d li u, ngh a là các l nh cho phép th c hi n vi c cho d li u m i vào CSDL, th c hi n các s a đ i c ng nh xoá ho c là l a ch n nh ng d li u đang t n t i
Trong các HQT CSDL hi n đ i, th ng thì m t ngôn ng tích h p duy nh t đ c s
d ng Ngôn ng đó ch a t t c nh ng công c c n thi t đ làm vi c v i CSDL, t vi c t o
ra nó, và đ m b o m t giao di n ng i dùng c n b n v i các CSDL Ngôn ng chu n và
ph bi n nh t trong các HQT CSDL quan h là SQL (Structured Query Language)
Ngôn ng SQL ch a các công c đ c bi t đ đ nh ngh a các r àng bu c tính nh t quán
c a CSDL Các ràng bu c đ c l u gi trong các b ng-danh m c đ c bi t, và đ m b o ki m tra tính nh t quán c a CSDL đ c di n ra trên c p đ ngôn ng , ngh a là, khi biên d ch các
l nh s a đ i CSDL, trên c s các ràng bu c tính nh t quán CSDL đang có, trình biên d ch SQL t o ra mã ch ng trình t ng ng
Trang 24Các l nh đ c bi t c a ngôn ng SQL cho phép đ nh ngh a các khung nh ìn c a CSDL Các khung nhìn th c t là các truy v n đ c l u tr trong CSDL v i các thu c tính đ c đ t tên i v i ng i dùng, khung nhìn c ng là m t b ng gi ng nh b t k m t b ng g c nào
đ c l u tr trong CSDL Nh ng, v i s giúp đ c a các khung nhìn có th h n ch ho c
m r ng “t m nhìn” CSDL cho m t ng i dùng c th Duy trì các khung nhìn c ng đ c
Truy c p d li u hi u qu đ c th hi n qua vi c DBMS s d ng nh ng k thu t
c c k tinh vi đ l u tr và thu nh n d li u m t cách hi u qu Tính n ng này r t quan trong n u d li u đ c l u tr trên nh ng thi t b l u tr ngoài
m b o toàn v n d li u và b o m t d li u (data integrity và security) là l i ích
quan tr ng nh t mà HQT CSDL mang l i N u d li u luôn đ c truy c p thông qua HQT CSDL, HQT CSDL có th tuân th các ràng bu c toàn v n d li u Có th nói, m c đích chính c a các ch c n ng chính c a HQT CSDL nêu trên ch y u c ng nh m đ m b o tính toàn v n d li u Ngoài ra, HQT CSDL còn đi u khi n quá trình truy c p đ ch huy d li u
Trang 25H QU N TR C S D LI U – B n Nháp 30-08-08
T p trung hoá quá trình qu n tr d li u có ý ngh a c i thi n h th ng đáng k , khi
nhi u ng i dùng cùng chia s d li u Qu n tr d li u cho phép các chuyên gia – nh ng
ng i hi u đ c tính c a d li u đang đ c qu n tr và hi u các nhóm ng i dung khác nhau
s d ng d li u nh th nào, ch u trách nhi m t ch c th hi n d li u nh m nâng cao hi u
qu truy c p thông qua t i thi u hoá s d th a và thi t đ t đúng các tính n ng c a h th ng
l u tr d li u
Rút ng n th i gian phát tri n ng d ng đ c hi u thông qua vi c HQT CSDL cung
c p h u h t các ch c n ng quan tr ng trong vi c l u tr , qu n tr và s d ng d li u thay vì
ph i phát tri n t đ u cùng v i trình ng d ng
M c dù HQT CSDL cung c p nhi u l i ích nh v y, nh ng nó là m t h th ng ph n
m m hoàn thi n đ c t i u hoá cho nh ng lo i công vi c nh t đ nh nào đó (nh th c thi các truy v n, gi i quy t cùng lúc nhi u yêu c u t ng tranh,…), và các trình ng d ng c ng
có th không ch n s d ng HQT CSDL trong nhi u tr ng h p, ch ng h n:
– Các ng d ng yêu c u các ràng bu c th i gian th c nghiêm ng t;
– Các ng d ng ch yêu c u ch vài thao tác ng d ng ch yêu c u ch vài thao tác then ch t đ c thi t k t t và ch c n vi t mã ngu n cho các thao tác đó (t t nhiên hi u qu
s d ng s cao h n nhi u);
– ng d ng yêu c u ph i thao tác d li u theo ki u mà ngôn ng CSDL c a HQT CSDL không đáp ng đ c
ti n ích Trong vài h th ng, các ph n đó đ c phân chia m t cách rõ ràng, và trong m t s
Trang 26không rõ ràng, nh ng m t cách lu n lý, s phân chia nh th đ c áp d ng trong t t c các HQT CSDL
Nhân c a HQT CSDL ch u trách nhi m qu n tr d li u trong b nh ngoài, qu n tr các b nh đ m RAM, qu n tr các giao tác và nh t ký T ng ng, có th phân chia các thành ph n c a nhân thành qu n tr viên (manager) d li u, qu n tr viên các b nh đ m,
qu n tr viên các giao tác và qu n tr viên nh t ký Ch c n ng c a các thành ph n đó là liên quan qua l i v i nhau, và đ đ m b o công vi c c a HQT CSDL đ c đúng đ n, t t c các thành ph n đó c n ph i t ng tác v i nhau theo các giao th c đã đ c tính toán và ki m tra
k l ng Nhân c a HQT CSDL s h u giao di n riêng c a mình Giao di n đó là không th truy c p tr c ti p đ i v i ng i dùng và đ c s d ng trong các ch ng trình đ c s n sinh
ra b i trình biên d ch SQL và trong các ti n ích c a CSDL Nhân c a HQT CSDL là ph n
l u trú (resident) (trong b nh ) ch y u c a HQT CSDL Khi s d ng ki n trúc
“khách-ch ”, nhân là ph n c u thành server c b n c a h th ng
Ch c n ng chính c a trình biên d ch (compiler) ngôn ng CSDL là biên d ch các l nh
c a ngôn ng CSDL thành các ch ng trình th c thi nào đó V n đ chính c a các HQT CSDL quan h là các ngôn ng c a các h th ng đó (th ng là SQL) không ph i là ngôn
ng th t c (non-procedure), ngh a là, trong l nh c a m t ngôn ng nh th m t thao tác trên CSDL đ c đ c t Nh ng đ c t đó không ph i là m t th t c, mà ch là miêu t trong
m t hình th c nào đó các đi u ki n hoàn thành m t thao tác mong mu n Vì th , trình biên
d ch ph i quy t đ nh, c n ph i th c thi l nh nh th nào tr c khi t o ra ch ng trình Nhi u
ph ng pháp ph c t p khác nhau đ c áp d ng đ t i u hoá các l nh K t qu quá trình biên d ch là m t trình th c thi, đ c bi u di n trong m t h th ng nào đó trong mã máy,
th ng là trong mã bên trong không ph thu c máy Vi c th c thi th c t m t l nh đ c
th c hi n b i phân h h tr th i gian th c thi Phân h này th c t là m t trình thông d ch (interpreter - M t công c phiên d ch ngôn ng l p trình b c cao dùng đ d ch và ch y
ch ng trình cùng m t lúc) c a ngôn ng bi u di n bên trong đó
Các ti n ích riêng l c a CSDL th ng là các th t c mà th c thi chúng s d ng ngôn
ng CSDL là quá “t n kém” Ví d , t i (load) và unload CSDL, thu th p các s th ng kê,
ki m tra t ng th tính toàn v n CSDL,… Các ti n ích đ c l p trình cùng v i vi c s d ng giao di n c a nhân HQT CSDL, và đôi khi tác đ ng đ n bên trong c a nhân
Trang 27li u trong CSDL) và C p đ ngôn ng (ch ng h n c p đ tri n khai ngôn ng SQL) V i
c u trúc t ch c nh v y các h th ng còn ph i h tr trong b nh ngoài các c u trúc c
b n mà s di n gi i c th c a nó là m t ph n trong s ch c n ng c a phân h c p đ cao
h n
Trang 28đ ng th i (ph bi n h n và th ng là phép n i nhi u quan h t n nhi u ngu n l c) Trong
đi u ki n đó trong b nh ngoài ph i h tr các c u trúc qu n lý t ng c ng nh ch m c
− Cu i cùng, đ th c hi n yêu c u l u tr m t cách an toàn CSDL v n ph i h tr
“đ th a l u tr ” d li u Th ng đ c tri n khai d i d ng nh t ký thay đ i d li u
Nh v y xu t hi n nh ng ch ng lo i đ i t ng trong b nh ngoài sau đây:
ng i dùng có th th y đ c
− Các c u trúc đi u khi n – ch m c, đ c t o ra m t cách ch đông theo sáng
ki n c a ng i dung, th ng là qu n tr viên hay c p đ cao nh t c a h th ng t nh ng d
ki n nâng cao hi u qu th c hi n các truy v n và th ng t đ ng đ c h tr b i các c p đ
th p h n c a h th ng
− Thông tin nh t ký − đ c h tr đ đ m b o an toàn trong l u tr d li u
− Các thông tin b tr khác đ đáp ng các yêu c u bên trong c p đ th p c a h
th ng (ví d thông tin v ph n b nh không đ c s d ng)
Ví d …
II.1.3 L u tr quan h
V nguyên t c t n t i hai cách l u tr v t lý các quan h Ph bi n nh t là l u tr quan h theo t ng b n ghi B n ghi là đ n v l u tr v t lý Rõ ràng cách này đ m b o ti p
c n nhanh chóng đ n t ng b n ghi Nh ng nh v y trong b nh ngoài nh ng giá tr chung
c a các b n ghi khác nhau c a m t quan h đ c l p l i, và nh v y, có th đòi h i nh ng trao đ i d th a v i b nh ngoài n u c n m t ph n b n ghi
Cách khác ít ph bi n h n là l u tr quan h theo c t, ngh a là đ n v l u tr là
c t c a quan h lo i tr nh ng giá tr l p l i Rõ ràng cách này v t ng th đòi h i ít b nh
Trang 29H QU N TR C S D LI U – B n Nháp 30-08-08
ngoài h n b i vì nh ng giá tr l p l i không đ c l u tr V i m t trao đ i v i b nh ngoài trong tr ng h p chung có th đ c đ c thông tin c n thi t nhi u h n M t u th n a là
kh n ng dùng các giá tr c a c t đ t i u hoá quá trình th c hi n phép n i Nh ng trong
tr ng h p này đòi h i ho t đ ng ph tr t ng đ i l n đ thu đ c nguyên b n ghi ho c
trong su t th i t n t i c a b n ghi C u trúc tid suy ra t hình v trên
− Th ng m i b n ghi đ c l u tr toàn v n trong m t trang d li u T đó suy
ra đ dài l n nh t c a m t b n ghi đ c gi i h n b i kích c c a trang d li u T đó n y sinh câu h i: Làm th nào v i nh ng d li u “dài” không th ch a trong m t trang d li u?
riêng bi t ngoài CSDL và trong b n ghi thay vì giá tr gi li u chúng ta gi tên t p cùng v i
đ ng d n đ y đ m t vài HQT CSDL nh ng d li u dài nh v y đ c l u tr riêng bi t trên nh ng t p h p các trang d li u trong b nh ngoài C hai ph ng pháp trên đ u r t
h n ch trong làm vi c v i d li u dài, ví d , làm th nào đ thay đ i ho c xoá 1 byte gi a trong chu i d li u nhi u MB? Hi n t i ng i ta th ng s d ng ph ng pháp đ c gi i thi u cách đây ch a lâu, trong đó d li u dài đ c l u tr và t ch c d i d ng B-tree chu i các byte d li u
− Theo nguyên t c, rõ ràng trong m t trang d li u ch l u tr b n ghi c a m t quan h duy nh t Nh ng c ng t n t i nh ng ph ng án l u tr b n ghi c a các quan h
Trang 30− Thay đ i s đ quan h đ c l u tr b ng cách thêm c t không b t bu c ph i t
ch c l i quan h v m t v t lý Ch c n thay đ i thông tin v nhãn miêu t (descriptor) c a quan h và n i r ng b n ghi ch khi thông tin đ c nh p vào c t m i
− B i vì quan h có th ch a nh ng giá tr không xác đ nh nên c n thi t ph i có
t n t i s h tr c p đ l u tr Th ng có th đ t đ c đi u đó b ng cách gi l i m t đ (scale) co gi n t ng ng trong m i b n ghi, và v nguyên t c b n ghi có th ch a nh ng giá tr không xác đ nh
− V n đ phân b b nh trong các trang d li u g n li n v i v n đ đ ng b và ghi l i nh t ký Ví d , trong quá trình th c hi n giao tác m t trang d li u b xoá s ch (tàn phá) s không đ c đ a vào tr ng thái “t do” cho đ n khi k t thúc giao tác, b i vì khi rollback giao tác nh ng b n ghi b xoá trong quá trình th c hi n giao tác s và khôi ph c trong quá trình rollback ph i đ c nh n chính xác nh ng ch danh mà nó đã có tr c khi b t
đ u th c hi n giao tác
− M t ph ng pháp nâng cao hi u qu HQT CSDL là liên cung (nhóm, clustering) nhi u quan h theo giá tr m t hay nhi u c t Nhóm chung nhi u quan h có l i trong t i u hoá phép n i các quan h khác nhau
− V i m c đích s d ng kh n ng th c hi n song song các trao đ i v i b nh ngoài th nh tho ng áp d ng s đ de-clustered l u tr các quan h : b n ghi có giá tr c t chung (c t đ c declustering) đ c l u tr trên nh ng thi t b đ a khác nhau, và trao đ i thông tin v i chúng có th th c hi n song song
Ý t ng ch đ o trong vi c l u tr quan h theo c t là l u tr chung t t c các giá
tr c a m t hay nhi u c t V i m i b n ghi quan h s l u tr b n ghi cùng c p đ đó, đ c
Trang 31nhau L u tr quan h theo các c t theo ngh a nào đó là tr ng h p “gi i h n” c a s phân chia quan h theo chi u d c
Các thao tác đ c/ghi c a thi t b l u tr đ c th c hi n theo b i s c a đ n v l u
tr v t lý N u m i đ n v d li u (l u tr ) ph kín các đ n v l u tr c a b nh v t lý thì ít
t n kém không gian l u tr v t lý nh t N u các đ n v d li u n m n i ti p nhau trên thi t
b l u tr thì th i gian đ c và ghi d li u th p nh t nh ti t ki m th i gian di chuy n đ u
đ c Tuy nhiên, s không hi u qu n u kh i l ng d li u thay đ i nhanh chóng Các HQT CSDL hi n đ i đ u có nh ng chính sách ho ch đ nh không gian l u tr , và thông th ng, không gian l u tr “ho ch đ nh tr c” đ c t ng lên theo m t thông s đã đ c thi t đ t và
l n h n nhi u l n so v i đ n v d li u l u tr và l n h n nhi u l n kh i l ng d li u c n
l u tr t ng lên trong l n g n nh t
II.1.4 Các ch m c
Các ch m c không th không đ c t ch c trong các HQT CSDL b i vì ch c
n ng ch y u c a chúng là đ m b o truy c p tr c ti p đ n các b n ghi c a quan h m t cách
hi u qu b ng các khoá Thông th ng ch m c đ c t o ra cho m t quan h và khoá là giá
tr c a m t thu c tính (có th là khoá kép đ c c u thành t nhi u thu c tính) N u khoá c a quan h là khoá c a ch m c thì ch m c ph i có tính ch t “đ c nh t”, ngh a là không ch a các khoá l p l i Trên th c t hoàn c nh có v đ i l p: Khi khai báo khoá ng viên (chính) cho m t quan h m t ch m c đ c nh t đ c t o ra, và bi n pháp duy nh t đ khai báo m t khoá nào nào đó khác v i khoá ng viên (chính) là t o ra m t ch m c đ c nh t m t cách rõ ràng (explicit) i u đó liên quan đ n vi c đ ki m tra vi c l u gi tính ch t đ c nh t c a
m t khoá nào đó đòi h i ph i có h tr v m t ch m c
B i vì trong quá trình th c hi n nhi u toán t (“phép”) c a c p đ ngôn ng đòi
h i s p x p các quan h t ng ng v i giá tr c a nh ng thu c tính nào đó M t tính ch t
c a ch m c mang l i nhi u l i ích đó là đ m b o cho xem liên ti p các b n ghi c a quan h trong kho ng giá tr c a khoá t ng hay gi m các giá tr c a khoá
Cu i cùng, m t trong nh ng bi n pháo t i u hoá quá trình th c hi n phép n i (equal-join) các quan h , m t trong nh ng phép ph bi n nh t và “tr giá cao nh t – đòi h i nhi u ngu n”, đó là t ch c các “đa ch m c” cho nhi u quan h s h u các thu c tính
gi ng nhau B t c cái nào t các thu c tính (ho c t h p) đó đ u có th đ i di n làm khoá
c a đa ch m c T h p b n ghi t t c các quan h liên quan b i đa ch m c t ng quan v i
Trang 32H QU N TR C S D LI U – B n Nháp 30-08-08
giá tr khoá, và giá tr các thu c tính tham gia trong quá trình t o ra đa ch m c c a các b n ghi đó trùng v i giá tr c a khoá
Ý t ng chung c a t t c các quá trình t ch c ch m c cho phép truy c p tr c
ti p b ng khoá và xem liên ti p theo th t t ng ho c gi m d n giá tr khoá là l u gi danh sách các giá tr khoá đã đ c s p x p và ràng bu c v i t ng giá tr khoá c a danh sách các
t đ nh danh các b n ghi Các ph ng pháp t ch c ch m c khác bi t nhau cách th c tìm khoá v i m t giá tr đ c cho
II.1.4.1 B-tree
Nh n th y r ng cách th c t ch c ch m c ph bi n nh t là dùng k thu t B-tree Trên quan đi m bi u di n lu n lý bên ngoài, B-tree là cây có tính cân b ng và có r t nhi u nhánh trong b nh ngoài Tính cân b ng đ c hi u r ng chi u dài đ ng đi t g c đ n b t
c lá nào c ng nh nhau Tính phân nhánh c a cây là m i nút c a cây ch (links) đ n s
l ng l n các nút h u du (nút con) Trên quan đi m t ch c v t lý đ c bi u di n nh m t
c u trúc “đa danh sách” (multi-lists) các trang b nh ngoài, ngh a là m i nút B-tree t ng
ng v i m t kh i (trang) b nh ngoài Các trang bên trong và các trang lá (nút lá) th ng
có c u trúc khác nhau
Tr ng h p đi n hình trang có c u trúc nh hình v d i đây:
Trong đi u ki n đó luôn luôn tho mãn các tính ch t:
− key(1) <= key(2) <= … <= key(n);
− trong trang c a cây Nm ch a các khoá k v i các giá tr key(m)<= k <= key(m+1)
Trang lá th ng có c u trúc:
Và th ng có các tính ch t:
− key(1) <= key(2) <= … <= key(t);
N1 key(1) N2 key(2) N3…Nn key(n) Nn+1 key(n+1)
Hình II.2 C u trúc đi n hình c a trang b nh
key(1) List(1) key(2) List(2)…key(t) List(t)
Hình II.3 C u trúc đi n hình c a trang (lá) b nh
Trang 33H QU N TR C S D LI U – B n Nháp 30-08-08
đ c s p x p;
− các trang lá liên k t v i nhau d i d ng danh sách liên k t đ n ho c kép
Tìm ki m trong B-tree là đi qua t g c đ n lá trong s t ng ng giá tr khoá
đ c cho B i vì cây phân nhánh r t m nh và đ c cân b ng nên đ th c hi n vi c tìm ki m theo b t k giá tr nào c a khoá c n đúng m t s duy nh t và th ng r t nh các trao đ i v i
b nh ngoài Chính xác h n, trong các cây đã đ c cân b ng, n i mà chi u dài t t c các
đ ng t g c đ n lá nh nhau, n u trong trang bên trong ch a n khoá, thì trong tr ng h p
chi u sâu c a cây không l n và vi c tìm ki m di n ra r t nhanh
Khi m khuy t ch y u c a B-tree là t đ ng h tr tính ch t cân b ng Bây gi chúng ta hãy xem đi u gì s x y ra khi them và xoá m t b n ghi
Tr ng h p thêm b n ghi:
B-tree không có khoá v i giá tr đã cho thì s thu đ c s trang mà nó s ph i đ c ch a trong
đó, và t t nhiên đ a ch chính xác t ng ng trong trang
− t b n ghi vào ch Rõ ràng r ng t t c các thao tác đ u đ c th c hi n trong
b nh đ m RAM Trang lá mà b n ghi s đ c thêm vào s đ c đ c lên b nh và trong
đó s đ c th c hi n quá trình “thêm vào” (insert) Kích th c b nh đ m ph i l n h n kích th c trang b nh ngoài
− N u sau khi th c hi n vi c thêm b n ghi kích th c ph n b nh đ m đ c s
d ng không tr nên l n h n so v i kích th c trang b nh ngoài thì quá trình thêm b n ghi xem nh k t thúc Ph n b nh đ m có th s đ c đ y ra b nh ngoài ngay l p t c ho c
t m th i đ c gi l i trong RAM tu thu c vào chính sách s d ng và qu n lý b nh đ m
− N u x y ra tr ng h p tràn b đ m (kích th c ph n b nh đ m đ c s d ng
tr nên l n h n so v i kích th c trang b nh ngoài) thì quá trình tách trang s đ c th c
hi n Cho vi c này, m t trang b nh ngoài m i s đ c yêu c u, và ph n b nh đ m đang
đ c s d ng s đ c chia làm hai theo cách nào đó đ n a th hai c ng đ c b t đ u b i
m t khoá Và n a th hai đ c ghi và trang b nh v a đ c chia Còn trong trang c thì thông tin v ph n b nh còn tr ng đ c s a đ i t ng ng T t nhiên đ ng d n (links) theo danh sách các trang lá
Trang 34đ c chia tách làm hai n a Và t t nhiên thông tin trong trang th h tr c c a nó c ng ph i
đ c s a đ i t ng ng K t qu là khoá và đ ng d n (đ a ch ) đ n trang m i đ c ghi vào trang th h tr c theo c p b c và quá trình này c tái di n
− Tr ng h p hi h u là tràn b nh trang g c c a B-tree Trong tr ng h p này
nó c ng đ c phân tách ra làm hai và m t trang g c m i s đ c hình thành Chi u sâu c a cây t ng lên m t đ n v
Tr ng h p xoá b n ghi:
− Tìm b n ghi theo khoá N u không tìm ra thì không có gì c n xoá c
− Trang lá ch a b n ghi c n xoá đ c đ c vào b nh đ m và quá trình xoá th c
s x y ra trong đó
− N u nh sau khi th c hi n b c xoá b n ghi kích th c ph n b nh đ m đ c
s d ng tr thành kích th c mà t ng c a nó v i kích th c ph n đã ch a thông tin trong trang bên ph i ho c trái trang hi n t i l n h n kích th c trang thì quá trình xoá b n ghi k t thúc
− N u ng c l i thì s di n ra quá trình h p nh t trang hi n t i v i trang bên trái
ho c bên ph i Ngh a là trong b nh đ m hình thành hình d ng m i c a trang, mà trong đó
đ c ch a n i dung c c a nó và n i dung trang bên trái ho c bên ph i t ng ng Trang lá
c không c n thi t đ c cho vào danh sách trang lá còn tr ng Danh sách các trang lá c ng
đ c thay đ i t ng ng
− lo i b kh n ng truy c p t g c đ n trang lá v a đ c gi i phóng c n ph i xoá khoá và đ a ch c a nó t trang bên trong th h tr c nó Trong tr ng h p đó có th
x y ra kh n ng c n ph i h p nh t trang bên trong th h tr c v i trang bên trái ho c bên
ph i c a nó Và quá trình này l i tái di n
− Tr ng h p cu i cùng là trang g c có th đ c xoá tr ng hoàn toàn sau khi h p
nh t hai trang h u du cu i cùng c a trang g c Trong tr ng h p đó trang g c đ c gi i phóng và chi u sâu c a cây gi m xu ng m t đ n v
Trang 35H QU N TR C S D LI U – B n Nháp 30-08-08
Nh đã th y, trong quá trình thêm và xoá b n ghi tính ch t cân b ng c a B-tree
đ c b o toàn, còn dung l ng b nh ngoài đ c s d ng n u t ng lên thì c ng r t ti t
ki m
V n đ là ch trong quá trình s a đ i d li u có kh n ng ph i h p nh t và phân tách các trang r t nhi u l n đ t đ c hi u qu s d ng b nh ngoài b ng cách gi m thi u s l n h p nh t và chia tách các trang ng i ta s d ng m t s gi i pháp sau:
− phân tách trang tr c, có ngh a là không ch đ n khi trang b tràn chúng ta m i phân tách mà phân tách tr c khi m c đ l p đ y trang cao đ n m t m c nào đó;
− đ b t sang trang bên c nh, ngh a là đ m b o m c đ l p đ y các trang g n nhau là nh nhau;
− h p nh t 3 vào 2, có ngh a là t o ra 2 trang m i trên c s n i dung c a 3 trang
g n nhau
C n chú ý r ng trong các HQT CSDL quá trình t ch c “đa truy c p” t g c đ n các trang lá c a B-tree là th ng xuyên và có th g p và ph i gi i nhi u v n đ khác nhau Cách gi i quy t đ n gi n nh t là đ c chi m B-tree trong su t quá trình s a đ i d li u ch ng
h n, nh ng rõ ràng không hi u qu Có nh ng cách đi khác t t h n, nh ng không n m trong khuôn kh ch ng trình Có th tìm hi u thêm []
M t đi m n a là m t s sách ng i ta dùng ký hi u B*-tree ho c B+-tree
II.1.4.2 B m (Hashing)
M t cách ti p c n khác đ t ch c các ch m c ph bi n h n đó là s d ng k thu t b m ây là m t ch đ l n và đ c xem xét nghiên c u riêng l Chúng ta ch gi i
h n xem qua m t vài đ c đi m c n ph i chú ý Ý t ng chung c a các ph ng pháp (k thu t) b m là s d ng các hàm b m (hay cu n, hash-functions) cho các giá tr c a khoá đ cho ra nh ng giá tr nh h n B m các giá tr khoá ra và dùng nó đ truy c p đ n các b n ghi
Tr ng h p đ n gi n và c đi n nh t đó là s b m khoá đ c s d ng nh là đ a
ch trong m t b ng ch a các khoá và b n ghi Yêu c u c n b n c a hàm b m là s phân b
đ ng đ u các giá tr b m N u xu t hi n xung đ t, m t b m duy nh t cho nhi u giá tr khoá
ph ng pháp này là kích th c c a trang c đ nh không đ i N u trang b quá đ y và tràn thì
s xu t hi n nhi u chu i các s tràn đ y Và n u nh v y, u đi m chính c a b m là truy
Trang 36H QU N TR C S D LI U – B n Nháp 30-08-08
c p đ n b n ghi th ng ch b ng m t b c truy c p đ n b ng s b m t đi M r ng trang đòi h i ph i làm l i hoàn toàn trên c s hàm b m m i v i giá tr b m kích th c l n h n Trong tr ng h p CSDL đi u này là hoàn toàn không đ c phép x y ra Vì v y các b ng tra
c u t m th i ch a các giá tr khoá và đ a ch b n ghi th ng đ c cho vào Còn b n thân
b n ghi đ c l u tr riêng l m t ch khác Vì v y khi x y ra s tràn đ y các b ng tra c u thì ch c n làm l i các b ng tra c u, và rõ ràng các chi phí ph thêm c ng nh h n nhi u
tránh tr ng h p ph i làm l i hoàn toàn các b ng tra c u t m th i trong quá trình t ch c tri n khai hashing ng i ta th ng ng d ng k thu t B-tree cùng c i vi c h p
nh t và phân tách các trang Hàm b m trong tr ng h p này th ng thay đ i m t cách linh
đ ng tu thu c vào chi u sâu c a cây
II.1.4.3 Thông tin nh t ký
C u trúc c a nh t ký th ng là khác bi t ph thu c vào t ng tr ng h p tri n khai c th Chúng ta ch xem qua nh ng tính ch t c b n chung nh t
Nh t ký th ng là nh ng t p ghi chu i các b n ghi v i kích th c thay đ i khác nhau, và th ng có th xem t trên xu ng d i ho c ng c l i Trao đ i d li u đ c di n
ra theo t ng ph n thông th ng ho c theo trang cùng v i s s d ng b đ m RAM Trong các h th ng đ c t ch c t t ch các b ph n c a HQT CSDL đ c bi t c u trúc và n i dung nh t ký đ ph c v cho vi c ghi nh t ký và khôi ph c d li u B i vì n i dung nh t ký
có tính ch t quy t đ nh trong quá trình khôi ph c DB sau khi x y ra s c nên quá trình t n
t i và thao tác v i các t p nh t ký đòi h i s tin c y đ c bi t Th ng ng i ta c g ng l u
tr cùng lúc hai phiên b n gi ng nhau c a nh t ký trên các ph ng ti n l u tr bên ngoài khác nhau
II.1.4.4 Thông tin ph c v
phân h (h th ng con) đi u khi n d li u ho t đ ng đúng đ n trong b nh ngoài c n ph i h tr nh ng thông tin đ c dùng ch m i phân h đó, và b khu t đ i v i phân h c p đ ngôn ng T p h p c u trúc c a thông tin ph thu c vào t ch c chung c a
h th ng, nh ng th ng có các thông tin sau:
− Các danh m c bên trong miêu t các tính ch t thu c tính v t lý c a các đ i
t ng CSDL, ví d các thông tin đ nh ngh a quan h nh s thu c tính c a quan h , kích
th c c a chúng, và có th type d li u, mô t ch m c…
Trang 37H QU N TR C S D LI U – B n Nháp 30-08-08
− Các nhãn miêu t (descriptor), kích th c ph n b nh còn tr ng và đã b n c a các trang d li u c a quan h Nh ng thông tin này c n thi t đ xác đ nh ch tr ng khi c n thêm m t b n ghi m i vào quan h Trong các tr ng h p quan h không liên cung và liên cung (không nhóm và nhóm) công vi c tìm ki m ch tr ng đ c gi i quy t khác nhau Trong tr ng h p liên cung c n ph i s d ng thông tin b tr là ch m c liên cung Nh đã nói trên, v n đ gi i phóng m t trang trong đi u ki n đa truy c p là không đ n gi n (netivialna!)
− Liên k t các trang c a m t quan h N u trong m t t p trong b nh ngoài có
th l u gi các trang c a vài quan h (th ng là c g ng h ng t i nh v y) thì c n ph i
b ng cách nào đó liên k t các trang c a m t quan h v i nhau Bi n pháp thông th ng là s
d ng các đ ng d n (links) tr c ti p gi a các trang r t hay d n đ n khó kh n trong quá tr ình
đ ng b hoá các giao tác Ví d r t khó kh n đ gi i phóng trang và t o l p các trang m i
Vì v y c n ph i c g ng s d ng s liên k t gián ti p cùng v i vi c s d ng các ch m c
ph c v b tr Ch ng h n nh k thu t chung đ miêu t ph n b nh còn tr ng và liên k t các trang trong B-tree
Trang 38
H QU N TR C S D LI U – B n Nháp 30-08-08
Qu n lý và tu n t hoá các giao tác
Ch ng II.2 Giao tác và tính toàn v n CSDL
Trong ph n này chúng ta s xem xét các khái ni m n n t ng c a giao tác Khái ni m này không thu c v mô hình d li u quan h , b i vì giao tác có m t không ch trong các HQT CSDL quan h , mà còn trong các HQT CSDL khác, c ng nh trong các d ng h th ng thông tin khác
Trên quan đi m tác đ ng đ n HQT CSDL, giao tác là m t chu i các phép thao tác (thêm, xoá, s a đ i) v i d li u i v i ng i dùng, giao tác đ c th c hi n theo nguyên
t c “T T C HO C KHÔNG CÓ GÌ”, ngh a là ho c giao tác đ c th c hi n hoàn toàn và
đ a CSDL t m t “tr ng thái toàn v n” này sang m t “tr ng thái toàn v n” khác, ho c là
n u vì m t lý do nào đó m t trong các thao tác không đ c th c hi n hay là x y ra m t s phá hu công vi c bình th ng c a h th ng, thì CSDL s đ c cho quay v tr ng thái ban
đ u nh tr c khi b t đ u th c hi n giao tác (rollback giao tác) Trên quan đi m đó giao tác quan tr ng trong c các h th ng nhi u ng i dùng và c h th ng m t ng i dùng Trong các h th ng m t ng i dùng, giao tác là nh ng đ n v logic c a công vi c, mà sau khi th c
hi n xong CSDL v n trong tr ng thái toàn v n Giao tác c ng là nh ng đ n v ph c h i d
li u sau s c Khi ph c h i d li u, h th ng s thanh toán (th tiêu) nh ng d u tích giao tác không k p hoàn thành vì lý do s c ch ng trình hay là ph n c ng Hai tính ch t đó xác
đ nh tính nguyên t (atomicity) c a giao tác Ngoài ra, trong các h th ng nhi u ng i dùng
giao tác đ c dùng đ đ m b o cô l p công vi c c a t ng ng i dùng Nhi u ng i làm vi c trong dùng h th ng cùng m t lúc nh ng h v n c m th y nh là m t mình h làm vi c trong h th ng đó và không nh h ng đ n nhau
II.2.1 Ví d s phá hu tính toàn v n CSDL
minh ho kh n ng phá hu tính toàn v n CSDL chúng ta s xem xét các ví d sau
Ví d 1 Có m t h th ng l u tr thông tin v các b ph n và nh ng ng i làm vi c
trong đó Danh sách các b ph n đ c l u tr trong b ng CACBOPHAN(bp_id, bp_ten,
Trang 39Tính đ n ràng bu c đó có th k t lu n r ng thêm m t nhân viên vào b ng không th
có chuy n ch th c hi n m t thao tác Khi thêm m t nhân viên m i c n ph i đ ng th i t ng giá tr c a tr ng bp_soluong
− B c 1 Thêm nhân viên vào b ng NHANVIEN: insert into nhanvien values(6,
‘Nguyen Van A’, 1)
− B c 2 T ng giá tr tr ng bp_soluong: update BOPHAN set bp_soluong = bp_soluong + 1 where bp_id = 1
N u sau khi hoàn thành hành đ ng đ u tiên và tr c khi hoàn thành hành đ ng th hai xay ra s c trong h th ng, thì th c t ch hoàn thành hành đ ng th nh t và CSDL s
có tr ng thái không toàn v n
II.2.2 Khái ni m giao tác
nh ngh a 1 Giao tác là m t chu i các toán t thao tác v i d li u th c hi n nh là
m t th th ng nh t (t t c ho c không có gì) và đ a CSDL t m t tr ng thái toàn v n này vào tr ng thái toàn v n khác
Giao tác có 4 tính ch t quan tr ng: (ACID)
Trang 40− Tính cô l p (Isolation) Giao tác c a nh ng ng i dùng khác nhau không nh
h ng đ n nhau, ví d gi ng nh chúng đ c th c hi n theo m t th t nghiêm ng t
− Tính lâu b n (Durability) N u giao tác đ c hoàn thành thì k t qu th c hi n công
vi c c a nó ph i đ c l u tr trong CSDL, th m chí ngay sau đó x y ra s c h th ng
Thông th ng Giao tác t đ ng đ c b t đ u t th i đi m ng i dùng k t n i đ n HQT CSDL và ti p t c cho đ n khi x y ra m t trong các s ki n sau:
− ng i dùng g i đ n l nh COMMIT WORK (c đ nh giao tác);
− ng i dùng g i đ n l nh ROLLBACK WORK (rollback giao tác);
− ng i dùng ng t k t n i v i HQT CSDL;
− x y ra s c h th ng
Th ng thì l nh COMMIT WORK k t thúc giao tác hi n th i và t đ ng b t đ u
m t giao tác m i Trong khi đó đ m b o r ng k t qu th c hi n giao tác v a đ c k t thúc
đ c c đ nh, ngh a là đ c l u tr trong CSDL Trong m t s h th ng, ví d Visual FoxPro, đòi h i ph i g i l nh BEGIN TRANSACTION đ b t đ u m t giao tác m i Và
th ng trong các HQT CSDL, ch đ này có th đ c thi t đ t theo ý mu n c a ng i dùng
L nh ROLLBACK WORK d n đ n vi c toàn b nh ng thay đ i b i nh ng l nh trong giao tác hi n t i b t ch i, gi ng nh là ch a có l nh nào đ c th c hi n và ch a bao
gi có thay đ i nào x y ra Sau l nh ROLLBACK WORK m t giao tác s t đ ng đ c b t
đ u
Khi ng i dùng ng t k t n i v i HQT CSDL s t đ ng c đ nh (nh ng thay đ i
b i) giao tác hi n th i
Khi x y ra s c h th ng, nh ng quá trình ph c t p h n s di n ra Nói m t cách
ng n g n, khi h th ng đ c kh i đ ng l i thì s di n ra quá trình phân tích t t c các giao
COMMIT WORK nh ng k t qu th c hi n ch a đ c gi l i trong CSDL thì s đ c th c