Ответ
B-дерево — это сбалансированное дерево поиска, оптимизированное для систем, которые читают и записывают большие блоки данных (например, базы данных и файловые системы). Его основная цель — минимизация операций ввода-вывода (I/O) с диском.
Ключевые преимущества и применение:
- Высокая степень ветвления: Узел может содержать сотни ключей и ссылок, что уменьшает высоту дерева.
- Сбалансированность: Все листья находятся на одинаковой глубине, гарантируя предсказуемую производительность операций поиска, вставки и удаления — O(log n).
- Хранение на диске: Структура узла соответствует размеру блока диска (например, 4KB), что делает каждое чтение узла эффективным.
Типичные сценарии использования:
- Индексы в реляционных БД (PostgreSQL, MySQL InnoDB).
- Файловые системы (ext4, NTFS, HFS+).
- Ключ-значение хранилища.
Псевдокод структуры узла:
class BTreeNode {
int[] keys; // Массив ключей в узле (отсортирован)
BTreeNode[] children; // Массив указателей на дочерние узлы
int numKeys; // Текущее количество ключей в узле
boolean isLeaf; // Флаг, является ли узел листом
}