Получить доступ

Как устроен путь записи в LSM-дереве, лежащем в основе Cassandra и подобных хранилищ?

SeniorКолоночные БД
Ещё спрашивают так:
  • Почему Cassandra быстро пишет?
Коротко

Запись → журнал (commit log) и memtable в памяти → при заполнении сброс неизменяемым отсортированным файлом SSTable → фоновая компакция сливает файлы.

  • Вся запись последовательная — отсюда скорость
  • Чтение проверяет memtable и несколько SSTable, отсекая лишние фильтрами Блума
  • Удаление — надгробие, место освобождается при компакции

А ещё Цена — усиление записи при компакции и всплески задержки

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Попробуйте сами

LSM-дерево: memtable, сброс и слияние

Подробно

Ключевая идея в том, что диск получает только последовательные записи: ничего не обновляется по месту, что радикально быстрее случайных обновлений B-tree. Плата возникает при чтении — искомый ключ может лежать в памяти или в любом из накопившихся файлов, поэтому обращений становится несколько; смягчают это фильтры Блума, отсеивающие файлы без нужного ключа, и разреженные индексы. Вторая часть цены — компакция: она потребляет диск и процессор в фоне и способна повлиять на задержки, а до её выполнения удалённые данные физически остаются на диске в виде надгробий. Отсюда практическое правило: такие хранилища выбирают под нагрузку с преобладанием записи и доступом по известному ключу.

Что хотят услышать

  • Путь записи по шагам.
  • Почему быстро.
  • Чтение, фильтры Блума, компакция и надгробия.

Частые ошибки

  • Считать удаление в таких хранилищах немедленным освобождением места.
  • Игнорировать влияние компакции на задержки и планирование дискового пространства.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Запись идёт в журнал и в структуру в памяти; та периодически сбрасывается на диск неизменяемым файлом, а фоновая компакция сливает файлы и удаляет устаревшие версии
  • ✗Каждая запись сразу обновляет страницу на диске по месту
  • ✗Записи накапливаются в памяти и теряются при сбое узла
  • ✗Данные пишутся в B-tree с перебалансировкой при каждой вставке

Что спросят дальше

  • Зачем нужны фильтры Блума при чтении?
  • Что такое надгробия и чем опасно их накопление?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем