Tải bản đầy đủ (.docx) (30 trang)

Cấu trúc chỉ mục của file

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (384.85 KB, 30 trang )

Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
MỤC LỤC
Cấu trúc chỉ mục của file 1 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
1. Các loại chỉ mục đã được sắp xếp đơn mức
1. 1.1 Giới thiệu.
2. Ý tưởng của cấu trúc truy xuất “chỉ mục được sắp xếp”
tương tự với chỉ mục được sử dụng trong một cuốn sách để liệt kê
ra những mục quan trọng ở phần cuối của cuốn sách theo thứ tự
alphabet cùng với các số trang tương ứng. Chúng ta có thể tìm
kiếm một chỉ mục để tìm ra một danh sách địa chỉ(trong trường
hợp này là số trang) và sử dụng những địa chỉ này định vị một mục
trong sách bằng cách tìm kiếm những trang đã xác định. Có thể
thấy rằng, nếu không có hướng dẫn được đưa ra thì chúng ta sẽ
phải duyệt rất chậm từng từ một trong toàn bộ cuốn sách để tìm
ra mục mà chúng ta quan tâm; điều này cũng tương ứng với việc
thực hiện một phép tìm kiếm tuyến tính trên một file. Tất nhiên,
hầu hết các cuốn sách đều có các thông tin bổ sung, chẳng hạn như
chương và tiêu đề từng phần, giúp chúng ta tìm ra một mục mà
không phải tìm trên toàn bộ cuốn sách. Tuy nhiên, chỉ mục là việc
chỉ định chính xác của mỗi mục xuất hiện trong cuốn sách.
3. Đối với file có cấu trúc bản ghi chứa một số trường
(hoặc thuộc tính), một cấu trúc truy xuất chỉ mục thường được
định nghĩa trên một trường đơn giản của một file, được gọi là một
trường chỉ mục (hoặc thuộc tính chỉ mục). Chỉ mục thường lưu
trữ mỗi giá trị của trường chỉ mục cùng với một danh sách các con
trỏ trỏ đến tất cả các khối đĩa chứa các bản ghi với giá trị của
trường đó. Các giá trị trong chỉ mục được sắp thứ tự, vì vậy chúng
ta có thể thực hiện kiểu tìm kiếm nhị phân trên chỉ mục. File chỉ
mục nhỏ hơn nhiều so với file dữ liệu, vì vậy quá trình tìm kiếm chỉ
mục sử dụng một tìm kiếm nhị phân là khá hiệu quả.


4. 1.2 Một số loại chỉ mục được sắp xếp
5. Có một số loại “chỉ mục được sắp xếp”. Một chỉ mục sơ
cấp (primary index) được xác định trên trường khóa có thứ tự
(ordering key field) của một file các bản ghi đã được sắp xếp. Một
trường khóa có thứ tự được sử dụng đối với các bản ghi của một
file theo thứ tự vật lý trên đĩa, và mỗi bản ghi có một giá trị duy
Cấu trúc chỉ mục của file 2 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
nhất cho trường đó. Nếu trường có thứ tự không phải là trường
khóa, nghĩa là nếu vô số bản ghi trong file có thể có cùng giá trị đối
với trường này, thì một loại chỉ mục khác, được gọi là chỉ mục
cụm có thể được sử dụng. Chú ý rằng một file có thể có nhiều nhất
một trường có thứ tự vật lý, do đó nó có thể có nhiều nhất một
khóa chính hoặc một chỉ mục cụm, mà không phải là cả hai. Một
loại chỉ mục thứ ba, được gọi là chỉ mục thứ cấp, có thể xác định
trên bất kỳ trường không có thứ tự nào đó của một file. Một file có
thể có một số chỉ mục thứ cấp bổ sung vào cho phương pháp truy
xuất sơ cấp của nó. Chúng ta sẽ nghiên cứu những loại chỉ mục
đơn mức này cụ thể hơn.
1.2.1 Chỉ mục sơ cấp
6. Chỉ mục sơ cấp là một file đã được sắp xếp mà các
bản ghi của nó có chiều dài cố định với hai trường. Trường đầu
tiên có cùng kiểu dữ liệu như trường khóa có thứ tự - được gọi là
khóa chính (primary key) của file dữ liệu, và trường thứ hai là
một con trỏ trỏ đến một khối đĩa (địa chỉ khối). Có một đầu vào
chỉ mục – index entry (hoặc bản ghi chỉ mục – index record)
trong file chỉ mục cho mỗi khối trong file dữ liệu. Mỗi đầu vào chỉ
mục có giá trị khóa chính là giá trị trường khóa chính (primary
key field) của bản ghi đầu tiên trong một khối và một con trỏ trỏ
đến khối đó như hai trường giá trị của nó. Chúng ta gọi hai giá trị

