Что такое B-Tree?

«Что такое B-Tree?» — вопрос из категории Алгоритмы и структуры данных, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

B-Tree (B-дерево) — это сбалансированное дерево поиска, оптимизированное для хранения данных на дисках и в файловых системах. Его ключевая особенность — минимизация операций ввода-вывода за счёт хранения множества ключей в одном узле и поддержания большого коэффициента ветвления.

Основные свойства:

  • Все листовые узлы находятся на одном уровне.
  • Каждый узел (кроме корня) содержит от t-1 до 2t-1 ключей, где t — минимальная степень дерева.
  • Операции поиска, вставки и удаления выполняются за логарифмическое время O(log n).
  • Дерево остаётся сбалансированным после каждой модификации.

Практическое применение: B-Tree (и его вариация B+Tree) широко используется в системах управления базами данных (СУБД) для организации индексов. Например, в MySQL (InnoDB) и PostgreSQL индексы по умолчанию реализованы как B+Tree, что обеспечивает эффективный поиск по диапазону значений и точечные запросы.

-- Создание индекса в SQL. Под капотом СУБД, скорее всего, построит B-Tree.
CREATE INDEX idx_user_email ON users(email);

Преимущества B-Tree:

  • Эффективность для больших данных: Оптимизирован для работы с медленными устройствами хранения.
  • Поддержка диапазонных запросов: Позволяет быстро находить все значения в заданном интервале.
  • Автоматическая балансировка: Структура остаётся оптимальной при добавлении и удалении данных.