Что характерно для данных временных рядов?
- Что такое временные ряды?
Поток измерений, дописываемых во времени: метрики, датчики, котировки. Изменения редки, запросы почти всегда по интервалу времени с агрегацией.
- Запись огромными потоками, по возрастанию времени
- Старые данные агрегируют и удаляют
- Специальные базы: Prometheus, VictoriaMetrics, InfluxDB, TimescaleDB, ClickHouse
А ещё Сжатие разностями даёт ~1–2 байта на точку
Подробно
Эти свойства позволяют специализированным хранилищам делать то, что универсальной базе недоступно: разбивать данные на отрезки по времени, эффективно сжимать близкие значения и автоматически удалять или укрупнять старые записи. Отсюда типичный подход к хранению: свежие данные держат в полном разрешении, старые агрегируют, совсем старые удаляют по политике. Для небольших объёмов обычной реляционной базы с партиционированием по времени вполне достаточно.
Что хотят услышать
- Характер данных и запросов.
- Почему для них отдельные хранилища.
Частые ошибки
- Хранить метрики в обычной таблице без партиционирования и срока хранения.
- Считать, что специализированное хранилище нужно при любом объёме.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Записи с меткой времени добавляются в конец, редко меняются, читаются интервалами
- ✗Записи постоянно обновляются и удаляются по произвольным условиям, порядок не важен
- ✗Данные не имеют естественного порядка
- ✗Каждая запись связана со всеми остальными
Что спросят дальше
- Почему такие данные хорошо сжимаются?
- Зачем нужно прореживание старых данных?
Разбор темы
- Базы данных временных рядов
Чем особенны time-series, модель measurement/tags/fields, сжатие и chunking, downsampling/retention и когда хватит обычной БД.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.