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

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

MiddleБазы временных рядов
Ещё спрашивают так:
  • Почему нельзя класть user_id в теги временного ряда?
Коротко

Высокая кардинальность тегов: каждая уникальная комбинация тегов — отдельный ряд. id запроса или пользователя в теге порождает миллионы рядов и взрывает индекс.

  • В теги — измерения с малым числом значений: регион, сервис, метод
  • Уникальное — в значения полей, логи или трейсы
  • Партиционирование по времени, retention, сжатие — наоборот, полезные приёмы

А ещё Число рядов = произведение числа значений всех тегов

Подробно

Теги задают, как ряд разрезается и индексируется. Уникальные значения в теге (request id, user id) порождают миллионы отдельных рядов и взрывают индекс. Партиционирование по времени, retention и сжатие — наоборот, штатные и полезные приёмы.

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

  • Как теги определяют ряды и индекс.
  • Почему уникальные значения в тегах губительны.
  • Куда класть детали с высокой кардинальностью.

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

  • Класть высококардинальные идентификаторы в теги вместо полей.
  • Считать TSDB обычной БД без учёта профиля записи.

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

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

Показать варианты и ответ
  • ✗Использование retention policy
  • ✗Партиционирование по времени: запросы за период задевают слишком много партиций
  • ✗Сжатие старых данных
  • ✓Высокая кардинальность тегов: уникальный id в теге плодит ряды

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

  • Чем tag отличается от field в InfluxDB?
  • Зачем нужен downsampling?

Разбор темы

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

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

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

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

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