Какая ошибка моделирования сильнее всего вредит базе временных рядов?
- Почему нельзя класть user_id в теги временного ряда?
Высокая кардинальность тегов: каждая уникальная комбинация тегов — отдельный ряд. id запроса или пользователя в теге порождает миллионы рядов и взрывает индекс.
- В теги — измерения с малым числом значений: регион, сервис, метод
- Уникальное — в значения полей, логи или трейсы
- Партиционирование по времени, retention, сжатие — наоборот, полезные приёмы
А ещё Число рядов = произведение числа значений всех тегов
Подробно
Теги задают, как ряд разрезается и индексируется. Уникальные значения в теге (request id, user id) порождают миллионы отдельных рядов и взрывают индекс. Партиционирование по времени, retention и сжатие — наоборот, штатные и полезные приёмы.
Что хотят услышать
- Как теги определяют ряды и индекс.
- Почему уникальные значения в тегах губительны.
- Куда класть детали с высокой кардинальностью.
Частые ошибки
- Класть высококардинальные идентификаторы в теги вместо полей.
- Считать TSDB обычной БД без учёта профиля записи.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Использование retention policy
- ✗Партиционирование по времени: запросы за период задевают слишком много партиций
- ✗Сжатие старых данных
- ✓Высокая кардинальность тегов: уникальный id в теге плодит ряды
Что спросят дальше
- Чем tag отличается от field в InfluxDB?
- Зачем нужен downsampling?
Разбор темы
- Базы данных временных рядов
Чем особенны time-series, модель measurement/tags/fields, сжатие и chunking, downsampling/retention и когда хватит обычной БД.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.