Вопрос с собеседования · Базы данных

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

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

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

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

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

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

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

Подробно

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования