Почему данные временных рядов сжимаются заметно лучше обычных?
- Как сжимаются временные ряды?
Метки времени идут с регулярным шагом, значения меняются плавно — хранят разности (delta-of-delta для времени, XOR соседних значений для чисел), которые занимают считаные биты.
- Схема Gorilla (Facebook): ~1,4 байта на точку вместо 16
- Колоночное хранение рядов дополнительно помогает сжатию
- Случайные значения сжимаются хуже — сжатие зависит от данных
А ещё Prometheus, VictoriaMetrics, InfluxDB используют похожие приёмы
Подробно
Если точки идут через равные промежутки, разность между соседними метками постоянна, и разность этих разностей почти всегда равна нулю — такие последовательности упаковываются исключительно плотно. Значения метрик тоже меняются плавно, поэтому вместо полного числа хранят его отличие от предыдущего. На реальных данных это даёт сжатие в разы по сравнению с обычным хранением, что критично при миллионах точек в секунду. Важно не путать это со снижением точности: сжатие здесь без потерь, а вот прореживание старых данных — отдельный осознанный приём для экономии места на длинном горизонте.
Что хотят услышать
- Почему ряды хорошо сжимаются.
- Дельта-кодирование и XOR для чисел с плавающей точкой.
Частые ошибки
- Путать сжатие без потерь с прореживанием данных.
- Хранить метрики в общей реляционной таблице и удивляться объёму.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Временные ряды хранятся в текстовом виде, который лучше сжимается
- ✓Метки идут равномерно, соседние значения близки — хранят разности, а не числа
- ✗Сжатие достигается за счёт округления значений и выбрасывания повторяющихся точек ряда
- ✗Метки времени в рядах вообще не хранятся
Что спросят дальше
- Чем downsampling отличается от сжатия?
- Какая ошибка моделирования сильнее всего вредит базе временных рядов?
Разбор темы
- Базы данных временных рядов
Чем особенны time-series, модель measurement/tags/fields, сжатие и chunking, downsampling/retention и когда хватит обычной БД.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.