trường của đầu vào chỉ mục i là <K(i), P(i)>.
7. Để tạo ra một chỉ mục trên file đã sắp xếp (như trong
Hình 1), chúng ta sử dụng trường Name như là khóa chính, bởi vì
đó là trường khóa có thứ tự của file (giả sử rằng mỗi giá trị của
Name là duy nhất). Mỗi đầu vào trong chỉ mục có một giá trị
Name và một con trỏ. Ba đầu vào chỉ mục đầu tiên được chỉ ra
như sau:
8. <K(1) = (Aaron, ED), P(1) = địa chỉ của khối 1>
9. <K(2) = (Adams, John), P(2) = địa chỉ của khối 2>
10. <K(3) = (Alexander, Ed), P(3) = địa chỉ của khối 3>
Cấu trúc chỉ mục của file 3 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
11. Hình 1 sẽ minh họa cho chỉ mục sơ cấp này. Tổng số
các đầu vào trong chỉ mục là giống như số các khối đĩa trong file
dữ liệu đã sắp xếp. Bản ghi đầu tiên trong mỗi khối của file dữ liệu
được gọi là bản ghi gốc (anchor record) của khối, thường gọi là
block anchor.
12.
Cấu trúc chỉ mục của file 4 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
13.
Cấu trúc chỉ mục của file 5 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
14. Hình 1. Chỉ mục sơ cấp trên trường khóa có thứ tự của file
Employee
15. Các chỉ mục có thể dày đặc hoặc thưa. Một chỉ mục
dày đặc có một đầu vào chỉ mục cho mỗi giá trị khóa tìm kiếm
trong file dữ liệu. Trong khi đó, một chỉ mục thưa (hoặc không
dày đặc), chỉ có các đầu vào chỉ mục cho một số các giá trị tìm
kiếm. Vì vậy, một chỉ mục sơ cấp là chỉ mục không dày đặc (thưa),

bởi vì nó thường bao gồm một đầu vào cho mỗi khối đĩa của file dữ
liệu và cho các khóa của bản ghi gốc thay vì là một đầu vào cho
mỗi giá trị tìm kiếm (hoặc mỗi bản ghi).
 Bàn về vấn đề thời gian truy xuất khối trong file chỉ mục sơ
cấp:
16. File chỉ mục cho một chỉ mục sơ cấp cần ít khối hơn so
với file dữ liệu thông thường bởi 2 lý do sau. Thứ nhất, số đầu vào
chỉ mục ít hơn so với số bản ghi trong file dữ liệu. Thứ hai, mỗi đầu
vào chỉ mục thường có kích thước nhỏ hơn so với một bản ghi dữ
liệu bởi vì nó chỉ có 2 trường; do đó, sẽ có nhiều các đầu vào chỉ
mục hơn so với các bản ghi dữ liệu có thể đặt vào trong một khối.
Vì vậy, một tìm kiếm nhị phân trên file chỉ mục đòi hỏi ít truy xuất
khối hơn so với một tìm kiếm nhị phân trên file dữ liệu. Chú ý rằng
tìm kiếm nhị phân cho một file dữ liệu đã sắp xếp yêu cầu log
2
b
truy xuất khối. Nhưng nếu với file có chỉ mục sơ cấp chỉ chứa b
i
khối, thì để định vị một bản ghi với một giá trị tìm kiếm phải yêu
cầu một kiếm nhị phân của chỉ mục đó và truy xuất đến khối có
chứa bản ghi đó: tổng cộng có log
2
b
i
+ 1 truy xuất.
17. Một bản ghi mà giá trị khóa chính là K nằm trong khối
có địa chỉ là P(i), trong đó K(i) ≤ K < K(i+1). Khối thứ i trong file dữ
liệu sẽ chứa tất cả các bản ghi như thế do thứ tự vật lý của các bản
ghi file trên trường khóa chính. Để thu được một bản ghi, với giá
trị K của trường khóa chính đã biết, thì chúng ta sẽ thực hiện một

