TGViewer
dev notes dev notes @junsenior · 1.39K subscribers
Post #192 1.62K
Индексы на основе журнала - не самый популярный тип индексов. Чаще используются индексы на основе B-дерева.
В отличии от журналированных индексов, которые индексируют базу данных сегментами по несколько мегабайт и всегда записывают эти сегменты на диск последовательно, B-деревья разбивают базу на сегменты по несколько килобайт (часто - по 4Kb) и читают/пишут по 1 странице за раз. Такое разбитие и такой размер сегментов отлично накладываются на нижележащие аппаратные слои.
Все страницы имеют свой адрес, и на основе таких ссылок строится дерево. Одна из страниц - корень, с него начинается любой поиск ключа. Все ключи во всех сегментах - отсортированы, и любой узел дерева содержит некоторый диапазон сегментов и несколько ссылок на поддиапазоны.
Если на странице заканчивается место, то создаётся ещё одна ссылка, и страница делится на две полу-пустых страницы.
Такой алгоритм гарантирует, что дерево будет сбалансированным, т.е. любой поиск будет занимать O(log n), что весьма быстро.
Чтобы обезопасить данные от потери во время сбоя, на диске так же хранится журнал упреждающей записи, в который все добавляемые данные записываются перед тем, как попасть в B-дерево.

А зачем тогда нужны LSM-деревья, если есть B-деревья? LSM-деревья реализуют как одну из подсистем во многих СУБД из-за того, что они быстрее при записи. Нам не нужно идти по дереву и искать место, куда добавить ключ. Нам достаточно записать данные в in-memory-структуру и сдублировать их в журнал, и всё. И для таких задач LSM-деревья до сих пор используются.
В свою очередь, B-деревья быстрее при чтении.
More from @junsenior
  1. Sep 28, 2026Сошлись две вещи. Первая - мой проект safemap.ai, про который я уже писал выше - интеракти…
  2. Sep 17, 2026Post #356
  3. Sep 15, 2026Увидел тут в x.com статистику вакансий по PHP и статистику вакансий по hh.ru в целом. Я на…
  4. Sep 12, 2026Вдохновившись проектом, где делали интерактивную карту с тем, как работает Postgres (писал…
  5. Sep 8, 2026OpenAI выложили блогпост https://openai.com/index/navier-stokes-solution/ Мы публикуем реш…
  6. Sep 8, 2026Если кто не знал, вокруг этого сейчас разгорается очень большой скандал с OpenAI. Кратко,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →