MỤC TIÊUNhằm giới thiệu 2 kỹ thuật rất phổ biến được sử dụng để tăng hiệu suất truy cập dữ liệu trong các Hệ QT CSDL là chỉ mục index và băm hash... 6.1 Chỉ mục indexing• Chỉ mục: một cấ
Trang 1TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BỘ MÔN CÔNG NGHỆ THÔNG TIN
Biên soạn:
Ths Nguyễn Thị Kim Yến Ntkyen@ctu.edu.vn
QUẢN TRỊ DỮ LIỆU - CT467 Chương 2: LƯU TRỮ VÀ
CẤU TRÚC TẬP TIN
Trang 2MỤC TIÊU
Nhằm giới thiệu 2 kỹ thuật rất phổ biến được sử dụng
để tăng hiệu suất truy cập dữ liệu trong các Hệ QT
CSDL là chỉ mục (index) và băm (hash)
Trang 46.1 Chỉ mục (indexing)
• Chỉ mục: một cấu trúc dữ liệu được dùng để định vị
và truy cập nhanh nhất vào trong các bảng DB
• Một Index là một con trỏ tới dữ liệu trong một bảng
Tăng tốc độ tìm kiếm
và truy cập DB
Trang 5• Cấu trúc của Index:
Trang 66.1.1 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
Trang 7• Nếu file chứa các mẩu tin được sắp tuần tự theo khóa 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 theo cụm)
• Nếu file chứa các mẩu tin không được sắp theo khóa tìm kiếm, chỉ mục theo khóa tìm kiếm này được gọi là
chỉ mục thứ cấp (hay chỉ mục không phân cụm)
6.1.1 Chỉ mục được sắp (Ordered index) (tt)
Trang 8a) 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 Downtown A-110 600 Mianus A-215 700 Perryridge A-102 400 Perryridge A-201 900 Perryridge A-218 700 Redwood A-222 700 Round Hill A-305 350 •
Trang 9• 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
a) Chỉ mục sơ cấp (Primary index) (tt)
Brighton A-217 750 Downtown A-101 500 Downtown A-110 600 Mianus A-215 700 Perryridge A-102 400 Perryridge A-201 900 Perryridge A-218 700 Redwood A-222 700 Round Hill A-305 350 •
Brighton
Mianus
Redwood
Trang 10• Mỗi index record trỏ tới một bucket chứa các con trỏ tới tất cả các bản ghi có giá trị search-key.
b) Chỉ mục thứ cấp (Secondary index)
Bucket: 1 đơn vị lưu trữ chứa 1 hoặc
nhiều record
Trang 11Chỉ 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
• Cách thực hiện: Lưu chỉ mục sơ cấp trên ổ cứng và
xây một chỉ mục thưa trên nó
Trang 12Đặc Thưa
6.1 Chỉ mục (indexing) (tt)
Trang 13• Nhược điểm của file chỉ mục tuần tự: giảm hiệu năng khi file lớn lên
• Để khắc phục: đòi hỏi phải tổ chức lại file
B+-cây là một cấu trúc tổ chức chỉ mục được sử
dụng rộng rãi vì nó đảm bảo được tính hiệu quả bất chấp các hành động xen xoá.
6.1.2 File chỉ mục B+ -Cây (B+-Tree Index file)
Trang 146.1.2 File chỉ mục B+ -Cây (tt)
Nút bên trái sẽ có tất cả các giá trị nhỏ hơn hoặc bằng nút gốc
Nút bên phải sẽ có
giá trị lớn hơn nút gốc
Trang 156.1.2 File chỉ mục B+ -Cây (tt)
v Cấu trúc của một nút lá B+ Tree có bậc p
• Con trỏ dữ liệu chỉ xuất phát ở nút lá
• Các Nút lá liên kết với nhau theo thứ tự khóa tìm kiếm
Trang 16• Là một dạng cây cân bằng (mọi đường dẫn từ gốc đến
lá có cùng độ dài)
• Mỗi nút không là lá có số con (pointer) nằm trong
khoảng [m/2] m, m là 1 số cố định gọi là bậc của cây
• Mỗi nút lá có số giá trị (key) nằm trong khoảng
[(m-1)/2] m-1
• Nút gốc (nếu không phải nút lá) có ít nhất 2 nút con
• Mọi nút lá đều nằm cùng một mức
6.1.2 File chỉ mục B+ -Cây (tt)
Trang 17File chỉ mục B+ -cây - THÊM
• Ý tưởng: Tìm vị trí khóa có thể thêm vào cây Khóa
mới sẽ được thêm vào nút lá:
– Nếu chưa đầy → Thêm khóa mới vào là hoàn tất
– Nếu đầy → Tách nút lá ra làm hai nút cạnh nhau trong cùng một mức Cụ thể: chuyển phần tử giữa lên nút cha
• Quá trình tách nút có thể được lan truyền ngược về nút gốc và kết thúc khi có một nút cha nào đó cần được thêm 1 khóa từ dưới lên mà chưa đầy
Trang 209 23
9 19 23 27 1
3
11
Tách nút
3 Thêm nút: 3 và 11
Trang 2119 23 9 1 3 11 21 5 13 17 15 29 25 27
Trang 2219 23 9 1 3 11 21 5 13 17 15 29 25 27
Trang 2319 23 9 1 3 11 21 5 13 17 15 29 25 27
Trang 2419 23 9 1 3 11 21 5 13 17 15 29 25 27
Trang 2619 23 9 1 3 11 21 5 13 17 15 29 25 27
Trang 2719 23 9 1 3 11 21 5 13 17 15 29 25 27
Trang 28Giả sử bây giờ ta chèn thêm record:
Trang 29Brig Clearview Down
Clearview
Trang 30Downtown Mianus Redwood
Clearview
Clearview
Downt
Downto
Trang 31File chỉ mục B+ -cây - XÓA
Thao tác thực hiện:
1 Tìm nút lá chứa khóa cần xóa
2 Xóa khóa trong nút lá tìm được 1 trong các cách sau:
2.1 Trường hợp đơn giản , xóa khóa cây vẫn đúng cấu trúc
2.2 Trường hợp nút lá có ít hơn k khóa (trong đó, m = 2k+1),
(a) Nếu 1 nút kề có nhiều hơn k khóa, chuyển một khóa sang
(b) Ngược lại, thực hiện gộp lại với một nút kề (cha sẽ giảm đi
Trang 32File chỉ mục B+ -cây - XÓA
Thao tác thực hiện (tiếp theo):
2.3 Trường hợp nút trung gian có ít hơn k khóa , lặp lại thao
3 Nếu thực hiện gộp đến nút gốc và nút gốc chỉ còn 1 nút con, thì cho nút con làm nút gốc mới
Trang 332.1 Cây không thay đổi cấu trúc: Xóa khóa D
Trang 342.2 Nút lá có ít hơn k khóa thực hiện tái cân bằng cây
(a) Nút kề có nhiều hơn k khóa, chuyển 1 khóa sang
H A
E
I J D
F C
Trang 352.2 Nút lá có ít hơn k khóa thực hiện tái cân bằng cây
(a) Nút kề có nhiều hơn k khóa, chuyển 1 khóa sang
Trang 362.2 Nút lá có ít hơn k khóa thực hiện tái cân bằng cây
(b) Gộp lại với một nút kề (cha sẽ giảm đi một nút con)
G
E F C
J
G A
m=5 k=2
Nút trung gian ít hơn k khóa
Trang 37G A
thao tác tái cân bằng cây như ở bước 2.1 và 2.2
m=5 k=2
Trang 38m=5 k=2
G
E F C
Trang 40Xoá khóa:Downtown ra khỏi B+ -cây
Trang 42• Hạn chế của cơ chế tổ chức file tuần tự là:
– Tốn nhiều thời gian cho các thao tác I/O
• Kỹ thuật băm giúp bỏ qua các thao tác truy xuất cấu trúc Index DL được lưu trữ dưới dạng các khối dữ liệu
• Có 2 loại băm: Băm tĩnh (static hashing) và Băm động
(dynamic hashing)
6.2 Băm (hashing)
Trang 43v Các thuật ngữ trong phương pháp băm
Trang 44• Một hàm băm tốt phải thỏa mãn các điều kiện sau:
– Giảm thiểu va chạm
– Tính toán nhanh
– Các giá trị khóa được phân bổ đều trong bảng
– Xử lý được các loại khóa có kiểu dữ liệu khác nhau
v Lựa chọn hàm băm (hash function)
Trang 456.2 Băm (hashing)
6.2.1 Băm tĩnh
• Địa chỉ của một vùng nhớ dữ liệu khi được tính toán thì
sẽ luôn giống nhau
• Ví dụ: hàm băm là mod (5) để xác định địa chỉ của khối
dữ liệu
Trang 46• Là nơi dữ liệu được lưu trữ tại các khối dữ liệu có địa chỉ được tạo ra bằng cách sử dụng hàm băm.
• Hàm băm có thể sử dụng bất kỳ giá trị cột nào để tạo địa chỉ
v Phương pháp tổ chức file băm
Trang 47• Trong kỹ thuật băm, người ta cho đầu vào là một
khoá tìm kiếm, hàm băm trên khoá này sẽ cho ra giá trị là vị trí của khối đĩa chứa mẫu tin
Trang 481. Chia lấy số dư: h(k) = k % m , với m là 1 số nguyên tố
2. Nhân: h(k) = một số chữ số ở "giữa" giá trị k 2
3. Phân đoạn: phân ra thành nhiều đoạn bằng nhau
– Tách: căn thẳng lề các đoạn trái or phải Tính tổng
– Gấp: gấp các đoạn lại theo đường biên tương tự như gấp giấy
v Một số phương pháp xây dựng hàm băm
Trang 49v Xây dựng bảng băm - Hash table
• Ví dụ: Giả sử có hàm h(k) = k%5
• Có các giá trị key: 11, 21, 44, 23, 42, 4, 34, 12
θ
0 1 2 3 4
Mã băm (Index) Bucket
11 21 42
23
44 4 34
giá trị
Trang 50Va chạm giá trị băm
• Là trạng thái khi các kết quả băm từ hai hoặc nhiều DL trong tập DL, ánh xạ vào cùng một vị trí trong bảng băm
Trang 51Một số kỹ thuật giải quyết sự va chạm
• Direct Chaining (tạo dây chuyền): Ứng dụng danh sách liên kết
– Separate chaining (chuỗi riêng biệt)
• Open Addressing (định địa chỉ mở): Dựa trên cấu trúc mảng
– Linear probing (thăm dò tuyến tính)
– Quadratic probing (thăm dò bình phương)
– Double hashing (băm kép)
Trang 53v Phương pháp băm mở
Băm mở: Thay vì ghi đè vùng nhớ dữ liệu cũ, thì vùng nhớ
dữ liệu tiếp theo được sử dụng để nhập bản ghi mới (phương pháp thăm dò tuyến tính: tìm kiếm ô kế tiếp)
Trang 54• Xét hàm băm "key mod 7"
• dãy key = {50, 700, 76, 85, 92, 73, 101}
0 1 2 3 4 5 6
Trang 55• Insert (k): tìm kiếm cho đến khi thấy một ô trống, sau
đó bổ sung k
• Search(k): tìm kiếm cho đến khi khóa của ô bằng k
hoặc ô trống được tìm thấy
• Delete(k): khóa bị xóa được đánh dấu "deleted"
Nhận xét: Insert có thể bổ sung 1 phần tử vào ô đánh dấu "deleted" nhưng Search thì không được dừng lại
Trang 56v Phương pháp băm đóng
Băm đóng: Khi các vùng nhớ dữ liệu đầy, một vùng nhớ mới
sẽ được cấp phát cho cùng một hàm băm và kết quả sẽ được liên kết sau vùng nhớ trước đó (chuỗi tràn)
Chứa các giá trị băm giống nhau
Trang 57Ví dụ
• Xét hàm băm "key mod 7"
• dãy key = {50, 700, 76, 85, 92, 73, 101}
0 1 2 3 4 5 6
50 700 73 76
101
85 mod 7 => dư 1
Trang 580 1 2 3
a
b c e
Trang 596.2 Băm (hashing)
6.2.2 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?
Nếu tràn Nới rộng, chọn hàm băm mới và tổ chức
lại bảng băm Tốn chi phí
Trang 61Không có không gian cho R3
Sử dụng 1 bit
Sử dụng 2 bit
Ví dụ
Trang 62• Có 2 phương pháp xử lý khi xuất hiện khối trống:
– Không merge các khối trống lại
– Merge các khối trống lại và rút ngắn chiều dài bảng băm nếu có thể (làm ngược thủ tục chèn)
Băm động - Xóa