phép tìm kiếm nhị phân trên file chỉ mục để tìm ra đầu vào chỉ mục
thích hợp i, và sau đó thu được khối file dữ liệu mà địa chỉ của nó
là P(i). Ví dụ 1 minh họa việc lưu trữ trong một truy xuất khối có
Cấu trúc chỉ mục của file 6 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
thể thu được khi một chỉ mục sơ cấp được sử dụng để tìm kiếm
một bản ghi.
18. Ví dụ 1. Giả sử rằng chúng ta có một file đã sắp xếp với r =
30,000 bản ghi được lưu trong đĩa với kích thước khối là B = 1024
bytes. Những bản ghi của file này có kích thước cố định và không
được thay đổi, với chiều dài của bản ghi là R = 100 bytes. Hệ số
tạo khối (blocking factor) cho file sẽ là bfr = (B/R) =
(1024/100)

= 10 bản ghi cho mỗi khối. Số các khối cần cho file là
b = (r/bfr) = (30,000/10) = 3000 khối. Một tìm kiếm nhị phân
trên file dữ liệu sẽ cần khoảng log
2
b = log
2
3000 = 12 truy xuất
khối.
19. Bây giờ giả sử rằng trường khóa có thứ tự của một
file là V có chiều dài là 9 bytes, một con trỏ khối là P có chiều dài là
6 bytes, và chúng ta đã xây dựng một chỉ mục sơ cấp cho file. Kích
thước của mỗi đầu vào chỉ mục là R
i
= (9 + 6) = 15 bytes, vì vậy hệ
số tạo khối cho chỉ mục là bfr
i

= (B/R
i
) = (1024/15) = 68 đầu
vào cho mỗi khối. Tổng số các đầu vào chỉ mục r
i
bằng số các khối
trong file dữ liệu, tức là 3000 khối. Vì vậy, số các khối chỉ mục b
i
=
(r
i
/bfr
i
) = (3000/68) = 45 khối. Để thực hiện một tìm kiếm nhị
phân trên file chỉ mục, thì sẽ cần (log
2
b
i
) = log
2
45 = 6 truy xuất
khối. Để tìm một bản ghi bằng cách sử dụng chỉ mục, chúng ta cần
một truy xuất khối bổ sung đến file dữ liệu với tổng số là 6 +1 = 7
truy xuất khối – một cải tiến so với kiểu tìm kiếm nhị phân trên file
dữ liệu (yêu cầu 12 truy xuất khối).
1.2.2 Chỉ mục cụm
20. Nếu các bản ghi file đã được sắp theo thứ tự vật lý
trên một trường không khóa(không có một giá trị phân biệt nào
cho mỗi bản ghi) thì trường đó được gọi là trường phân cụm
(clustering field). Chúng ta có thể tạo ra một loại chỉ mục khác,

