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

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

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

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

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

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

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

Типичной характеристикой записи данных в сценариях временных рядов является большой объем данных, который проявляется в трех аспектах на практике:

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

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

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

Примечание!
Подробности о принципе работы см. в разделе Инструмент ввода данных.

1.2 Сложные сценарии записи

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

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

1.2.1 Пакетная обработка

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

Для таких случаев YMatrix поддерживает обработку с помощью функции UPSERT. Подробное описание этого сценария и использование функции UPSERT см. в разделе Сценарий объединения пакетных данных (UPSERT).

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

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

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

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

1.2.3 Разные частоты

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

Асинхронная передача данных может привести к большому количеству значений NULL в метриках, собранных с низкой частотой, при хранении данных. При этом значения NULL также занимают определённый объём памяти: для таблиц HEAP накладные расходы составляют количество столбцов, делённое на 8 байт; для таблиц MARS2 — количество строк в RowGroup, делённое на 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