Hình 4.18 - Một Compact B-Tree bậc 8
Ưu điểm của Compact B-Tree :
• Tìm kiếm một khóa trên cây nhanh . • Là cấu trúc sử dụng bộ nhớ trong 100%. Khuyết điểm của Compact B-Tree :
• Giải thuật thêm một khóa vào Compact B-Tree rất phức tạp, chi phí để chuyến cây về dạng Compact B-Tree rất lớn
Nếu dùng thực hiện phép toán insert của B-Tree trên Compact B-Tree thì quá trình tách nút sẽ diễn ra đồng loạt từ nút lá đến nút gốc !
Cấu trúc Compact B-Tree chỉ phù hợp khi cây ít bị thay đổi (ít thực hiện phép toán thêm khóa, xóa khóa).
Người ta thường nên B-Tree (chuyển B-Tree về dạng Compact B-Tree trong thời gian hệ thống rãnh rỗi, chẳng hạn nén vào lúc trời khuya thanh vắng…)
2.3.3. B+ -Tree
Vì B-Tree duyệt cây phức tạp người ta cải tiến thành B+Tree để giúp duyệt cây hiệu quản hơn.
B+ Tree là B-Tree (lúc này cho phép trùng khóa) mà tất cả các khóa trên cây đều có mặt ở các nút lá. Các nút lá được liên kết nhau từ trái qua phải hình thành một danh sách liên kết giúp duyệt các khóa trên cây.
Các khóa ở nút là liên kết với con trỏ chỉ mẫu tin của khóa khóa lưu ở bộ nhớ ngoài.
Hình 4.19 - Cây B+Tree bậc 4
• Các phép toán trên B+ -Tree
• Truy xuất mẫu tin có khóa k :
Cũng như search của B-Tree, nhưng quá trình tìm kiếm chỉ kết thúc khi đi đến lá để truy xuất được con trỏ chỉ mẫu tin của khóa ở bộ nhớ ngoài.
• Duyệt B+ Tree:
Chúng ta có thể duyệt toàn bộ cây hay duyệt từ
khóa………..đến khóa……..bằng cách duyệt danh sách liên kết của các nút lá.
• Thêm khóa :
Tương tự B-Tree, tuy nhiên khi tách nút khóa giữa midkey được lưu ở nút nửa trái và đồng thời lưu ở nút cha.