được gọi là chỉ mục cụm, để tăng tốc độ truy lục của các bản ghi
có cùng giá trị cho trường phân cụm. Loại chỉ mục này khác với
Cấu trúc chỉ mục của file 7 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
chỉ mục sơ cấp (yêu cầu trường có thứ tự của file dữ liệu phải có
một giá trị phân biệt cho mỗi bản ghi).
21. Một file chỉ mục cụm, giống như file chỉ mục sơ cấp,
cũng có hai trường. Trường thứ nhất chứa các giá trị phân biệt
của trường phân cụm, và trường thứ hai chứa các con trỏ khối.
Con trỏ khối sẽ trỏ đến khối đầu tiên trong file dữ liệu có một bản
ghi với giá trị bằng giá trị trong trường phân cụm đó. Hình 2 minh
họa cho một file chỉ mục cụm. Chú ý rằng việc chèn và xóa bản ghi
vẫn là nguyên nhân nảy sinh các vấn đề bởi vì các bản ghi dữ liệu
đã được sắp theo thứ tự vật lý. Để giảm bớt những hạn chế trong
vấn đề chèn bản ghi, thông thường dành riêng một khối (hoặc một
nhóm các khối liền nhau) cho mỗi giá trị của trường phân cụm; tất
cả các bản ghi với giá trị đó đặt vào trong khối (hoặc nhóm khối).
Điều này làm cho việc chèn và xóa các bản ghi có thể dễ dàng thực
hiện hơn. Hình 3 sẽ chỉ ra điều này.
Cấu trúc chỉ mục của file 8 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
22.
23. Hình 2. Một chỉ mục cụm trên trường Dept_number không
khóa có thứ tự của file EMPLOYEE
24. Chỉ mục cụm là một mô hình khác của chỉ mục không
dày đặc bởi vì nó có một đầu vào cho mỗi giá trị riêng biệt của file
chỉ mục, mà nó không phải là khóa bởi vì nó có giá trị trùng nhau
trên mỗi bản ghi trong file.
Cấu trúc chỉ mục của file 9 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014

25.
Cấu trúc chỉ mục của file 10 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
26.
Cấu trúc chỉ mục của file 11 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
27. Hình 3. Chỉ mục cụm với một cụm khối riêng biệt cho mỗi
nhóm của các bản ghi chia xẻ cùng một giá trị cho trường phân
cụm
Cấu trúc chỉ mục của file 12 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
1.2.3 Chỉ mục thứ cấp
28. Chỉ mục thứ cấp cung cấp phương tiện để truy xuất
một file thay cho một truy xuất sơ cấp nào đó đã tồn tại. Các chỉ
mục thứ cấp không yêu cầu file dữ liệu phải được sắp xếp trên
trường chỉ mục. Chúng có thể được tạo ra trên các trường khóa
hoặc trường không khóa. Chỉ mục là một file đã được sắp xếp với 2
trường. Trường đầu tiên có cùng kiểu dữ liệu với trường không có
thứ tự của file dữ liệu, đó là trường chỉ mục. Trường thứ hai
hoặc là con trỏ khối hoặc con trỏ bản ghi. Có thể có rất nhiều chỉ
mục thứ cấp cho cùng một file.
a. Chỉ mục thứ cấp trên trường khóa
29. Đầu tiên, chúng ta xét một cấu trúc truy xuất chỉ mục
thứ cấp trên một trường khóa có giá trị phân biệt với mỗi bản ghi.
Trường khóa trên một chỉ mục thứ cấp được tạo ra thường được
gọi là khóa phụ (secondary key). Trong trường hợp này mỗi đầu
vào chỉ mục đại diện cho mỗi bản ghi trong file dữ liệu, nó chứa
giá trị khóa phụ đại diện cho bản ghi và một con trỏ trỏ đến khối
mà bản ghi được lưu trữ hoặc trỏ đến chính bản ghi đó. Do đó, chỉ
mục như vậy là dày đặc.

30. Chúng ta đặc hai giá trị trường của đầu vào chỉ mục i
là <K(i), P(i)>. Những đầu vào được sắp xếp theo giá trị của K(i), vì
vậy có thể thực hiện một tìm kiếm nhị phân. Bởi vì những bản ghi
của file dữ liệu không được sắp xếp theo thứ tự vật lý bởi những
giá trị của trường khóa phụ, nên không thể sử dụng block anchors.
Đó là lý do tại sao mà đầu vào chỉ mục được tạo ra cho mỗi bản
ghi trong file dữ liệu hơn là cho mỗi khối như trong chỉ mục sơ
cấp. Hình 4 là một minh họa chỉ mục thứ cấp, trong đó các con trỏ
P(i) trong các đầu vào chỉ mục là các con trỏ khối, không phải các
con trỏ bản ghi. Mỗi khi khối thích hợp được chuyển đến bộ nhớ
chính, thì việc tìm kiếm cho bản ghi mong muốn bên trong khối có
thể được tiến hành.
 Bàn về thời gian truy xuất khối dữ liệu.
Cấu trúc chỉ mục của file 13 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
31. Chỉ mục thứ cấp thường cần đến nhiều không gian lưu
trữ và thời gian tìm kiếm hơn so với chỉ mục sơ cấp do số lượng
các đầu vào nhiều hơn. Tuy nhiên, việc cải tiến thời gian tìm kiếm
cho một bản ghi bất kỳ đối với chỉ mục thứ cấp là lớn hơn nhiều so
với chỉ mục sơ cấp, vì chúng ta sẽ phải thực hiện một phép tìm
kiếm tuyến tính trên file dữ liệu nếu chỉ mục thứ cấp không tồn tại.
Với một chỉ mục sơ cấp, chúng ta vẫn có thể sử dụng một tìm kiếm
nhị phân trên file chính, ngay cả khi chỉ mục không tồn tại. Ví dụ 2
sau đây sẽ minh họa việc cải tiến số lượng các khối được truy xuất.
32.
Cấu trúc chỉ mục của file 14 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
33.
Cấu trúc chỉ mục của file 15 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014

34. Hình 4. Chỉ mục thứ cấp dày đặc (với các con trỏ khối) trên
một trường khóa không có thứ tự của một file
35. Ví dụ 2. Xét file ở ví dụ 1 với r = 30,000 các bản ghi có chiều
dài cố định với kích cỡ là R = 100 bytes được lưu trong một đĩa với
kích thước khối là B = 1024 bytes. File có b = 3000 khối, như đã
tính trong ví dụ 1. Để thực hiện một tìm kiếm tuyến tính trên file,
chúng ta cần trung bình là b/2 = 3000/2 = 1500 truy xuất khối. Giả
sử rằng chúng ta xây dựng một chỉ mục thứ cấp trên một trường
khóa không có thứ tự của file với V có chiều dài là 9 bytes. Như
trong ví dụ 1, một con trỏ khối là P có chiều dài là 6 bytes, vì vậy
mỗi đầu vào chỉ mục là R
i
= (9 + 6) = 15 bytes, và hệ số tạo khối cho
chỉ mục là bfr
i
= (B/R
i
) = (1024/15) = 68 đầu vào cho mỗi khối.
Trong một chỉ mục thứ cấp dày đặc thì tổng số các đầu vào chỉ
mục r
i
bằng với số các bản ghi trong file dữ liệu, tức là 30,000. Vì
vậy số các khối cần cho chỉ mục b
i
= (r
i
/bfr
i
) = (30000/68) =
442 khối.

36. Một tìm kiếm nhị phân trên chỉ mục thứ cấp này cần
có (log
2
b
i
) = (log
2
442) = 9 truy xuất khối. Để tìm ra một bản ghi
sử dụng chỉ mục, chúng ta cần một truy xuất khối bổ sung vào file
dữ liệu cho một tổng của 9 + 1 = 10 khối truy xuất – một cải tiến
đáng kể trên 1500 khối truy xuất cần thiết cho tìm kiếm tuyến tính,
nhưng dường như tệ hơn so với 7 truy xuất khối được yêu cầu cho
chỉ mục sơ cấp.
b. Chỉ mục thứ cấp trên trường không khóa
37. Chúng ta cũng có thể tạo ra một chỉ mục thứ cấp trên
một trường không khóa của một file. Trong trường hợp này, vô số
bản ghi trong file dữ liệu có thể có cùng giá trị cho trường chỉ mục.
Có một số lựa chọn cho việc cài đặt một chỉ mục như vậy:
• Lựa chọn 1:
38. Bao gồm nhiều đầu vào chỉ mục cùng giá trị K(i)(mỗi
đầu vào chỉ mục đại diện mỗi bản ghi) Đây là một chỉ mục dày đặc.
• Lựa chọn 2:
39. Có các bản ghi với chiều dài có thể thay đổi được cho
các đầu vào chỉ mục, với một trường lặp cho con trỏ. Chúng ta
Cấu trúc chỉ mục của file 16 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
dành riêng một danh sách các con trỏ <P(i, 1), …, P(i, k)> trong
đầu vào chỉ mục cho K(i)(một con trỏ đối đại diện mỗi khối chứa
bản ghi có giá trị trường chỉ mục bằng K(i)). Trong lựa chọn 1
hoặc lựa chọn 2, giải thuật tìm kiếm nhị phân trên chỉ mục phải

được hiệu chỉnh một cách thích hợp.
• Lựa chọn 3:
40. Được sử dụng phổ biến, để giữ các đầu vào chỉ mục ở
một độ dài cố định và có đầu vào duy nhất cho mỗi giá trị trường
chỉ mục nhưng để tạo ra một cấp bổ sung thao tác gián tiếp cho
việc xử lý nhiều con trỏ. Trong trường hợp không dày đặc, con trỏ
P(i) trong đầu vào chỉ mục <K(i), P(i)> trỏ đến một khối các con
trỏ bản ghi; mỗi con trỏ bản ghi trong khối đó trỏ đến một trong
các bản ghi của file dữ liệu với giá trị K(i) của trường chỉ mục. Nếu
một giá trị K(i) nào đó xuất hiện trong quá nhiều bản ghi, thì các
con trỏ bản ghi của chúng không thể đặt vào trong một khối đĩa
duy nhất, một cụm hoặc một danh sách liên kết của các khối được
sử dụng. Kỹ thuật này được minh họa trong Hình 5. Việc truy xuất
thông qua chỉ mục yêu cầu thêm một hoặc nhiều truy xuất, nhưng
giải thuật tìm kiếm chỉ mục và việc chèn một bản ghi mới trong file
dữ liệu lại được thực hiện dễ dàng hơn. Ngoài ra, những phép truy
xuất trên các điều kiện lọc phức tạp sẽ được xử lý bằng cách
chuyển đến các con trỏ bản ghi mà không phải truy xuất quá nhiều
bản ghi không cần thiết.
41. Chú ý rằng một chỉ mục thứ cấp cung cấp một thứ tự
logic trên những bản ghi bởi trường lập chỉ mục. Nếu chúng ta
truy xuất các bản ghi theo thứ tự của những đầu vào trong chỉ
mục thứ cấp thì chúng ta sẽ lấy chúng theo thứ tự của trường lập
chỉ mục.
Cấu trúc chỉ mục của file 17 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
42.
43. Hình 5. Một chỉ mục thứ cấp (với các con trỏ bản ghi) trên
một trường không khóa được cài đặt bằng cách sử dụng một cấp
gián tiếp (level of indirection) để cho các đầu vào chỉ mục có chiều

dài cố định và có các giá trị trường duy nhất.
1.3 Tóm tắt phần 1
44. Để kết luận cho phần này, chúng ta tóm tắt các thảo
luận về các loại chỉ mục nói trên trong 2 bảng. Bảng 1 chỉ ra các
đặc điểm của trường chỉ mục của mỗi loại trong chỉ mục đơn mức,
Cấu trúc chỉ mục của file 18 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
như chỉ mục sơ cấp, chỉ mục cụm và chỉ mục thứ cấp. Bảng 2 tóm
tắt những thuộc tính của mỗi loại chỉ mục bằng cách so sánh số
các đầu vào chỉ mục và xác định chỉ mục nào là dày đặc và chỉ mục
nào sử dụng các block anchors của file dữ liệu.
Cấu trúc chỉ mục của file 19 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
45.
46. Bảng 1 : Các loại chỉ mục dựa trên các thuộc tính của
trường chỉ mục
47. 48. Trường
chỉ mục được sử
dụng cho việc
sắp xếp file
49. Trường
chỉ mục không
được sử dụng
cho việc sắp xếp
file
50. Trường
chỉ mục là khóa
51. Chỉ mục
sơ cấp
52. Chỉ mục

thứ cấp (khóa)
53. Trường
chỉ mục không
là khóa
54. Chỉ mục
cụm
55. Chỉ mục
thứ cấp (không
khóa)
56. Bảng 2. Thuộc tính của các loại chỉ mục
57. Loạ
i chỉ mục
58. Số
đầu vào
chỉ mục
(mức 1)
59. Dày
đặc/Khôn
g dày đặc
60. Bloc
k
Anchoring
trên file
dữ liệu
61. Sơ
cấp
62. Số
các khối
trong file
dữ liệu

63. Khô
ng dày
đặc
64. Có
65. Cụ
m
66. Số
các giá trị
trường
chỉ mục
phân biệt
67. Khô
ng dày
đặc
68.
Có/k
hông
a
69. Thứ
cấp
(khóa)
70. Số
các bản
ghi trong
file dữ liệu
71. Dày
đặc
72.
Khôn
g

73. Thứ
cấp
(không
khóa)
74. Số
các bản
ghi
b
hoặc
số các giá
trị
c
75. Dày
đặc hoặc
không dày
đặc
76.
Khôn
g
Cấu trúc chỉ mục của file 20 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
trường
chỉ mục
phân biệt
77. Chú thích :
78.
a
Có nếu mỗi giá trị của trường có thứ tự bắt đầu một
khối mới; không có trường hợp ngược lại.
79.

b
Cho lựa chọn 1.
80.
c
Cho lựa chọn 2 và 3.
Cấu trúc chỉ mục của file 21 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
2 Chỉ mục đa mức
81. Các loại chỉ mục ở trên đề cập đến một file chỉ mục có
thứ tự. Một tìm kiếm nhị phân được áp dụng cho chỉ mục để định
vị các con trỏ trỏ đến một khối đĩa hoặc đến một bản ghi (hoặc các
bản ghi) trên file có một giá trị trường chỉ mục cụ thể. Một tìm
kiếm nhị phân yêu cầu số lượng các truy xuất khối thích hợp
(log
2
b
i
) cho một chỉ mục với b
i
khối bởi vì mỗi bước của giải thuật
này làm giảm một phần của file chỉ mục để chúng ta tiếp tục tìm
kiếm bởi một hệ số của 2.
82. Ý tưởng của chỉ mục đa mức là làm giảm một phần
của chỉ mục mà chúng ta tiếp tục tìm kiếm với hệ số tạo khối cho
chỉ mục là bfr
i
lớn hơn 2. Vì vậy, không gian tìm kiếm giảm đi rất
nhanh. Giá trị bfr
i
được gọi là tín hiệu ra (fan-out) của chỉ mục đa

