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

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

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

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

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

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

Подробно

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

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

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

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

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