B-Tree Là Gì

  -  

Nhỏng ta đã biết Index giúp cho MySql search tìm các phiên bản ghi nhanh lẹ, hoàn toàn có thể đọc nôm na Index như phần mục lục trong 1 quyển sách, dựa vào đó ta rất có thể search kiếm ngôn từ quan trọng thông qua phần mục lục cố gắng vì chưng lật rở cả cuốn sách.quý khách hàng vẫn xem: Tree Là Gì ? Sự Khác Biệt Giữa Cây B Và Cây Nhị Phân

Index được MySql cất giữ trên B-Trees, vào vài trường thích hợp nước ngoài lệ, hoàn toàn có thể được lưu lại trên R-Trees. Vậy B-Trees là gì với được cấu tạo ra làm sao.

Bạn đang xem: B-tree là gì

Introduction

B-Tree là cây search tìm từ bỏ cân đối. Trong hầu hết những cây tra cứu tìm từ thăng bằng khác (như AVL với Red Blaông xã Trees), trả định rằng phần đa sản phẩm đa số phía bên trong bộ lưu trữ bao gồm. Để hiểu được việc sử dụng B-Trees, chúng ta cần nghĩ về mang lại con số dữ liệu vĩ đại mà lại bắt buộc lưu giữ vào bộ nhớ lưu trữ chủ yếu. lúc con số keys to, dữ liệu được gọi tự hard disk bên dưới dạng kân hận (blocks). Thời gian gọi tài liệu trường đoản cú hard disk rất mất thời gian đối với thời hạn truy vấn xuất bộ lưu trữ bao gồm, Ý tưởng thiết yếu của vấn đề thực hiện B-Trees là bớt tần số truy vấn đĩa. Hầu không còn các hoạt động vui chơi của cây (tìm kiếm kiếm, cnhát, xóa, max, min, ..etc) trải đời truy vấn đĩa O (h) đó là độ cao của B-Trees. B-Trees là fat trees. Chiều cao của cây B được tiêu giảm về tối nhiều bởi vấn đề bố trí các tốt nhất keys trên những node. Nói tầm thường kích cỡ node tương tự size bloông chồng. Vì kỹ năng hạn chế h, tổng mốc giới hạn đĩa truy vấn mang lại hầu như những chuyển động được giảm đáng kể so với Cây search tìm cân đối nhị phân như cây AVL, Red Blaông xã Tree, ..etc.

Thuộc tính của B-Tree

Tất cả lá nghỉ ngơi thuộc cấp.Một B-Tree được xác định bởi thuật ngữ về tối tphát âm "t". Giá trị của t dựa vào vào kích thước khối hận đĩa.Mỗi node trừ root đề xuất đựng tối thiểu t-1 keys. Gốc hoàn toàn có thể chứa về tối tgọi 1 node.Tất cả các node (bao gồm cả gốc) hoàn toàn có thể chứa đựng nhiều nhất 2t - 1 keys.Số con của một node thông qua số keys trong đó cùng với cùng 1.Tất cả những keys của một node được sắp xếp theo thiết bị từ bỏ tăng thêm. Child thân hai keys k1 với k2 chứa tất cả những keys nằm trong tầm tự k1 cùng k2.B-Tree cải tiến và phát triển và thu hẹp trường đoản cú nơi bắt đầu nhưng mà không hệt như cây search kiếm nhị phân. Cây tra cứu kiếm nhị phân phát triển rộng lớn dần.Giống nlỗi cây tra cứu kiếm nhị phân cân đối, sự phức tạp về thời hạn nhằm tra cứu kiếm, ckém với xóa là tương đối Khủng.

Sau đây là một ví dụ B-Tree cường độ buổi tối thiểu 3. Lưu ý rằng trong thực tiễn B-Cây, giá trị của cường độ về tối tgọi là nhiều hơn thế 3.


*

Tìm kiếm

Tìm tìm tương tự như nhỏng kiếm tìm tìm trong Cây kiếm tìm kiếm nhị phân. Hãy search chiếc chìa khóa nhằm tìm kiếm k. Chúng ta bước đầu từ nơi bắt đầu với đệ quy đi qua. Đối với mỗi node không có nhánh sẽ không còn xét mang lại, trường hợp node gồm key, bọn họ chỉ cần trả lại node. Nếu ko, họ vẫn quay trở về child thích hợp (The child ngay lập tức trước key) của node. Nếu bọn họ đạt cho một node với không kiếm thấy k vào node leaf, họ vẫn trả về NULL.