mức, và chúng ta sẽ ký hiệu nó là f
0
. Việc tìm kiếm một chỉ mục đa
mức yêu cầu số lượng truy xuất khối thích hợp (log
f0
b
i
), số lượng
này nhỏ hơn tìm kiếm nhị phân nếu fan-out lớn hơn 2.
83. Chỉ mục đa mức xem xét file chỉ mục được chỉ ra như
là mức 1 (hoặc mức cơ sở) của một chỉ mục đa mức như là file có
thứ tự với một giá trị riêng biệt cho mỗi K(i). Vì vậy, chúng ta có
thể tạo ra một chỉ mục sơ cấp cho mức 1 này; chỉ mục này với mức
1 được gọi là mức 2 của chỉ mục đa mức. Bởi vì mức 2 là một chỉ
mục sơ cấp, nên chúng ta có thể sử dụng các block anchors để mức
2 có một đầu vào trong mỗi khối của mức 1. Hệ số tạo khối bfr
i
cho
mức 2(và cho tất cả các mức tiếp theo) giống với hệ số tạo khối
của mức 1 bởi vì tất cả các đầu vào chỉ mục có kích thước giống
nhau. Nếu mức 1 có r
1
đầu vào, và hệ số tạo khối(cũng là fan-out)
cho chỉ mục là bfr
i
= f
0
, thì mức 1 cần (r
1
/f

0
) khối, cũng là số các
đầu vào r
2
là cần thiết ở mức 2 của chỉ mục.
84. Chúng ta có thể lặp lại tiến trình này cho mức 2. Mức
3 là một chỉ mục sơ cấp cho mức 2, có một đầu vào cho mỗi khối ở
mức 2, và do đó số các đầu vào ở mức 3 là r
3
=(r
2
/f
0
). Chú ý rằng
chúng ta yêu cầu mức 2 chỉ khi mức 1 cần nhiều hơn một khối của
vùng lưu trữ trên đĩa, tương tự như vậy, chúng ta cũng chỉ yêu cầu
Cấu trúc chỉ mục của file 22 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
mức 3 khi mức 2 cần nhiều hơn một khối. Chúng ta có thể lặp lại
tiến trình này cho đến khi tất cả các đầu vào của một mức chỉ mục
t nào đó đặt vừa vào trong một khối đơn. Khối này ở mức thứ t
được gọi là mức chỉ mục cao nhất. Mỗi mức làm giảm số các đầu
vào ở mức trước đó với một hệ số của f
0
(fan-out chỉ mục) vì vậy
chúng ta có thể sử dụng công thức 1 ≤ (r
1
/((f
0
)

t
)) để tính t. Từ đó,
một chỉ mục đa mức với r
1
đầu vào mức 1 sẽ có các mức t tương
ứng, với t =(log
f0
(r
1
)).
85. Trường hợp đa cấp như đã trình bày có thể được sử
dụng trên bất kỳ loại chỉ mục nào, có thể là một chỉ mục sơ cấp, chỉ
mục cụm hoặc chỉ mục thứ cấp(miễn là chỉ mục ở mức 1 có các giá
trị K(i) riêng biệt và các đầu vào với chiều dài cố định. Ví dụ 3 sẽ
minh họa việc cải thiện số các khối được truy xuất khi một chỉ mục
đa mức được sử dụng để tìm kiếm một bản ghi.
86. Ví dụ 3. Giả sử rằng chỉ mục thứ cấp dày đặc của Ví dụ 2
được chuyển đổi thành chỉ mục đa mức. Chúng ta tính toán hệ số
tạo khối chỉ mục bfr
i
= 68 cho mỗi khối và cũng chính là fan-out f
0
của chỉ mục đa mức; số các khối ở mức 1 b
1
= 442 khối cũng được
tính toán. Số các khối ở mức 2 sẽ là b
2
= (b
1
/f

0
) = (442/68)=7
khối, và số các khối ở mức 3 sẽ là b
3
= (b
2
/f
0
)= (7/68)=1 khối. Vì
vậy, mức 3 là mức cao nhất của chỉ mục, và t = 3. Để truy xuất một
bản ghi bằng cách tìm kiếm chỉ mục đa mức, chúng ta phải truy
xuất một khối ở mỗi mức cộng với một khối từ file dữ liệu, vì vậy
chúng ta phải cần t + 1 = 3 + 1 = 4 truy xuất khối. So sánh kết quả
này với ví dụ 2, ta thấy ở đó có đến 10 khối truy xuất cần khi sử
dụng một chỉ mục đơn mức và tìm kiếm nhị phân.
Cấu trúc chỉ mục của file 23 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014
87.
88. Hình 6. Một chỉ mục sơ cấp 2 mức tương tự như tổ chức file
kiểu ISAM (Phương pháp truy xuất tuần tự theo chỉ mục)
89. Dưới đây sẽ là phần mô tả vắn tắt về thủ tục tìm kiếm
một bản ghi trong một file dữ liệu sử dụng một chỉ mục sơ cấp đa
cấp không dày đặc với t mức. Chúng ta đặt đầu vào i ở mức j của
chỉ mục như là <K
j
(i), P
j
(i)>, và chúng ta tìm kiếm một bản ghi mà
Cấu trúc chỉ mục của file 24 Thực hiện: Nhóm 4
Đại học Khoa học Huế Khoa học máy tính khóa 2012-2014

giá trị khóa chính của nó là K. Chúng ta giả sử rằng bất kỳ bản ghi
overflow nào đều được loại bỏ. Nếu bản ghi đó ở trong một file thì
phải có một đầu vào nào đó ở mức 1 với K
1
(i) ≤ K < K
1
(i+1) và bản
ghi sẽ ở trong khối của dữ liệu file có địa chỉ là P
1
(i).
Cấu trúc chỉ mục của file 25 Thực hiện: Nhóm 4

×