B-Tree Là Gì

  -  

Nlỗi ta đã biết Index hỗ trợ cho MySql tìm kiếm những bản ghi lập cập, có thể đọc nôm mãng cầu Index nlỗi phần mục lục trong 1 quyển sách, dựa vào đó ta hoàn toàn có thể tìm tìm câu chữ quan trọng thông qua phần mục lục núm bởi vì lật rở cả cuốn sách.

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

Index được MySql lưu giữ tại B-Trees, trong vài ngôi trường phù hợp nước ngoài lệ, hoàn toàn có thể được lưu lại tại R-Trees. Vậy B-Trees là gì và được cấu trúc thế nào.

Introduction

B-Tree là cây tìm kiếm kiếm từ thăng bằng. Trong phần lớn những cây tra cứu kiếm trường đoản cú cân đối không giống (nhỏng AVL và Red Blaông chồng Trees), đưa định rằng rất nhiều đồ vật hồ hết phía trong bộ nhớ bao gồm. Để đọc được Việc sử dụng B-Trees, bọn họ đề xuất nghĩ về mang đến số lượng tài liệu vĩ đại mà bắt buộc giữ vào bộ lưu trữ chủ yếu. lúc số lượng keys mập, tài liệu được hiểu từ bỏ hard disk dưới dạng khối (blocks). Thời gian đọc tài liệu từ hard disk rất lâu đối với thời gian truy vấn xuất bộ nhớ chính, Ý tưởng chính của Việc áp dụng B-Trees là sút số lần truy vấn đĩa. Hầu không còn những hoạt động vui chơi của cây (tìm kiếm, chèn, xóa, max, min, ..etc) từng trả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 tinh giảm buổi tối nhiều bằng bài toán sắp xếp những nhất keys trên các node. Nói chung kích thước node tương tự kích cỡ bloông chồng. Vì kĩ năng tiêu giảm h, tổng mốc giới hạn đĩa truy vấn đến phần nhiều những hoạt động được sút đáng kể đối với Cây tìm kiếm kiếm thăng bằng nhị phân như cây AVL, Red Black 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 minh bằng thuật ngữ về tối tđọc "t". Giá trị của t phụ thuộc vào vào kích thước khối hận đĩa.Mỗi node trừ root đề xuất chứa tối thiểu t-1 keys. Gốc hoàn toàn có thể cất tối tphát âm 1 node.Tất cả các node (bao hàm cả gốc) rất có thể đựng được nhiều tốt nhất 2t - 1 keys.Số con của một node ngay số keys trong các số đó cùng với cùng một.Tất cả những keys của một node được sắp xếp theo vật dụng từ bỏ gia tăng. Child giữa nhị keys k1 và k2 cất toàn bộ các keys nằm trong khoảng từ bỏ k1 với k2.B-Tree cải tiến và phát triển với thu hẹp từ nơi bắt đầu nhưng không hệt như cây kiếm tìm tìm nhị phân. Cây kiếm tìm kiếm nhị phân cải cách và phát triển rộng dần dần.Giống nlỗi cây search tìm nhị phân thăng bằng, sự phức hợp về thời gian nhằm search tìm, cyếu và xóa là hơi mập.

Sau đấy là một ví dụ B-Tree mức độ buổi tối tgọi 3. Lưu ý rằng vào thực tế B-Cây, cực hiếm của mức độ buổi tối tđọc là nhiều hơn thế nữa 3.

*

Tìm kiếm

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

Traverse

Traversal cũng như như Invers traversal của cây nhị phân. Chúng tôi bắt đầu tự child ở phía trái, in lại các child còn sót lại phía trái, kế tiếp lặp lại quá trình tương tự như đến child và key sót lại. Cuối thuộc, in ngược lại child đầu bên phải.

Xem thêm: Nguyên Tắc Phối Màu Đỏ Kết Hợp Với Màu Gì ? Cẩm Nang Mix Đồ Toàn Tập

Insert

Một key bắt đầu luôn được chèn vào tại node leaf. Điện thoại tư vấn key được cnhát vào là k. Giống như BST, họ bước đầu từ gốc cùng trở xuống cho tới lúc bọn họ tìm được một node leaf. Lúc họ tìm kiếm được một node leaf, bọn họ chèn keys vào node leaf kia. Không y như BST, chúng ta tất cả một phạm vi được xác định trước về số lượng các keys mà một node có thể chứa. Vì vậy, trước lúc cyếu một key vào node, chúng tôi đảm bảo an toàn rằng node rất có thể được add thêm key.

Làm nắm làm sao nhằm đảm bảo rằng một node bao gồm không gian gồm sẵn đến key trước khi key được cnhát vào? Chúng tôi sử dụng một method được Call là splitChild () được sử dụng nhằm phân chia một child của một node. Xem biểu đồ sau đây nhằm gọi được sự phân chia. Trong sơ vật dụng sau, child y của x đang rất được chia thành hai node y và z. Lưu ý rằng các method splitChild dịch rời một key lên và đấy là nguyên do B-Trees béo lên không giống như BSTs cải cách và phát triển.

*

Nhỏng đã đàm luận nghỉ ngơi trên, để ckém một key new, bọn họ đi trường đoản cú nơi bắt đầu cho tới leaf. Trước khi đi sang một node, trước tiên chúng ta bình chọn xem node vẫn đầy. Nếu node là đầy, Cửa Hàng chúng tôi phân chia nó nhằm sinh sản không gian.

Deletion process

Xoá từ B-Trees là phức tạp hơn là cnhát, chính vì chúng ta có thể xóa một khoá tự ngẫu nhiên node nào - không những là leaf - với Khi họ xóa một key một node, họ vẫn bắt buộc sắp xếp lại những child của node.

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

Delete method xóa k ngoài cây con được bắt đầu từ x. Method này đảm bảo an toàn rằng bất kể bao giờ nó từ Điện thoại tư vấn mình 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 tđọc t. Lưu ý rằng điều kiện này đòi hỏi một keys đặc trưng rộng nút tối tphát âm trải nghiệm vì điều kiện cây B thường thì, cho nên vì thế đôi khi một keys rất có thể yêu cầu được dịch chuyển vào trong 1 child node trước khi đệ quy child kia. Điều khiếu nại được bức tốc này có thể chấp nhận được 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 nước ngoài lệ, bọn họ sẽ giải thích). Bạn đề xuất giải thích những quánh tả sau nhằm xóa trường đoản cú cây B với việc đọc biết rằng ví như node gốc x phát triển thành node bên phía trong không tồn tại keys (tình huống này rất có thể xẩy ra vào ngôi trường đúng theo 2c và 3b sau đó chúng ta xóa x, và x chỉ gồm nhỏ x .c1 biến đổi gốc mới của cây, giảm chiều cao của cây bằng một cây với bảo quản gia sản mà gốc của cây chứa ít nhất một keys (trừ Lúc cây trống).

Xem thêm: Tại Sao Nên Sử Dụng Thuật Ngữ " Khoảng Tham Chiếu Là Gì, Xây Dựng Khoảng Tham Chiếu Cho Phòng Xét Nghiệm

*
*

Để hiểu rõ rộng về những thuật tân oán áp dụng vào B-Trees cần phải có thêm tìm hiểu không giống.