Professional Documents
Culture Documents
DBMS2.2-IndexHash - 2020
DBMS2.2-IndexHash - 2020
8/29/20 63
Nội dung
Chỉ mục
n Chỉ mục được sắp
n Chỉ mục B+-cây
Băm
n Băm tĩnh
n Băm động
Tạo chỉ mục trong SQL
8/29/20 64
Chỉ mục (indexing)
8/29/20 65
Chỉ mục được sắp (Ordered index)
Là 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 từng khoá tìm kiếm với các
mẫu tin chứa khoá tìm kiếm này
Các mẫu tin trong file dữ liệu được chỉ mục có thể
chính chúng cũng được sắp
n Nếu file dử liệu được sắp tuần tự theo khoá tìm kiếm,
chỉ mục theo khoá tìm kiếm này được gọi là chỉ mục sơ
cấp (hay chỉ mục cụm)
n Nếu file dữ liệu không được sắp theo khoá tìm kiếm,
chỉ mục theo khoá tìm kiếm này được gọi là chỉ mục
thứ cấp (hay chỉ mục không cụm)
8/29/20 66
Chỉ mục sơ cấp (Primary index)
Chỉ mục đặc (dense index): có mẩu tin chỉ mục cho
mỗi khóa tìm kiếm
Brighton A-217 750
Downtown A-101 500
Brighton Downtown A-110 600
Downtown Mianus A-215 700
Mianus Perryridge A-102 400
Perryridge Perryridge A-201 900
Redwood Perryridge A-218 700
Round Hill Redwood A-222 700
Round Hill A-305 350 •
8/29/20 67
Chỉ mục sơ cấp (Primary index)
Chỉ mục thưa (sparse index): chỉ có mẩu tin chỉ mục
cho một số khóa tìm kiếm
Brighton A-217 750
Downtown A-101 500
Brighton
Downtown A-110 600
Mianus Mianus A-215 700
Redwood Perryridge A-102 400
Perryridge A-201 900
Perryridge A-218 700
Redwood A-222 700
Round Hill A-305 350 •
8/29/20 68
Chỉ mục thứ cấp (Secondary index)
8/29/20 69
Chỉ mục nhiều cấp (Multilevel index)
Sử dụng trong trường hợp tập tin chỉ mục quá lớn
=> xem tập tin chỉ mục như là tập tin dữ liệu và lập
chỉ mục cho tập tin chỉ mục này.
8/29/20 70
File chỉ mục B+-cây
Một trong các nhược điểm của file chỉ mục tuần tự:
hiệu năng giảm khi file lớn lên.
8/29/20 71
File chỉ mục B+-cây
Một nút của B+-cây chứa n-1 giá trị khoá tìm kiếm:
K1, K2, ..., Kn-1 và n con trỏ P1, P2, ..., Pn
Trong một nút, các giá trị khoá được sắp theo thứ tự:
"i < j => Ki < Kj
8/29/20 72
File chỉ mục B+-cây
8/29/20 73
File chỉ mục B+-cây
Không có giá trị nào xuất hiện hai lần trong tất cả
các nút lá
8/29/20 74
File chỉ mục B+-cây (m=3)
At least half-full
Sau đây là một ví dụ về B+ cây:
n m=3
n Thứ tự chèn đúng như thứ tự các mẫu tin trong file dữ
liệu
… … …
8/29/20 75
File chỉ mục B+-cây - Xen
8/29/20 76
(a) Xen khóa 32 n=4
100
30
11
30
31
32
3
5
8/29/20 77
(b) Xen khóa = 7 n=4
100
30
7
57
11
30
31
3
5
8/29/20 78
8/29/20
100
(c) Xen khóa 160
160
150
156 120
179 150
180
160
179
180
180
n=4
200
79
(d) Gốc mới, xen khóa 45 n=4
new root
30
10
20
30
40
10
12
20
25
30
32
40
40
45
1
2
3
8/29/20 80
N=3
8/29/20 81
8/29/20 82
File chỉ mục B+ cây Bài tập
Dựng một B+-cây bậc 4 đối với tập các giá trị khoá:
(2, 3, 5, 7, 11, 15, 19, 25, 29, 33, 37, 41, 47).
Xóa khóa 19, 25.
Bài giải
8/29/20 83
File chỉ mục B+-cây - Xóa
8/29/20 84
(a) Cây không thay đổi cấu trúc: Xóa khóa 5 n=5
100
30
11
30
31
32
3
5
8/29/20 85
(b) Gộp nút lá: Delete 50
n=5
100
10
40
40
10
20
30
40
50
8/29/20 86
(c) Phân phối lại khóa: Delete 50
n=5
40 35
100
10
35
10
20
30
35
40
50
8/29/20 87
(d) Gộp nút trung gian: Delete 37
n=5
25
new root
40
25
10
20
30
40
30
30
37
10
14
20
22
25
26
40
45
1
3
8/29/20 88
Xoá khóa:
Downtown ra khỏi B+-cây
8/29/20 89
8/29/20 90
Băm (Hashing)
8/29/20 92
Băm tĩnh
8/29/20 93
Băm tĩnh - Các thao tác xen, tìm, xoá
Xen một mẫu tin với giá trị khoá tìm kiếm K:
1. Tính h(K)
2. h(K) là địa chỉ của bucket chứa mẫu tin
3. Nếu có không gian trong bucket cho mẫu tin Þ chèn mẫu
tin vào.
Ngược lại: điều khiển tràn bucket
Tìm kiếm mẫu tin có giá trị khoá K: Tính h(K) Þ tìm được
bucket tương ứng Þ tìm trong bucket này mẫu tin có giá trị
khoá K
Xoá mẫu tin có giá trị khoá K: Tính h(K) Þ tìm được bucket
tương ứng Þ tìm trong bucket này mẫu tin có giá trị khoá K và
xoá nó
8/29/20 94
Băm tĩnh - Điều khiển tràn bucket
Khắc phục:
n Băm mở: Sử dụng bucket tràn
n Băm đóng: Băm lại
Dãy các hàm băm thường được sử dụng là:
{ hi(K) = (hi-1(K) + 1) mod nB }
8/29/20 95
h(Account)=(tổng các chữ số trong tài khoản) mod 7
8/29/20 96
Bucket tràn
8/29/20 97
Ví dụ về xoá trong bảng băm
Xóa: 0
a
e 1
b d
f c d
c 2
e
3 f Có thể chuyển
g “g” lên
8/29/20 98
Băm động
Chúng ta đối phó như thế nào khi file dữ liệu phình to
quá khả năng quản lý của bảng băm?
8/29/20 99
Băm động - Ý tưởng
Chỉ sử dụng i bits trong tổng số b bits chiều dài của kết
quả hàm băm h
b
h(K) ®
00110101
sử dụng i ® tăng theo kích thước của file dữ liệu….
8/29/20 100
Băm động - Ví dụ
Branch-name h(Branch-name)
Brighton 0010 ....
Downtown 1010 ....
Mianus 1100 ....
Perryridge 1111 ....
Redwood 0011 ....
Round Hill 1101 ....
8/29/20 102
Băm động - Chèn
Số bit đang sử dụng để
có thể xác định bucket
Hash prefix
Đầu vào
bảng địa chỉ
8/29/20 103
Cấu trúc băm động sau 3 hành động xen
8/29/20 104
Cấu trúc băm động sau 4 hành động xen
8/29/20 105
Cấu trúc băm động sau 7 hành động xen
8/29/20 106
Cấu trúc băm động cho file account
8/29/20 107
Băm động - Xoá
8/29/20 108
Questions?
8/29/20 109