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

Почему данные временных рядов сжимаются заметно лучше обычных?

MiddleБазы временных рядов
Ещё спрашивают так:
  • Как сжимаются временные ряды?
Коротко

Метки времени идут с регулярным шагом, значения меняются плавно — хранят разности (delta-of-delta для времени, XOR соседних значений для чисел), которые занимают считаные биты.

  • Схема Gorilla (Facebook): ~1,4 байта на точку вместо 16
  • Колоночное хранение рядов дополнительно помогает сжатию
  • Случайные значения сжимаются хуже — сжатие зависит от данных

А ещё Prometheus, VictoriaMetrics, InfluxDB используют похожие приёмы

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

Подробно

Если точки идут через равные промежутки, разность между соседними метками постоянна, и разность этих разностей почти всегда равна нулю — такие последовательности упаковываются исключительно плотно. Значения метрик тоже меняются плавно, поэтому вместо полного числа хранят его отличие от предыдущего. На реальных данных это даёт сжатие в разы по сравнению с обычным хранением, что критично при миллионах точек в секунду. Важно не путать это со снижением точности: сжатие здесь без потерь, а вот прореживание старых данных — отдельный осознанный приём для экономии места на длинном горизонте.

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

  • Почему ряды хорошо сжимаются.
  • Дельта-кодирование и XOR для чисел с плавающей точкой.

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

  • Путать сжатие без потерь с прореживанием данных.
  • Хранить метрики в общей реляционной таблице и удивляться объёму.

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

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

Показать варианты и ответ
  • ✓Метки времени идут почти равномерно, а соседние значения близки — поэтому хранят разности разностей и различия между соседями вместо самих чисел
  • ✗Временные ряды хранятся в текстовом виде, который лучше сжимается
  • ✗Из ряда автоматически удаляются повторяющиеся точки
  • ✗Сжатие достигается только за счёт уменьшения точности значений

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

  • Чем downsampling отличается от сжатия?
  • Какая ошибка моделирования сильнее всего вредит базе временных рядов?

Разбор темы

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

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

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

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

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