Giáo trình Hệ quản trị cơ sở dữ liệu - Chương III: Lưu trữ và cấu trúc tập tin

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
CHƯƠNG III  
LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
(Storage and File Structure)  
MỤC ĐÍCH  
Chương này 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,  
chủ yếu trên đĩa cứng). Việc lưu trữ dữ liệu phải được tổ chức sao cho có thể cất giữ một lượng  
lớn, có thể rất lớn dữ liệu nhưng quan trọng hơn cả là sự lưu trữ phải cho phép lấy lại 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 ra 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.  
Hiểu rõ nguyên lý và kỹ thuật của tổ chức hệ thống đĩa RAID  
Hiểu rõ các kỹ thuật tổ chức các mẩu tin trong file  
Hiểu rõ các kỹ thuật tổ chức file  
Hiểu và vận dụng các kỹ thuật hỗ trợ tìm lại nhanh thông tin: chỉ mục (được sắp, B+-cây,  
băm)  
34  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
KHÁI QUÁT VỀ PHƯƠNG TIỆN LƯU TRỮ VẬT LÝ  
Có một số kiểu lưu trữ dữ liệu trong các hệ thống máy tính. Các phương tiện lưu trữ được  
phân lớp theo tốc độ truy xuất, theo giá cả và theo độ tin cậy của phương tiện. Các phương tiện  
hiện có là:  
• Cache: là dạng lưu trữ nhanh nhất và cũng đắt nhất trong các phương tiện lưu trữ. Bộ  
nhớ cache nhỏ; sự sử dụng nó được quản trị bởi hệ điều hành  
• Bộ nhớ chính (main memory): Phương tiện lưu trữ dùng để lưu trữ dữ liệu sẵn sàng  
được thực hiện. Các chỉ thị máy mục đích chung (general-purpose) hoạt động trên bộ nhớ  
chính. Mặc dầu bộ nhớ chính có thể chứa nhiều megabytes dữ liệu, nó vẫn là quá nhỏ (và  
quá đắt giá) để lưu trữ toàn bộ một cơ sở dữ liệu. Nội dung trong bộ nhớ chính thường bị  
mất khi mất cấp nguồn  
• Bộ nhớ Flash: Được biết như bộ nhớ chỉ đọc có thể lập trình, có thể xoá (EEPROM:  
Electrically Erasable Programmable Read-Only Memory), Bộ nhớ Flash khác bộ nhớ  
chính ở chỗ dữ liệu còn tồn tại trong bộ nhớ flash khi mất cấp nguồn. Đọc dữ liệu từ bộ  
nhớ flash mất ít hơn 100 ns , nhanh như đọc dữ liệu từ bộ nhớ chính. Tuy nhiên, viết dữ  
liệu vào bộ nhớ flash phức tạp hơn nhiều. Dữ liệu được viết (một lần mất khoảng 4 đến  
10 μs) nhưng không thể viết đè trực tiếp. Để viết đè bộ nhớ đã được viết, ta phải xoá  
trắng toàn bộ bộ nhớ sau đó mới có thể viết lên nó.  
• Lưu trữ đĩa từ (magnetic-disk): (ở đây, được hiểu là đĩa cứng) Phương tiện căn bản để  
lưu trữ dữ liệu trực tuyến, lâu dài. Thường toàn bộ cơ sở dữ liệu được lưu trữ trên đĩa từ.  
Dữ liệu phải được chuyển từ đĩa vào bộ nhớ chính trước khi được truy nhập. Khi dữ liệu  
trong bộ nhớ chính này bị sửa đổi, nó phải được viết lên đĩa. Lưu trữ đĩa được xem là  
truy xuất trực tiềp vì có thể đọc dữ liệu trên đĩa theo một thứ tự bất kỳ. Lưu trữ đĩa vẫn  
tồn tại khi mất cấp nguồn. Lưu trữ đĩa có thể bị hỏng hóc, tuy không thường xuyên.  
• Lưu trữ quang (Optical storage): Dạng quen thuộc nhất của đĩa quang học là loại đĩa  
CD-ROM : Compact-Disk Read-Only Memory. Dữ liệu được lưu trữ trên các đĩa quang  
học được đọc bởi laser. Các đĩa quang học CD-ROM chỉ có thể dọc. Các phiên bản khác  
của chúng là loại đĩa quang học: viết một lần, đọc nhiều lần (write-once, read-many:  
WORM) cho phép viết dữ liệu lên đĩa một lần, không cho phép xoá và viết lại, và các  
đĩa có thể viết lại (rewritable) v..v  
• Lưu trữ băng từ (tape storage): Lưu trữ băng từ thường dùng để backup dữ liệu. Băng  
từ rẻ hơn đĩa, truy xuất dữ liệu chậm hơn (vì phải truy xuất tuần tự). Băng từ thường có  
dung lượng rất lớn.  
Các phương tiện lưu trữ có thể được tổ chức phân cấp theo tốc độ truy xuất và giá cả.  
Mức cao nhất là nhanh nhất nhưng cũng là đắt nhất, giảm dần xuống các mức thấp hơn.  
Các phương tiện lưu trữ nhanh (cache, bộ nhớ chính) được xem như là lưu trữ  
sơ cấp (primary storage), các thiết bị lưu trữ ở mức thấp hơn như đĩa từ được xem như lưu trữ thứ  
cấp hay lưu trữ trực tuyến (on-line storage), còn các thiết bị lưu trữ ở mức thấp nhất và gần thấp  
nhất như đĩa quang học, băng từ kể cả các đĩa mềm được xếp vào lưu trữ tam cấp hay lưu trữ  
không trực tuyến (off-line).  
Bên cạnh vấn đề tốc độ và giá cả, ta còn phải xét đến tính lâu bền của các phương tiện lưu  
trữ.  
35  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
C h  
M i
 
M  
Fl h
 
M  
M
i di
 
k  
O i l
 
