Sobes.tech
Back to questions
Senior
4

Как бы ты спроектировал таблицу для хранения высоконагруженных временных рядов с тегов (до нескольких миллионов записей в минуту)? Какие ключевые решения по структуре таблицы ты бы принял?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

Для хранения высоконагруженных временных рядов с тегами (до нескольких миллионов записей в минуту) я бы выбрал специализированную базу данных для временных рядов, например, TimescaleDB, InfluxDB или ClickHouse, поскольку они оптимизированы под такие нагрузки.

Основные решения по структуре таблицы:

  • Шардирование и партиционирование по времени — чтобы быстро удалять старые данные и ускорять запросы по временным диапазонам.
  • Индексация по тегам и времени — для быстрого поиска и агрегации.
  • Колонковое хранение — для эффективного сжатия и быстрого чтения нужных столбцов.
  • Использование сжатия данных — чтобы уменьшить объем хранимых данных.
  • Оптимизация записи — батчинг вставок, асинхронная запись.

Пример структуры таблицы в TimescaleDB:

CREATE TABLE metrics (
  time TIMESTAMPTZ NOT NULL,
  tag1 TEXT,
  tag2 TEXT,
  value DOUBLE PRECISION,
  PRIMARY KEY (time, tag1, tag2)
);

SELECT create_hypertable('metrics', 'time', chunk_time_interval => INTERVAL '1 day');

Такой подход позволяет эффективно хранить и быстро обрабатывать большие объемы временных данных с множеством тегов.