Холодный сторадж своими руками: как вынести обратный индекс в базу и не пожалеть

Базы данных и системы хранения

Программный комитет ещё не принял решения по этому докладу

Целевая аудитория

Доклад будет интересен тем, кто столкнулся с ростом RAM из-за структур данных для поиска и хочет перенести индекс в БД А также тем, кто способы разделения данных на классы в диапазоне значений (например, по времени)

Тезисы

Обратный индекс — это основной способ поиска по ключевым словам среди множества документов. Когда он занимает значительную часть RAM, возникает необходимость вынести его во внешнюю память. Например, в базу данных. Профиль нагрузки при этом значительно меняется, смещаясь с вычислений на чтение данных и их пересылку по сети.

Расскажу, как мы прошли этот путь в сервисе метаданных Мониторинга Яндекса. Частые деплои в Kubernetes и других динамичных средах создают метрики с высокой кардинальностью, что приводит к росту использования RAM и повышению времени выполнения запросов. Нам был нужен слой холодного хранения, который бы позволил сохранить приемлемую скорость доступа при поиске метрик. Для этого мы поддержали возможность работы с блобом RoaringBitmap прямо в YDB с помощью пользовательских функций (UDF).

Разберём:

- почему подход «положить индекс в базу» не работает — какие способы хранения и структуры данных мы попробовали
- как вычисления рядом с данными (pushdown) решают проблему нагрузки на сеть
- как можно бороться с IO-амплификацией на низкоселективных запросах
- как сделать эффективный фильтр активности метрики в сервисе метаданных без постоянных походов за данными
- как всё это можно попробовать у себя

Разработчик в собственной системе Мониторинга в Yandex Cloud

Видео

Другие доклады секции

Базы данных и системы хранения