Traverse

Insert

Một key new luôn luôn được cyếu vào tại node leaf. call key được ckém vào là k. Giống như BST, họ bắt đầu trường đoản cú gốc với đi xuống cho đến lúc họ kiếm được một node leaf. Lúc chúng ta tìm được một node leaf, họ cyếu keys vào node leaf đó. Không giống như BST, chúng ta gồm một phạm vi được xác định trước về con số các keys mà lại một node hoàn toàn có thể cất. Vì vậy, trước khi cnhát một key vào node, công ty chúng tôi bảo đảm an toàn rằng node có thể được add thêm key.

Xem thêm: Thông Tin Festival Hoa Đà Lạt 2021 Diễn Ra Khi Nào ? Thông Tin Festival Hoa Đà Lạt 2021

Làm vắt nào để bảo đảm an toàn rằng một node gồm không gian có sẵn mang lại key trước lúc key được cnhát vào? Chúng tôi sử dụng một method được hotline là splitChild () được sử dụng nhằm phân chia một child của một node. Xem biểu đồ gia dụng dưới đây nhằm phát âm được sự phân loại. Trong sơ đồ dùng sau, child y của x đang rất được chia thành nhị node y cùng z. Lưu ý rằng những method splitChild di chuyển một key lên và đấy là nguyên nhân B-Trees béo lên không giống hệt như BSTs trở nên tân tiến.


*

Như đã bàn thảo sinh hoạt trên, để cnhát một key new, chúng ta đi từ nơi bắt đầu tới leaf. Trước lúc đi qua 1 node, đầu tiên chúng ta đánh giá coi node vẫn đầy. Nếu node là đầy, chúng tôi phân tách nó để tạo không khí.

Deletion process

Xoá trường đoản cú B-Trees là tinh vi rộng là cnhát, bởi vì chúng ta cũng có thể xóa một khoá từ ngẫu nhiên node làm sao - không chỉ là là leaf - cùng Khi bọn họ xóa một key một node, họ đã đề xuất sắp xếp lại những child của node.

Như trong cnhát, bọn họ phải bảo vệ xóa ko vi phạm những nằm trong tính của cây B. Cũng như chúng ta đề xuất đảm bảo an toàn rằng một node không trở nên quá rộng vị ckém, chúng ta đề nghị bảo đảm rằng một node không quá bé dại vào quy trình xóa (quanh đó gốc được phnghiền gồm ít hơn t-một số tối tphát âm của các keys). Cũng giống như một thuật toán thù cyếu dễ dàng và đơn giản hoàn toàn có thể bắt buộc sao giữ nếu một node trê tuyến phố dẫn mang đến nơi keys được ckém vào khá đầy đủ, một biện pháp tiếp cận đơn giản và dễ dàng nhằm xóa rất có thể bắt buộc sao lưu lại trường hợp một node (không giống cùng với gốc) dọc từ băng thông mang lại nơi key được xóa sẽ có được số keys tối tgọi.

Xem thêm: Review Lịch Trình Đi Du Lịch Sapa 2 Ngày 1 Đêm Tự Túc, Đừng Bỏ Qua!!

Delete method xóa k khỏi cây nhỏ được bắt đầu từ x. Method này đảm bảo an toàn rằng bất cứ khi nào nó trường đoản cú call bản thân một giải pháp đệ quy bên trên một nút ít x, số keý vào x ít nhất là nấc tối tgọi t. Lưu ý rằng điều kiện này yên cầu một keys đặc biệt quan trọng rộng mức về tối thiểu thưởng thức bởi điều kiện cây B thường thì, vì vậy đôi lúc một keys có thể bắt buộc được dịch rời vào trong 1 child node trước lúc đệ quy child kia. Điều khiếu nại được bức tốc này được cho phép chúng ta xóa một key cây nhưng không nhất thiết phải "sao lưu" (với một ngoại lệ, chúng ta sẽ giải thích). Bạn buộc phải phân tích và lý giải những quánh tả sau để xóa trường đoản cú cây B với sự đọc biết rằng giả dụ node gốc x đổi thay node phía bên trong không có keys (tình huống này rất có thể xảy ra vào trường vừa lòng 2c và 3b kế tiếp họ xóa x, cùng x chỉ gồm nhỏ x .c1 vươn lên là cội new của cây, sút chiều cao của cây bởi một cây cùng bảo vệ gia sản cơ mà gốc của cây chứa ít nhất một keys (trừ lúc cây trống).