Характеристики вставки данных в сценариях временных рядов

В этом документе описываются характеристики вставки данных при работе с временными рядами, а также архитектура вставки данных в YMatrix в таких сценариях.

1. Характеристики вставки данных в сценариях временных рядов

Хранение данных — одна из ключевых функций базы данных. После завершения моделирования данных и установления соединений с базой необходимо записать данные в таблицы.

Вставка данных в сценариях временных рядов имеет следующие основные особенности:

  • Большой объём данных, требующий высокой пропускной способности
  • Сложные режимы вставки, такие как пакетное объединение, запись с нарушением порядка и передача данных с разной частотой

1.1 Большой объём данных

Одной из типичных черт вставки данных временных рядов является их огромный масштаб. Это проявляется в трёх практических аспектах:

  • Большое количество объектов (устройств/клиентов): Общее число устройств может составлять от сотен тысяч до миллионов и продолжает расти.
  • Высокое количество и разнообразие метрик: Например, в сценариях с подключёнными автомобилями каждый автомобиль может генерировать тысячи метрик.
  • Высокая частота сбора данных: Метрики собираются с интервалом в секунду, некоторые требуют сбора каждые 10 миллисекунд.

В результате быстрый рост числа объектов в сочетании с высокой частотой сбора данных приводит к образованию огромных объёмов информации. Это создаёт серьёзную нагрузку на пропускную способность базы данных.

YMatrix разработал MatrixGate — инструмент для высокоскоростной вставки данных. Благодаря параллельной вставке данных на узлы данных (Segments), MatrixGate обеспечивает скорость вставки до сотен миллионов точек данных в секунду.

Примечание!
Подробности реализации mxgate см. в статье YMatrix - How YMatrix Achieves 50 Million Data Points/Second on a Single Node; отчёты по тестированию производительности — в YMatrix - Time-Series Database Insert Performance Benchmark: YMatrix is 78x Faster than InfluxDB; принципы работы — в разделе Data Ingestion Tools.

1.2 Сложные сценарии вставки

На практике задачи по вставке данных выходят за рамки больших объёмов и разнообразных источников. Они также включают сложные граничные случаи, такие как:

  • Пакетная передача с автоматическим объединением
  • Передача с нарушением порядка или с задержкой
  • Передача данных с разной частотой

1.2.1 Пакетная передача

В некоторых сценариях устройство не передаёт все собранные метрики сразу, а отправляет их несколькими пакетами. Эти частичные передачи должны быть объединены в одну запись, а не сохраняться как отдельные записи.

Для решения этой задачи YMatrix поддерживает функцию UPSERT. Подробные примеры использования и инструкции см. в разделе Batched Data Merge Scenario (UPSERT).

1.2.2 Передача с нарушением порядка и с задержкой

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

Передача с нарушением порядка происходит, когда после сбоя система сначала передаёт самые свежие данные, а затем постепенно заполняет пропущенные исторические данные. В результате входящие данные могут иметь временные метки, более ранние, чем уже сохранённые.

Поскольку эти два сценария, как правило, не требуют специальной обработки слияния со стороны базы данных, они далее не рассматриваются.

1.2.3 Разная частота

Под разной частотой подразумевается ситуация, когда метрики устройства собираются с разными интервалами. Например, одни метрики собираются каждую секунду, другие — каждые 2 секунды.

Передача данных с разной частотой может привести к большому количеству значений NULL в хранимых данных для метрик с более низкой частотой сбора. Значения NULL всё равно занимают место в хранилище: для таблиц HEAP — это column count / 8 байт; для таблиц MARS2 — RowGroup row count / 8 байт. Поэтому выбор решений следует тщательно оценивать в зависимости от степени появления значений NULL.

2 Обзор ввода данных в YMatrix

YMatrix поддерживает ввод данных из различных источников и в различных форматах. На следующей схеме показаны типичные источники данных и методы их хранения.

Примечание!
Нажмите на значок, чтобы перейти к соответствующей документации.

MatrixGate YMatrix COPY FDW EMQ PXF S3 Hive HBase HDFS Oracle SQL Server MySQL PostgreSQL MongoDB Kafka document Greenplum MatrixDB RESTful API stdin Apache NiFi JDBC/ODBC/libpq Java Python