23.2.2004 Ch. 4: B-Trees 1
B-Cây
23.2.2004 Ch. 4: B-Trees 2
C u trúc d li u trong b nh ngoài
°B-cây t ng quát hoá cây tìm ki m nh phân. ế
“H s phân nhánh” (branching factor)
°B-cây là cây tìm ki m cân b ng đc thi t k đ làm vi c h u hi u ế ượ ế ế
trong b nh ngoài (đĩa c ng).
B nh chính (main memory)
B nh ngoài (secondary storage)
°Disk
Track
Page
°Th i gian ch y g m
s các truy c p vào đĩa
th i gian CPU
23.2.2004 Ch. 4: B-Trees 3
Truy c p đĩa
°M t nút c a B-cây th ng chi m nguyên c m t disk page. ườ ế
°H s phân nhánh tùy thu c vào t l gi a kích th c c a khóa và ướ
kích th c c a disk page.ướ
23.2.2004 Ch. 4: B-Trees 4
Các thao tác lên m t đĩa
°Cho x là m t con tr đn m t đi t ng (ví d : m t nút c a m t B- ế ượ
cây). Đi t ng ượ x có th có nhi u tr ng ườ
N u ếx n m trong b nh chính, truy c p các tr ng c a ườ x nh ư
th ng l , ví d nh ườ ư key[x], leaf [x],...
N u ếx còn n m trên đĩa thì dùng DISK-READ(x) đ đc nó vào b
nh chính.
N u ếx đã thay đi thì dùng DISK-WRITE(x) đ tr nó vào đĩa.
°Cách làm vi c tiêu bi u v i m t đi t ng ượ x
...
x m t con tr đn m t đi t ng nào đó ế ượ
DISK-READ(x)
các thao tác truy c p/thay đi các tr ng c a ườ x
DISK-WRITE(x)
các thao tác không thay đi m t tr ng c a ườ x
...
23.2.2004 Ch. 4: B-Trees 5
H s phân nhánh
°Ví d m t B-cây mà:
m i nút có 1000 khóa (s trong m i nút là s khóa nó ch a), t c
là B-cây có h s phân nhánh là 1001
1000
1000 1000 1000
10001000 1000
1001
1001
10011001
1 nút
1000 khóa
1001 nút
1.001.000 khóa
1.002.001 nút
1.002.001.000 khóa
root[T]