di k  
M
i
Phân cấp thiết bị lưu trữ  
ĐĨA TỪ  
ĐẶC TRƯNG VẬT LÝ CỦA ĐĨA  
Mỗi tấm đĩa có dạng hình tròn, hai mặt của nó được phủ bởi vật liệu từ tính, thông tin  
được ghi trên bề mặt đĩa. Đĩa gồm nhiều tấm đĩa. Ta sẽ sử dụng thuật ngữ đĩa để chỉ các đĩa cứng.  
Khi đĩa được sử dụng, một động cơ ổ đĩa làm quay nó ở một tốc độ không đổi. Một đầu  
đọc-viết được định vị trên bề mặt của tấm đĩa. Bề mặt tấm đĩa được chia logic thành các rãnh, mỗi  
rãnh lại được chia thành các sector, một sector là một đơn vị thông tin nhỏ có thể được đọc, viết  
lên đĩa. Tuỳ thuộc vào kiểu đĩa, sector thay đổi từ 32 bytes đến 4095 bytes, thông thường là 512  
bytes. Có từ 4 đến 32 sectors trên một rãnh, từ 20 đén 1500 rãnh trên một bề mặt. Mỗi bề mặt của  
một tấm đĩa có một đầu đọc viết, nó có thể chạy dọc theo bán kính đĩa để truy cập đến các rãnh  
khác nhau. Một đĩa gồm nhiều tấm đĩa, các đầu đọc-viết của tất cả các rãnh được gắn vào một bộ  
được gọi là cánh tay đĩa, di chuyển cùng nhau. Các tấm đĩa được gắn vào một trục quay. Vì các  
đầu đọc-viết trên các tấm đĩa di chuyển cùng nhau, nên khi đầu đọc-viết trên một tấm đĩa đang ở  
rãnh thứ i thì các đầu đọc-viết của các tấm đĩa khác cũng ở rãnh thứ i , do vậy các rãnh thứ i của  
tất cả các tấm đĩa được gọi là trụ (cylinder) thứ i . Một bộ điều khiển đĩa -- giao diện giữa hệ  
thống máy tính và phần cứng hiện thời của ổ đĩa. Nó chấp nhận các lệnh mức cao để đọc và viết  
một sector, và khởi động các hành động như di chuyển cánh tay đĩa đến các rãnh đúng và đọc viết  
dữ liệu. bộ điều khiển đĩa cũng tham gia vào checksum mỗi sector được viết. Checksum được  
tính từ dữ liệu được viết lên sector. Khi sector được đọc lại, checksum được tính lại từ dữ liệu  
được lấy ra và so sánh với checksum đã lưu trữ. Nếu dữ liệu bị sai lạc, checksum được tính sẽ  
không khớp với checksum đã lưu trữ. Nếu lỗi như vậy xảy ra, bộ điều khiển sẽ lặp lại việc đọc vài  
lần, nếu lỗi vẫn xảy ra, bộ điều khiển sẽ thông báo việc đọc thất bại. Bộ điều khiển đĩa còn có  
36  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
chức năng tái ánh xạ các sector xấu: ánh xạ các sector xấu đến một vị trí vật lý khác. Hình dưới  
bày tỏ các đĩa được nối với một hệ thống máy tính:  
System bus  
Disk  
controller  
Disks  
Các đĩa được nối với một hệ thống máy tính hoặc một bộ điều khiển đĩa qua một sự hợp  
nhất tốc độ cao. Hợp nhất hệ thống máy tính nhỏ (Small Computer-System Interconnect: SCSI)  
thường được sử dụng để nối kết các đĩa với các máy tính cá nhân và workstation. Mainframe và  
các hệ thống server thường có các bus nhanh hơn và đắt hơn để nối với các đĩa.  
Các đầu đọc-viết được giữ sát với bề mặt đĩa như có thể để tăng độ dày đặc (density).  
Đĩa đầu cố định (Fixed-head) có 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. Tuy  
nhiên, cần một số rất lớn đầu đọc-viết, điều này làm nâng giá của thiết bị.  
ĐO LƯỜNG HIỆU NĂNG CỦA ĐĨA  
Các tiêu chuẩn đo lường chất luợng chính của đĩa là dung lượng, thời gian truy xuất, tốc  
độ truyền dữ liệu và độ tin cậy.  
-
Thời gian truy xuất (access time): là khoảng thời gian từ khi yêu cầu đọc/viết được  
phát đi đến khi bắt đầu truyền dữ liệu. Để truy xuất dữ liệu trên một sector đã cho của  
một đĩa, đầu tiên cánh tay đĩa phải di chuyển đến rãnh đúng, sau đó phải chờ sector  
xuất hiện dưới nó, thời gian để định vị cánh tay được gọi là thời gian tìm kiếm (seek  
time), nó tỷ lệ với khoảng cách mà cánh tay phải di chuyển, thời gian tìm kiếm nằm  
trong khoảng 2..30 ms tuỳ thuộc vào rãnh xa hay gần vị trí cánh tay hiện tại.  
-
-
Thời gian tìm kiếm trung bình (average seek time): Thời gian tìm kiếm trung bình  
là trung bình của thời gian tìm kiếm, được đo luờng trên một dãy các yêu cầu ngẫu  
nhiên (phân phối đều), và bằng khoảng 1/3 thời gian tìm kiếm trong trường hợp xấu  
nhất.  
Thời gian tiềm ẩn luân chuyển (rotational latency time): Thời gian chờ sector được  
truy xuất xuất hiện dưới đầu đọc/viết. Tốc độ quay của đĩa nằm trong khoảng 60..120  
vòng quay trên giây, trung bình cần nửa vòng quay để sector cần thiết nằm dưới đầu  
đọc/viết. Như vậy, thời gian tiềm ẩn trung bình (average latency time) bằng nửa thời  
gian quay một vòng đĩa.  
Thời gian truy xuất bằng tổng của thời gian tìm kiếm và thời gian tiềm ẩn và nằm trong  
khoảng 10..40 ms.  
-
Tốc độ truyền dữ liệu: là tốc độ dữ liệu có thể được lấy ra từ đĩa hoặc được lưu trữ  
vào đĩa. Hiện nay tốc này vào khoảng1..5 Mbps  
37  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
-
Thời gian trung bình không sự cố (mean time to failure): lượng thời gian trung bình  
hệ thống chạy liên tục không có bất kỳ sự cố nào. Các đĩa hiện nay có thời gian không  
sự cố trung bình khoảng 30000 .. 800000 giờ nghĩa là khoảng từ 3,4 đến 91 năm.  
TỐI ƯU HÓA TRUY XUẤT KHỐI ĐĨA (disk-block)  
Yêu cầu I/O đĩa được sinh ra cả bởi hệ thống file lẫn bộ quản trị bộ nhớ ảo trong hầu hết  
các hệ điều hành. Mỗi yêu cầu xác định địa chỉ trên đĩa được tham khảo, địa chỉ này ở dạng số  
khối. Một khối là một dãy các sector kề nhau trên một rãnh. Kích cỡ khối trong khoảng 512 bytes  
đến một vài Kbytes. Dữ liệu được truyền giữa đĩa và bộ nhớ chính theo đơn vị khối. Mức thấp  
hơn của bộ quản trị hệ thống file sẽ chuyển đổi địa chỉ khối sang số của trụ, của mặt và của sector  
ở mức phần cứng.  
Truy xuất dữ liệu trên đĩa chậm hơn nhiều so với truy xuất dữ liệu trong bộ nhớ chính, do  
vậy cần thiết một chiến lược nhằm nâng cao tốc độ truy xuất khối đĩa. Dưới đây ta sẽ thảo luận  
một vài kỹ thuật nhằm vào mục đích đó.  
-
Scheduling: Nếu một vài khối của một trụ cần được truyền từ đĩa vào bộ nhớ chính, ta  
có thể tiết kiệm thời gian truy xuất bởi yêu cầu các khối theo thứ tự mà nó chạy qua  
dưới đầu đọc/viết. Nếu các khối mong muốn ở trên các trụ khác nhau, ta yêu cầu các  
khối theo thứ tự sao cho làm tối thiểu sự di chuyển cánh tay đĩa. Các thuật toán  
scheduling cánh tay đĩa (Disk-arm-scheduling) nhằm lập thứ tự truy xuất các rãnh theo  
cách làm tăng số truy xuất có thể được xử lý. Một thuật toán thường dùng là thuật toán  
thang máy (elevator algorithm): Giả sử ban đầu cánh tay di chuyển từ rãnh trong nhất  
hướng ra phía ngoài đĩa, đối với mỗi rãnh có yêu cầu truy xuất, nó dừng lại, phục vụ  
yêu cầu đối với rãnh này, sau đó tiếp tục di chuyển ra phía ngoài đến tận khi không có  
yêu cầu nào chờ các rãnh xa hơn phía ngoài. Tại điểm này, cánh tay đổi hướng, di  
chuyển vào phía trong, lại dừng lại trên các rãnh được yêu cầu, và cứ như vậy đến tận  
khi không còn rãnh nào ở trong hơn được yêu cầu, rồi lại đổi hướng .. v .. v .. Bộ điều  
khiển đĩa thường làm nhiệm vụ sắp xếp lại các yêu cầu đọc để cải tiến hiệu năng.  
-
-
Tổ chức file: Để suy giảm thời gian truy xuất khối, ta có thể tổ chức các khối trên đĩa  
theo cách tương ứng gần nhất với cách mà dữ liệu được truy xuất. Ví dụ, Nếu ta muốn  
một file được truy xuất tuần tự, khi đó ta bố trí các khối của file một cách tuần tự trên  
các trụ kề nhau. Tuy nhiên việc phân bố các khối lưu trữ kề nhau này sẽ bị phá vỡ  
trong quá trình phát triển của file ⇒ file không thể được phân bố trên các khối kề nhau  
được nữa, hiện tượng này dược gọi là sự phân mảnh (fragmentation). Nhiều hệ điều  
hành cung cấp tiện ích giúp suy giảm sự phân mảnh này (Defragmentation) nhằm làm  
tăng hiệu năng truy xuất file.  
Các buffers viết không hay thay đổi: Vì nội dung của bộ nhớ chính bị mất khi mất  
nguồn, các thông tin về cơ sở dữ liệu cập nhật phải được ghi lên đĩa nhằm đề  
phòng sự cố. Hiệu năng của các ứng dụng cập nhật cường độ cao phụ thuộc mạnh  
vào tốc độ viết đĩa. Ta có thể sử dụng bộ nhớ truy xuất ngẫu nhiên không hay thay  
đổi (nonvolatile RAM) để nâng tốc độ viết đĩa. Nội dung của nonvolatile RAM không  
bị mất khi mất nguồn. Một phương pháp chung để thực hiện nonvolatile RAM là sử  
dụng RAM pin dự phòng (battery-back-up RAM). Khi cơ sở dữ liệu yêu cầu viết một  
khối lên đĩa, bộ điều khiển dĩa viết khối này lên buffer nonvolatile RAM, và thông báo  
ngay cho hệ điều hành là việc viết đã thành công. Bộ điều khiển sẽ viết dữ liệu đến  
đích của nó trên đĩa, mỗi khi đĩa rảnh hoặc buffer nonvolatile RAM đầy. Khi hệ cơ sở  
dữ liệu yêu cầu một viết khối, nó chỉ chịu một khoảng lặng chờ đợi khi buffer  
nonvolatile RAM đầy.  
38  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
-
Đĩa log (log disk): Một cách tiếp cận khác để làm suy giảm tiềm năng viết là sử dụng  
log-disk: Một đĩa được tận hiến cho việc viết một log tuần tự. Tất cả các truy xuất đến  
log-disk là tuần tự, nhằm loại bỏ thời gian tìm kiếm, và một vài khối kề có thể được  
viết một lần, tạo cho viết vào log-disk nhanh hơn viết ngẫu nhiên vài lần. Cũng như  
trong trường hợp sử dụng nonvolatile RAM, dữ liệu phải được viết vào vị trí hiện thời  
của chúng trên đĩa, nhưng việc viết này có thể được tiến hành mà hệ cơ sở dữ liệu  
không cần thiết phải chờ nó hoàn tất. Log-disk có thể được sử dụng để khôi phục dữ  
liệu. Hệ thống file dựa trên log là một phiên bản của cách tiếp cận log-disk: Dữ liệu  
không được viết lại lên đích gốc của nó trên đĩa; thay vào đó, hệ thống file lưu vết nơi  
các khối được viết mới đây nhất trên log-disk, và hoàn lại chúng từ vị trí này. Log-disk  
được "cô đặc" lại (compacting) theo một định kỳ. Cách tiếp cận này cải tiến hiệu năng  
viết, song sinh ra sự phân mảnh đối với các file được cập nhật thường xuyên.  
RAID  
Trong một hệ thống có nhiều đĩa, ta có thể cải tiến tốc độ đọc viết dữ liệu nếu cho chúng  
hoạt động song song. Mặt khác, hệ thống nhiều đĩa còn giúp tăng độ tin cậy lưu trữ bằng cách lưu  
trữ dư thừa thông tin trên các đĩa khác nhau, nếu một đĩa có sự cố dữ liệu cũng không bị mất. Một  
sự đa dạng các kỹ thuật tổ chức đĩa, được gọi là RAID (Redundant Arrays of Inexpensive  
Disks), được đề nghị nhằm vào vấn đề tăng cường hiệu năng và độ tin cậy.  
CẢI TIẾN ĐỘ TIN CẬY THÔNG QUA SỰ DƯ THỪA  
Giải pháp cho vấn đề độ tin cậy là đưa vào sự dư thừa: lưu trữ thông tin phụ, bình thường  
không cần thiết, nhưng nó có thể được sử dụng để tái tạo thông tin bị mất khi gặp sự cố hỏng hóc  
đĩa, như vậy thời gian trung bình không sự cố tăng lên (xét tổng thể trên hệ thống đĩa).  
Đơn giản nhất, là làm bản sao cho mỗi đĩa. Kỹ thuật này được gọi là mirroring hay  
shadowing. Một đĩa logic khi đó bao gồm hai đĩa vật lý, và mỗi việc viết được thực hiện trên cả  
hai đĩa. Nếu một đĩa bị hư, dữ liệu có thể được đọc từ đĩa kia. Thời gian trung bình không sự cố  
của đĩa mirror phụ thuộc vào thời gian trung bình không sự cố của mỗi đĩa và phụ thuộc vào thời  
gian trung bình được sửa chữa (mean time to repair): thời gian trung bình để một đĩa bị hư được  
thay thế và phục hồi dữ liệu trên nó.  
CẢI TIẾN HIỆU NĂNG THÔNG QUA SONG SONG  
Với đĩa mirror, tốc độ đọc có thể tăng lên gấp đôi vì yêu cầu đọc có thể được gửi đến cả  
hai đĩa. Với nhiều đĩa, ta có thể cải tiến tốc độ truyền bởi phân nhỏ (striping data) dữ liệu qua  
nhiều đĩa. Dạng đơn giản nhất là tách các bít của một byte qua nhiều đĩa, sự phân nhỏ này được  
gọi là sự phân nhỏ mức bit (bit-level striping). Ví dụ, ta có một dàn 8 đĩa, ta viết bít thứ i của một  
byte lên đĩa thứ i . dàn 8 đĩa này có thể được xử lý như một đĩa với các sector 8 lần lớn hơn kích  
cỡ thông thường, quan trọng hơn là tốc dộ truy xuất tăng lên tám lần. Trong một tổ chức như vậy,  
mỗi đĩa tham gia vào mỗi truy xuất (đọc/viết), như vậy, số các truy xuất có thể được xử lý trong  
một giây là tương tự như trên một đĩa, nhưng mỗi truy xuất có thể đọc/viết nhiều dữ liệu hơn tám  
lần.  
Phân nhỏ mức bit có thể được tổng quát cho số đĩa là bội hoặc ước của 8, Ví dụ, ta có một  
dàn 4 đĩa, ta sẽ phân phối bít thứ i và bít thứ 4+i vào đĩa thứ i. Hơn nữa, sự phân nhỏ không nhất  
thiết phải ở mức bit của một byte. Ví dụ, trong sự phân nhỏ mức khối, các khối của một file được  
phân nhỏ qua nhiều đĩa, với n đĩa, khối thứ i có thể được phân phối qua đĩa (i mod n) + 1. Ta cũng  
39  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
có thể phân nhỏ ở mức byte, sector hoặc các sector của một khối. Hai đích song song trong một hệ  
thống đĩa là:  
1. Nạp nhiều truy xuất nhỏ cân bằng (truy xuất trang) sao cho lượng dữ liệu được nạp  
trong một đơn vị thời gian của truy xuất như vậy tăng lên.  
2. Song song hoá các truy xuất lớn sao cho thời gian trả lời các truy xuất lớn giảm.  
CÁC MỨC RAID  
Mirroring cung cấp độ tin cậy cao, nhưng đắt giá. Phân nhỏ cung cấp tốc độ truyền dữ  
liệu cao, nhưng không cải tiến được độ tin cậy. Nhiều sơ đồ cung cấp sự dư thừa với giá thấp  
bằng cách phối hợp ý tưởng của phân nhỏ với "parity" bit. Các sơ đồ này có sự thoả hiệp giá-hiệu  
năng khác nhau và được phân lớp thành các mức được gọi là các mức RAID.  
• Mức RAID 0 : Liên quan đến các dàn đĩa với sự phân nhỏ mức khối, nhưng không có  
một sự dư thừa nào.  
• Mức RAID 1 : Liên quan đến mirror đĩa  
• Mức RAID 2 : Cũng được biết dưới cái tên mã sửa lỗi kiểu bộ nhớ (memory-style  
error-correcting-code : ECC). Hệ thống bộ nhớ thực hiện phát hiện lỗi bằng bit parity. Mỗi byte  
trong hệ thống bộ nhớ có thể có một bit parity kết hợp với nó. Sơ đồ sửa lỗi lưu hai hoặc nhiều  
hơn các bit phụ, và có thể dựng lại dữ liệu nếu một bit bị lỗi. ý tưởng của mã sửa lỗi có thể được  
sử dụng trực tiếp trong dàn đĩa thông qua phân nhỏ byte qua các đĩa. Ví dụ, bít đầu tiên của mỗi  
byte có thể được lưu trên đĩa 1, bit thứ hai trên đĩa 2, và cứ như vậy, bit thứ 8 trên đĩa 8, các bit  
sửa lỗi được lưu trên các đĩa thêm vào. Nếu một trong các đĩa bị hư, các bít còn lại của byte và  
các bit sửa lỗi kết hợp được đọc từ các đĩa khác có thể giúp tái tạo bít bị mất trên đĩa hư, như vậy  
ta có thể dựng lại dữ liệu. Với một dàn 4 đĩa dữ liệu, RAID mức 2 chỉ cần thêm 3 đĩa để lưu các  
bit sửa lỗi (các đĩa thêm vào này được gọi là các đĩa overhead), so sánh với RAID mức 1, cần 4  
đĩa overhead.  
• Mức RAID 3 : Còn được gọi là tổ chức parity chen bit (bit-interleaved parity). Bộ điều  
khiển đĩa có thể phát hiện một sector được đọc đúng hay sai, như vậy có thể sử dụng chỉ một bit  
parity để sửa lỗi: Nếu một trong các sector bị hư, ta biết chính xác đó là sector nào, Với mỗi bit  
trong sector này ta có thể hình dung nó là bít 1 hay bit 0 bằng cách tính parity của các bit tương  
ứng từ các sector trên các đĩa khác. Nếu parity của các bit còn lại bằng với parity được lưu, bit  
mất sẽ là 0, ngoài ra bit mất là 1. RAID mức 3 tốt như mức 2 nhưng it tốn kém hơn (chỉ cần một  
đĩa overhead).  
• Mức RAID 4 : Còn được gọi là tổ chức parity chen khối (Block-interleaved parity), lưu  
trữ các khối đúng như trong các đĩa chính quy, không phân nhỏ chúng qua các đĩa nhưng lấy một  
khối parity trên một đĩa riêng biệt đối với các khối tương ứng từ N đĩa khác. Nếu một trong các  
đĩa bị hư, khối parity có thể được dùng với các khối tương ứng từ các đĩa khác để khôi phục khối  
của đĩa bị hư.  
Một đọc khối chỉ truy xuất một đĩa, cho phép các yêu cầu khác được xử lý bởi các đĩa  
khác. Như vậy, tốc độ truyền dữ liệu đối với mỗi truy xuất chậm, nhưng nhiều truy xuất đọc có  
thể được xử lý song song, dẫn đến một tốc độ I/O tổng thể cao hơn. Tốc độ truyền đối vớí các đọc  
dữ liệu lớn (nhiều khối) cao do tất cả các đĩa có thể được đọc song song; các viết dữ liệu lớn  
(nhiều khối) cũng có tốc độ truyền cao vì dữ liệu và parity có thể được viết song song. Tuy nhiên,  
viết một khối đơn phải truy xuất đĩa trên đó khối được lưu trữ, và đĩa parity (do khối parity cũng  
phải được cập nhật). Như vậy, viết một khối đơn yêu cầu 4 truy xuất: hai để đọc hai khối cũ, và  
hai để viết lại hai khối.  
40  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
• Mức RAID 5 : Còn gọi là parity phân bố chen khối (Block-interleaved Distributed  
Parity), cải tiến của mức 4 bởi phân hoạch dữ liệu và parity giữa toàn bộ N+1 đĩa, thay vì lưu trữ  
dữ liệu trên N đĩa và parity trên một đĩa riêng biệt như trong RAID 4. Trong RAID 5, tất cả các  
đĩa có thể tham gia làm thoả mãn các yêu cầu đọc, như vậy sẽ làm tăng tổng số yêu cầu có thể  
được đặt ra trong một đơn vị thời gian. Đối với mỗi khối, một đĩa lưu trữ parity, các đĩa khác lưu  
trữ dữ liệu. Ví dụ, với một dàn năm đĩa, parity đối với khối thứ n được lưu trên đĩa (n mod 5)+1.  
Các khối thứ n của 4 đĩa khác lưu trữ dữ liệu hiện hành của khối đó.  
• Mức RAID 6 : Còn được gọi là sơ đồ dư thừa P+Q (P+Q redundancy scheme), nó rất  
giống RAID 5 nhưng lưu trữ thông tin dư thừa phụ để canh chừng nhiều đĩa bị hư. Thay vì sử  
dụng parity, người ta sử dụng các mã sửa lỗi.  
CHỌN MỨC RAID ĐÚNG  
Nếu đĩa bị hư, Thời gian tái tạo dữ liệu của nó là đáng kể và thay đổi theo mức RAID  
được dùng. Sự tái tạo dễ dàng nhất đối với mức RAID 1. Đối với các mức khác, ta phải truy xuất  
tất cả các đĩa khác trong dàn đĩa để tái tạo dữ liệu trên đĩa bị hư. Hiệu năng tái tạo của một một hệ  
thống RAID có thể là một nhân tố quan trọng nếu việc cung cấp dữ liệu liên tục được yêu cầu  
(thường xảy ra trong các hệ CSDL hiệu năng cao hoặc trao đổi). Hơn nữa, hiệu năng tái tạo ảnh  
hưởng đến thời gian trung bình không sự cố.  
Vì RAID mức 2 và 4 được gộp lại bởi RAID mức 3 và 5, Việc lựa chọn mức RAID thu  
hẹp lại trên các mức RAID còn lại. Mức RAID 0 được dùng trong các ứng dụng hiệu năng cao ở  
đó việc mất dữ liệu không có gì là trầm trọng cả. RAID mức 1 là thông dụng cho các ứng dụng  
lưu trữ các log-file trong hệ CSDL. Do mức 1 có overhead cao, mức 3 và 5 thường được ưa thích  
hơn đối với việc lưu trữ khối lượng dữ liệu lớn. Sự khác nhau giữa mức 3 và mức 5 là tốc độ  
truyền dữ liệu đối lại với tốc độ I/O tổng thể. Mức 3 được ưa thích hơn nếu truyền dữ liệu cao  
được yêu cầu, mức 5 được ưa thích hơn nếu việc đọc ngẫu nhiên là quan trọng. Mức 6, tuy hiện  
nay ít được áp dụng, nhưng nó có độ tin cậy cao hơn mức 5.  
MỞ RỘNG  
Các quan niệm của RAID được khái quát hoá cho các thiết bị lưu trữ khác, bao hàm các  
dàn băng, thậm chí đối với quảng bá dữ liệu trên các hệ thống không dây. Khi áp dụng RAID cho  
dàn băng, cấu trúc RAID cho khả năng khôi phục dữ liệu cả khi một trong các băng bị hư hại. Khi  
áp dụng đối với quảng bá dữ liệu, một khối dữ liệu được phân thành các đơn vị nhỏ và được  
quảng bá cùng với một đơn vị parity; nếu một trong các đơn vị này không nhận được, nó có thể  
được dựng lại từ các đơn vị còn lại.  
LƯU TRỮ TAM CẤP (tertiary storage)  
ĐĨA QUANG HỌC  
CR-ROM có ưu điểm là có khả năng lưu trữ lớn, dễ di chuyển (có thể đưa vào và lấy ra  
khỏi ổ đĩa như đĩa mềm), hơn nữa giá lại rẻ. Tuy nhiên, so với ổ đĩa cứng, thời gian tìm kiếm của  
ổ CD-ROM chậm hơn nhiều (khoảng 250ms), tốc độ quay chậm hơn (khoảng 400rpm), từ đó dẫn  
đến độ trễ cao hơn; tốc độ truyền dữ liệu cũng chậm hơn (khoảng 150Kbytes/s). Gần đây, một  
định dạng mới của đĩa quang học - Digital video disk (DVD) - được chuẩn hoá, các đĩa này có  
dung lượng trong khoảng 4,7GBytes đến 17 GBytes. Các đĩa WORM, REWRITABLE cũng trở  
thành phổ biến. Các WORM jukeboxes là các thiết bị có thể lưu trữ một số lớn các đĩa WORM và  
có thể nạp tự động các đĩa theo yêu cầu đến một hoặc một vài ổ WORM.  
41  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
BĂNG TỪ  
Băng từ có thể lưu một lượng lớn dữ liệu, tuy nhiên, chậm hơn so với đĩa từ và đĩa quang  
học. Truy xuất băng buộc phải là truy xuất tuần tự, như vậy nó không thích hợp cho hầu hết các  
đòi hỏi của lưu trữ thứ cấp. Băng từ được sử dụng chính cho việc backup, cho lưu trữ các thông  
tin không được sử dụng thường xuyên và như một phương tiện ngoại vi (off-line medium) để  
truyền thông tin từ một hệ thống đến một hệ thống khác. Thời gian để định vị đoạn băng lưu dữ  
liệu cần thiết có thể kéo dài đến hàng phút. Jukeboxes băng chứa một lượng lớn băng, với một  
vài ổ băng và có thể lưu trữ được nhiều TeraBytes (1012 Bytes)  
TRUY XUẤT LƯU TRỮ  
Một cơ sở dữ liệu được ánh xạ vào một số các file khác nhau được duy trì bởi hệ điều  
hành nền. Các file này lưu trú thường trực trên các đĩa với backup trên băng. Mỗi file được phân  
hoạch thành các đơn vị lưu trữ độ dài cố định được gọi là khối - đơn vị cho cả cấp phát lưu trữ và  
truyền dữ liệu.  
Một khối có thể chứa một vài hạng mục dữ liệu (data item). Ta giả thiết không một hạng  
mục dữ liệu nào trải ra trên hai khối. Mục tiêu nổi trội của hệ CSDL là tối thiểu hoá số khối  
truyền giữa đĩa và bộ nhớ. Một cách để giảm số truy xuất đĩa là giữ nhiều khối như có thể trong  
bộ nhớ chính. Mục đích là để khi một khối được truy xuất, nó đã nằm sẵn trong bộ nhớ chính và  
như vậy không cần một truy xuất đĩa nào cả.  
Do không thể lưu tất cả các khối trong bộ nhớ chính, ta cần quản trị cấp phát không gian  
sẵn có trong bộ nhớ chính để lưu trữ các khối. Bộ đệm (Buffer) là một phần của bộ nhớ chính sãn  
có để lưu trữ bản sao khối đĩa. Luôn có một bản sao trên đĩa cho mỗi khối, song các bản sao trên  
đĩa của các khối là các phiên bản cũ hơn so với phiên bản trong buffer. Hệ thống con đảm trách  
cấp phát không gian buffer được gọi là bộ quản trị buffer.  
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ị sửa đổi kể từ lần được viết lên  
đĩa gần nhất. Sau đó bộ quản trị buffer đọc khối từ đĩa vào buffer, và chuyển địa chỉ của khối  
trong bộ nhớ chính cho người yêu cầu. Bộ quản trị buffer không khác gì nhiều so với bộ quản trị  
bộ nhớ ảo, một điểm khác biệt là kích cỡ 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 sử dụng các kỹ thuật tinh vi hơn các sơ đồ quản  
trị bộ nhớ ảo kiểu mẫu.  
• Chiến luợc thay thế. Khi không có chỗ trong buffer, một khối phải được xoá khỏi  
buffer trước khi một khối mới được đọc vào. Thông thường, hệ điều hành sử dụng sơ đồ LRU  
(Least Recently Used) để viết lên đĩa khối ít được dùng gần đây nhất, xoá bỏ nó khỏi buffer. Cách  
tiếp cận này có thể được cải tiến đối với ứng dụng CSDL.  
• 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  
42  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
viết này được gọi là sự xuất ra bắt buộc của một khối. Lý do ngắn gọn 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 bị mất khi có sự cố, ngược lại dữ liệu trên dĩa còn tồn tại  
sau sự cố.  
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 sử dụng chiến lược LRU để thay thế khối. Tuy nhiên, một hệ CSDL có thể  
dự đoán mẫu tham khảo tương lai. Yêu cầu của một người sử dụng đối với hệ CSDL bao gồm một  
số bước. Hệ CSDL có thể xác định trước những khối nào sẽ 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 sử 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ại là MRU  
(Most Recently Used): Khối bị thay thế sẽ là khối mới được dùng gần đây nhất!  
Bộ quản trị buffer có thể sử dụng thông tin thống kê liên quan đến xác suất mà một yêu  
cầu sẽ tham khảo một quan hệ riêng biệt nào đó. Tự điển dữ liệu là một trong những phần được  
truy xuất thường xuyên nhất của CSDL. Như vậy, bộ quản trị buffer sẽ không nên xoá các khối tự  
điển dữ liệu khỏi bộ nhớ chính trừ phi các nhân tố khác bức chế làm điều đó. Một chỉ  
mục (Index) đối với một file được truy xuất thường xuyên hơn chính bản thân file, vậy thì bộ  
quản trị buffer cũng không nên xoá khối chỉ mục khỏi bộ nhớ chính nếu có sự lựa chọn.  
Chiến luợc thay thế khối CSDL lý tưởng cần hiểu biết về các hoạt động CSDL đang được  
thực hiện. Không một chiến lược đơn lẻ nào được biết nắm bắt được toàn bộ các viễn cảnh có thể.  
Tuy vậy, một điều đáng ngạc nhiên là phần lớn các hệ CSDL sử dụng LRU bất chấp các khuyết  
điểm của chiến lược đó.  
Chiến lược được sử dụng bởi bộ quản trị buffer để thay thế khối bị ảnh hưởng bởi các  
nhân tố khác hơn là nhân tố thời gian tại đó khối được tham khảo trở lại. Nếu hệ thống  
đang xử lý các yêu cầu của một vài người sử dụng cạnh tranh, hệ thống (con) điều khiển  
cạnh tranh (concurrency-control subsystem) có thể phải làm trễ một số yêu cầu để đảm bảo tính  
nhất quán của CSDL. Nếu bộ quản trị buffer được cho các thông tin từ hệ thống điều khiển cạnh  
tranh mà nó nêu rõ những yêu cầu nào đang bị làm trễ, nó có thể sử dụng các thông tin này để  
thay đổi chiến lược thay thế khối của nó. Đặc biệt, các khối cần thiết bởi các yêu cầu tích cực  
(active requests) có thể được giữ lại trong buffer, toàn bộ các bất lợi đổ dồn lên các khối cần thiết  
bởi các yêu cầu bị làm trễ.  
Hệ thống (con) khôi phục (crash-recovery subsystem) áp đặt các ràng buộc nghiêm nhặt  
lên việc thay thế khối. Nếu một khối bị sửa đổ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ì điều này phá huỷ phiên bản cũ. Thay vào đó, bộ quản trị  
khối phải tìm kiếm quyền 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 hỏi một số khối nhất định khác là xuất bắt buộc (forced output) trước khi cấp quyền cho bộ  
quản trị buffer để xuất ra khối được yêu cầu.  
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. File được cung cấp như một xây dựng cơ sở trong hệ điều hành, như vậy ta sẽ  
giả thiết sự tồn tại của hệ thống file nền. Ta cần phải xét những phương pháp biểu diễn các mô  
hình dữ liệu logic trong thuật ngữ file.  
43  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
Các khối có kích cỡ cố định được xác định bởi tính chất vật lý của đĩa và bởi hệ điều hành,  
song kích cỡ 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 cỡ khác nhau.  
Một tiếp cận để ánh xạ một CSDL đến các file là sử dụng một số file, và lưu trữ các mẩu  
tin thuộc chỉ một độ dài cố định vào một file đã cho nào đó. Một cách khác là cấu trúc các file sao  
cho ta có thể điều tiết nhiều độ dài cho các mẩu tin. Các file của các mẩu tin độ dài cố định dễ  
dàng thực thi hơn file của các mẩu tin độ dài thay đổi.  
MẨU TIN ĐỘ DÀI CỐ ĐỊNH (Fixed-Length Records)  
Xét một file các mẩu tin account đối với CSDL ngân hàng, mỗi mẩu tin của file này được  
xác định như sau:  
type  
depositor = record  
branch_name: char(20);  
account_number: char(10);  
balance:real;  
end  
Giả sử mỗi một ký tự chiếm 1 byte và mỗi số thực chiếm 8 byte, như vậy mẩu tin account  
có độ dài 40 bytes. Một cách tiếp cận đơn giản là sử dụng 40 byte đầu tiên cho mẩu tin thứ nhất,  
40 byte kế tiếp cho mẩu tin thứ hai, ... Cách tiếp cận đơn giản này nảy sinh những vấn đề sau;  
0
1
2
3
4
5
6
7
8
Perryridge  
Round Hill A-305  
Mianus A-215  
Downtown A-101  
A-102  
400  
350  
700  
500  
700  
900  
750  
600  
700  
0
1
3
4
5
6
7
8
Perryridge  
A-102  
400  
350  
500  
700  
900  
750  
600  
700  
Round Hill A-305  
Downtown A-101  
Redwood  
Perryridge  
Brighton  
A-222  
A-201  
A-217  
Redwood  
Perryridge  
Brighton  
A-222  
A-201  
A-217  
Downtown A-110  
Perryridge A-218  
Downtown A-110  
Perryridge A-218  
2. File F sau khi xóa mẩu tin 2 và di  
chuyển các mảu tin sau nó  
1. File F chứa các mẩu tin account  
header  
0
1
8
3
4
5
Perryridge  
Round Hill A-305  
Perryridge A-218  
Downtown A-101  
A-102  
400  
350  
700  
500  
700  
900  
0
1
2
3
4
5
6
7
8
Perryridge  
A-102  
A-215  
400  
Mianus  
700  
500  
Downtown A-101  
Redwood  
A-222  
A-201  
Perryridge  
Perryridge  
A-201  
900  
44  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
6
Brighton  
A-217  
750  
7
Downtown A-110  
600  
Downtown A-110  
Perryridge A-218  
600  
700  
3. File F sau khi xóa mẩu tin 2 và di  
chuyển mẩu tin cuói vào vị chí của  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
1. Khó khăn khi xoá một mẩu tin từ cấu trúc này. Không gian bị chiếm bởi mẩu tin bị xoá  
phải được lấp đầy với mẩu tin khác của file hoặc ta phải đánh dấu mẩu tin bị xoá.  
2. Trừ khi kích cỡ khối là bội của 40, nếu không một số mẩu tin sẽ bắt chéo qua biên  
khối, có nghĩa 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. như vậy đòi hỏi 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á, rồi 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 hỏi 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á. Song cách tiếp cận này đòi hỏi phải truy xuất khối bổ xung. Vì hoạt động xen xảy ra thường  
xuyên hơn hoạt động xoá, ta có thể chấp nhận việc để "ngỏ" không gian bị chiếm bởi mẩu tin bị  
xoá, và chờ một hoạt động xen đến sau để tái sử dụng không gian đó. Một dấu trên mẩu tin bị xoá  
là không đủ vì sẽ gây khó khăn cho việc tìm kiếm không gian "tự do" đó khi xen. Như vậy ta cần  
đưa vào cấu trúc bổ xung. ở đầu của file, ta cấp phát một số byte nhất định làm header của file.  
Header này sẽ chứa đựng thông tin về file. Header chứa địa chỉ của mẩu tin bị xoá thứ nhất, trong  
nội dung của mẩu tin này có chứa địa chỉ của mẩu tin bị xoá thứ hai và cứ như vậy. Như vậy, các  
mẩu tin bị xoá sẽ 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 xen  
mẩu tin mới, ta sử dụng con trỏ đầu danh sách được chứa trong header để xác định danh sách, nếu  
danh sách không rỗng ta xen mẩu tin mới vào vùng được trỏ bởi con trỏ đầu danh sách nếu không  
ta xen mẩu tin mới vào cuối file.  
Xen và xoá đối với file mẩu tin độ dài cố định 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 để xen 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.  
MẨU TIN ĐỘ DÀI THAY ĐỔI (Variable-Length Records)  
Mẩu tin độ dài thay đổi trong CSDL do bởi:  
o Việc lưu trữ nhiều kiểu mẩu tin trong một file  
o Kiểu mẩu tin cho phép độ dài trường thay đổi  
o Kiểu mẩu tin cho phép lặp lại các trường  
45  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
Có nhiều kỹ thuật để thực hiện mẩu tin độ dài thay đổi. Để minh hoạ ta sẽ xét các biểu  
diễn khác nhau trên các mẩu tin độ dài thay đổi có định dạng sau:  
Type account_list = record  
branch_name: char(20)  
;
account_info: array[ 1.. ∞ ] of record  
account_number: char(10);  
balance: real;  
end;  
end  
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 đặc biệt  
End-of-record (⊥) vào cuối mỗi record. Khi đó, ta có thể lưu mỗi mẩu tin như một chuỗi byte  
liên tiếp. Thay vì sử dụng một ký hiệu đặc biệt ở cuối của mỗi mẩu tin, một phiên bản của biểu  
diễn chuỗi byte lưu trữ độ dài mẩu tin ở bắt đầu của mỗi mẩu tin.  
0
1
2
3
4
5
Perryridge  
Round Hill  
Mianus  
A-102  
A-301  
A-101  
A-211  
A-300  
A-111  
400  
350  
800  
500  
650  
750  
A-201  
900  
A210  
700  
⊥
⊥
⊥
Downtown  
Redwood  
Brighton  
A-222  
600  
⊥
A-200  
1200  
950  
A-255  
⊥
⊥
Biểu diễn chuỗi byte của các mẩu tin độ dài thay đổi  
Biểu diễn chuỗi byte có các bất lợi sau:  
-
Khó sử 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 nhỏ của lưu trữ đĩ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 và sự di chuyển này là đắt giá nếu mẩu tin bị chốt.  
Biểu diễn chuỗi byte không thường được sử dụng để thực hiện mẩu tin độ dài thay đổi,  
song một dạng sửa đổi của nó được gọi là cấu trúc khe-trang (slotted-page structure) thường  
được dùng để tổ chức mẩu tin trong một khối đơn.  
Trong cấu trúc slotted-page, có một header ở bắt đầu của mỗi khối, chứa các thông tin sau:  
-
-
-
Số các đầu vào mẩu tin (record entries) trong header  
Điểm cuối không gian tự do (End of Free Space) trong khối  
Một mảng các đầu vào chứa vị trí và kích cỡ của mỗi mẩu tin  
Các mẩu tin hiện hành được cấp phát kề nhau trong khối, bắt đàu từ cuối khối, Không gian  
tự do trong khối là một vùng kề nhau, nằm giữa đầu vào cuối cùng trong mảng header và mẩu tin  
đàu tiên. Khi một mẩu tin được xen 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.  
Block header  
Size  
#entries  
Free Space  
location  
46  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
End of Free Space  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
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 đặt là bị xoá (kích cỡ của nó được đặt chẳng hạn là -1). Sau đó, các mẩu tin trong khối trước  
mẩu tin bị xoá được di chuyển sao cho không gian tự do của khối lại là phần nằm giữa đầu vào  
cuối cùng của mảng header và mẩu tin đầu tiên. Con trỏ điểm cuối không gian tự do và các con  
trỏ ứng với mẩu tin bị di chuyển được cập nhật. Sự lớn lên hay nhỏ đi của mẩu tin cũng sử 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). Cái giá  
phải trả cho sự di chuyển không quá cao vì các khối có kích cỡ không lớn ( thường 4Kbytes).  
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à sử dụng một hoặc một vài mẩu tin độ dài cố định để biểu diễn 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 sử dụng mẩu tin độ dài cố định là:  
1. 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ưỡng (độ dài tối đa). Ta có thể sử 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ự đặc biệt: null hoặc  
End-of-record.  
2. Contrỏ (Pointers). Mẩu tin độ dài thay đổi được biểu diễn 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 trỏ.  
Sự bất lợi của cấu trúc con trỏ 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 (mẩu tin đầu tiên cần trường branch_name, các mẩu tin sau trong  
danh sách không cần thiết có trường này!). Để 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ứa chỉ 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.  
0
1
2
3
4
5
Perryridge  
Round Hill  
Mianus  
A-102  
A-301  
A-101  
A-211  
A-300  
A-111  
400  
350  
800  
500  
650  
750  
A-201  
900  
A210  
700  
⊥
⊥
⊥
⊥
⊥
⊥
⊥
⊥
⊥
⊥
⊥
⊥
⊥
⊥
Downtown  
Redwood  
Brighton  
A-222  
600  
⊥
⊥
A-200  
1200  
950  
A-255  
⊥
⊥
⊥
⊥
Sử dụng phương pháp không gian dự trữ  
0
1
2
Perryridge  
A-102  
A-201  
A-210  
400  
900  
700  
350  
800  
500  
650  
•
•
•
47  
CHƯƠNG III. LƯU T
trang  
3
4
5
6
Round Hill  
Mianus  
A-301  
A-101  
A-211  
A-300  
Downtown  
Redwood  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
Perryridge  
A-102  
A-301  
A-101  
A-211  
A-300  
400  
350  
800  
500  
650  
750  
Round Hill  
Mianus  
•
•
Downtown  
Redwood  
Brighton  
•
•
A-111  
Khối neo  
A-201  
900  
700  
600  
A-210  
•
•
A-222  
A-200 1200  
A-255  
950  
•
Khối tràn  
Cấu trúc khối neo và khối tràn  
TỔ CHỨC CÁC MẨU TIN TRONG FILE  
Ta đã xét làm thế nào để biểu diễn các mẩu tin trong một cấu trúc file. Một thể hiện của  
một quan hệ là một tập hợp các mẩu tin. Đã cho một tập hợp các mẩu tin, vấn đề đặt 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 cho 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ệ chặt chẽ với cấu trúc chỉ mục.  
48  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
• 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ệ.  
TỔ CHỨC FILE TUẦN TỰ  
Tổ chức file tuần tự được thiết kế để xử 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 trỏ. Con trỏ trong mỗi mẩu tin trỏ tới  
mẩu tin kế theo thứ tự khoá tìm kiếm. Hơn nữa, để tối ưu hoá số khối truy xuất trong xử 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 hoặc 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 mà nó có thể hưu dụng  
cho mục đích trình bày cũng như cho các thuật toán xử lý vấn tin (query-processing algorithms).  
Brighton  
A-217  
750  
500  
600  
700  
400  
900  
700  
850  
550  
Downtown A-101  
Downtown A-110  
Mianus  
A-215  
Perryridge A-102  
Perryridge A-201  
Perryridge A-218  
Redwood  
A-222  
Round Hill A-301  
•
Khó khăn gặp 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 xen, xoá, do cái giá phải trả cho việc di chuyển các mẩu tin khi xen, xoá. Ta  
có thể quản trị vấn đề xoá bởi dùng dây chuyền các con trỏ như đã trình bày trước đây. Đối với  
xen, ta có thể áp dụng các quy tắc sau:  
1. Định vị mẩu tin trong file mà nó đi trước mẩu tin được xen theo thứ tự khoá tìm kiếm.  
2. Nếu có mẩu tin tự do (không gian của mẩu tin bị xoá) trong cùng khối, xen mẩu tin  
vào khối này. Nếu không, xen mẩu tin mới vào một khối tràn. Trong cả hai trường  
hợp, điều chỉnh các con trỏ sao cho nó móc xích các mẩu tin theo thứ tự của khoá tìm  
kiếm.  
Brighton  
A-217  
750  
500  
600  
700  
400  
900  
700  
850  
550  
Downtown A-101  
Downtown A-110  
Mianus  
A-215  
A-102  
A-201  
A-218  
A-222  
Perryridge  
Perryridge  
Perryridge  
Redwood  
49  
CHƯƠNG III. LƯU TRỮ
trang  
Round Hill A-301  
•
Khối tràn  
North Town A_777  
1100  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
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 diễn 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 một 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 cỡ của CSDL nhỏ.  
Hơn nữa, trong một số máy tính cá nhân, chủ yếu kích cỡ tổng thể mã đối tượng đối với hệ CSDL  
là nhỏ. Một cấu trúc file đơn giản làm suy giảm lượng mã cần thiết để thực thi hệ thống.  
Cách tiếp cận đơn giản này, để thực hiện CSDL quan hệ, không còn phù hợp khi kích cỡ  
của CSDL tăng lên. Ta sẽ thấy những điểm lợi về mặt hiệu năng từ việc gán một cách thận trọng  
các mẩu tin với các khối, và từ việc tổ chức kỹ lưỡng chính bản thân các khối. Như vậy, có vẻ như  
là một cấu trúc file phức tạp hơn lại có lợi hơn, ngay cả trong trường hợp ta giữ nguyên chiến  
lược lưu trữ mỗi quan hệ trong một file riêng biệt.  
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 hệ điều hành được cấp phát cho hệ CSDL. Tất cả các quan hệ  
được lưu trữ trong một file này, và sự quản trị file này thuộc về hệ CSDL. Để thấy những điểm  
lợi của việc lưu trữ nhiều quan hệ trong cùng một file, ta xét vấn tin SQL sau:  
SELECT  
FROM  
account_number, customer_number, customer_treet, customer_city  
depositor, customer  
WHERE  
depositor.customer_name = customer.customername;  
Câu vấn tin này tính một phép nối của các quan hệ depositor và customer. Như vậy, đối  
với mỗi bộ của depositor, hệ thống phải tìm bộ của customer có cùng giá trị customer_name. Một  
cách lý tưởng là việc tìm kiếm các mẩu tin này nhờ sự trợ giúp của chỉ mục. Bỏ qua việc tìm kiếm  
các mẩu tin như thế nào, ta chú ý vào việc truyền từ đĩa vào bộ nhớ. Trong trường hợp xấu nhất,  
mỗi mẩu tin ở trong một khối khác nhau, điều này buộc ta phải đọc một khối cho một mẩu tin  
được yêu cầu bởi câu vấn tin. Ta sẽ trình bày một cấu trúc file được thiết kế để thực hiện hiệu quả  
các câu vấn tin liên quan đến depositor customer. Các bộ depositor đối với mỗi customer_name  
được lưu trữ gần bộ customer có cùng customer_name. Cấu trúc này trộn các bộ của hai quan hệ  
với nhau, nhưng cho phép xử lý hiệu quả phép nối. Khi một bộ của của quan hệ customer được  
đọc, toàn bộ khối chứa bộ này được đọc từ đĩa vào trong bộ nhớ chính. Do các bộ tương ứng của  
depositor được lưu trữ trên đĩa gần bộ customer, khối chứa bộ customer chứa các bộ của quan hệ  
depositor cần cho xử lý câu vấn tin. Nếu một customer có nhiều account đến nỗi các mẩu tin  
depositor không lấp đầy trong một khối, các mẩu tin còn lại xuất hiện trong khối kế cận. Cấu trúc  
file 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 chỉ sử  
dụng một đọc khối, như vậy ta có thể xử lý câu vấn tin đặc biệt này hiệu quả hơn.  
customer_name  
Hays  
customer_street customer_city  
Hays  
Main  
Brooklyn  
Main  
Brooklyn  
Stamford  
Hays  
A-102  
A-220  
A-503  
Turner  
Putnam  
Hays  
Quan hệ customer  
Hays  
50  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
Turner  
Turner  
Putnam Stamford  
A-305  
Hays  
Hays  
Hays  
Main  
Brooklyn  
A-102  
A-220  
Cấu trúc file cụm  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
Tuy nhiên, cấu trúc gom cụm trên lại tỏ 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, chẳng hạn:  
SELECT *  
FROM customer  
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. Sử dụng thận trọng gom cụm có thể cải thiện  
hiệu năng đáng kể trong việc xử lý câu vấn tin.  
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ơ đồ 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).  
Trong các kiểu thông tin mà hệ thống phải lưu trữ là:  
○ Các tên của các quan hệ  
○ Các tên của các thuộc tính của mỗi quan hệ  
○ Các miền (giá trị) và các độ dài của các thuộc tính  
○ Các tên của các View được định nghĩa trên CSDL và định nghĩa của các view này  
○ Các 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 sử dụng hệ thống:  
○ Tên của người sử dụng được phép  
○ Giải trình thông tin về người sử dụng  
Các dữ liệu thống kê và mô tả về các quan hệ có thể cũng được lưu trữ:  
○ Số bộ trong mỗi quan hệ  
○ Phương pháp lưu trữ được sử 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  
51  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
○ 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 nhỏ. Một số hệ CSDL sử  
dụng những cấu trúc dữ liệu và mã mục đích đặc 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 sử dụng CSDL để  
lưu trữ dữ liệu hệ thống, ta đơn giản hoá cấu trúc tổng thể của hệ thống và cho phép sử 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 diễn dữ liệu hệ thống sử dụng các quan hệ như thế nào là do  
người thiết kế hệ thống quyết định. Như một ví dụ, ta đề nghị sự biểu diễn sau:  
System_catalog_schema = (relation_name, number_of_attributes)  
Attribute_schema = (attribute_name, relation_name, domain_type, position, length)  
User_schema = (user_name, encrypted_password, group)  
Index_schema = (index_name, relation_name, index_type, index_attributes)  
View_schema = (view_name, definition)  
CHỈ MỤC  
Ta 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 sẽ 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ể 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 trong các công việc hệ thống 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ế,  
sẽ quá lớn để được quản lý một cách hiệu quả. Thay vào đó, người ta sử 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 sẽ nêu ra một vài kỹ thuật, đáng lưu ý là không kỹ thuật nào là  
tốt nhấ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ể hoặc 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 xen: Thời gian để xen 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í xen thích hợp và 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 hoặc 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  
52  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
khác với định nghĩa khoá sơ cấp (primary key), khoá dự tuyển (candidate key), và 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.  
CHỈ MỤC ĐƯỢC SẮP.  
Một chỉ mục lưu trữ các giá trị khoá tìm kiếm trong thứ tự được sắp, và kết hợp với mỗi  
khoá tìm kiếm, các mẩu tin chứa khoá tìm kiếm này. 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 trên 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, đượ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).  
Brighton  
A-217  
750  
500  
600  
700  
400  
900  
700  
850  
550  
Downtown A-101  
Downtown A-110  
Mianus  
A-215  
Perryridge A-102  
Perryridge A-201  
Perryridge A-218  
Redwood  
A-222  
Round Hill A-301  
•
file tuần tự các mẩu tin account  
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 diễn một trong các sơ đồ xưa nhất được dùng  
trong hệ CSDL. Chúng được thiết kế cho các ứng dụng đòi hỏi cả xử 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 đặc và chỉ mục thưa (Dense and Sparse Indices)  
Chỉ mục đặc  
Brighton  
A-217  
750  
500  
600  
700  
400  
900  
700  
850  
550  
Brighton  
Downtown A-101  
Downtown A-110  
Mianus  
Redwood  
Mianus  
A-215  
Perryridge A-102  
Perryridge A-201  
Perryridge A-218  
Redwood  
A-222  
Round Hill A-301  
•
Chỉ mục thưa  
Brighton  
A-217  
750  
500  
600  
700  
400  
900  
Downtown A-101  
Downtown A-110  
Brighton  
53  
CHƯƠNG III. LƯU TRỮ VÀ CẤU TRÚC TẬP TIN  
trang  
Downtown  
Mianus  
A-215  
Mianus  
Perryridge A-102  
Perryridge A-201  
Perryridge  
Redwood  
Tải về để xem bản đầy đủ
pdf 39 trang baolam 22140 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ quản trị cơ sở dữ liệu - Chương III: Lưu trữ và cấu trúc tập tin", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_he_quan_tri_co_so_du_lieu_chuong_iii_luu_tru_va_c.pdf