Высокопроизводительный инструмент загрузки данных MatrixGate

Инструктивное видео доступно по ссылке YMatrix Data Ingestion

MatrixGate, сокращённо mxgate — это высокопроизводительный инструмент загрузки данных, входящий в состав YMatrix. Расположен в каталоге установки YMatrix по пути bin/mxgate. В настоящее время поддерживает загрузку данных через интерфейсы SDK, HTTP и STDIN. Поддерживаемые форматы данных: TEXT и CSV.
Загрузка данных с использованием mxgate значительно превосходит производительность нативных операторов INSERT, поскольку mxgate взаимодействует напрямую с узлами данных (Segments), минуя мастер-узел (Master) и устраняя его как узкое место.

MatrixGate в настоящее время поддерживает следующие функции:


1 Архитектура MatrixGate

Рабочий процесс загрузки данных в MatrixGate показан ниже:

Схема архитектуры MatrixGate

  1. Система сбора данных собирает данные с устройств или принимает данные, отправленные от устройств.
  2. Система сбора непрерывно передаёт данные в процесс службы MatrixGate (mxgate) в виде параллельных микропакетов.
  3. Процесс mxgate эффективно обменивается информацией о транзакциях и управлении с мастер-узлом YMatrix (Master).
  4. Данные отправляются напрямую на узлы хранения данных (Segments) и записываются параллельно с высокой скоростью.

Сравнение методов INSERT и MatrixGate:

Метод записи Преимущества Недостатки Сценарии использования
Прямой INSERT Простой интерфейс Низкая пропускная способность Сценарии с низкой нагрузкой: сотни тысяч точек данных в секунду
MatrixGate Высокая пропускная способность
Почти в реальном времени
Требуется дополнительное развертывание и эксплуатационные усилия Сценарии с высокой нагрузкой: миллионы точек данных в секунду

Тесты показывают, что производительность загрузки данных с помощью MatrixGate примерно в 79 раз выше, чем у InfluxDB.

2 Использование MatrixGate

MatrixGate предоставляет следующие режимы работы:

  • Режим службы
  • Командный режим
  • Режим миграции

Ниже приведены примеры использования этих режимов для загрузки данных в таблицу. Схема целевой таблицы dest выглядит следующим образом:

=# CREATE TABLE dest(
    time timestamp,
    c1 int,
    c2 text
)USING MARS3
DISTRIBUTED BY(c1)
ORDER BY(c1);

2.1 Режим службы

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

2.1.1 Генерация файла конфигурации

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

$ mxgate config --db-database test \
            --db-master-host localhost \
            --db-master-port 5432 \
            --db-user mxadmin \
            --target public.dest \
            --time-format raw \
            --delimiter ',' \
            > mxgate.conf

Приведённая команда задаёт следующие параметры:

Параметр Описание Значение
--db-database Имя базы данных test
--db-master-host Хост базы данных localhost
--db-master-port Порт базы данных 5432
--db-user Пользователь базы данных mxadmin
--target Целевая таблица public.dest
--time-format Формат времени raw (обычный текст)
--delimiter Разделитель полей ,

2.1.2 Запуск MatrixGate

Далее запустите MatrixGate, указав созданный файл конфигурации:

$ mxgate start --config mxgate.conf
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / |  _ / _` | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_| | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-25; any
******************************************************
Launching MatrixGate daemon...
MatrixGate daemon started successfully

2.1.3 Отправка данных

После успешного запуска используйте инструмент curl, чтобы отправить HTTP-запрос и передать данные.

Примечание!
В рабочих средах для отправки данных рекомендуется использовать HTTP-библиотеку вашего языка программирования.

Создайте тестовый файл данных rows_header.csv:

$ vi rows_header.csv

Содержимое:

public.dest
2021-01-01 00:00:00,1,a1
2021-01-01 00:00:00,2,a2
2021-01-01 00:00:00,3,a3

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

Отправьте данные:

$ curl http://localhost:8086/ -X POST -H 'Content-Type: text/plain' --data-binary "@rows_header.csv"

По умолчанию MatrixGate привязывается к порту 8086. Этот порт можно изменить в конфигурационном файле.

Выполните запрос для проверки загруженных данных:

=# SELECT * FROM dest;
        time         | c1 | c2
---------------------+----+-----
 2021-01-01 00:00:00 | 11 | a11
 2021-01-01 00:00:00 | 12 | a12
 2021-01-01 00:00:00 | 13 | a13
(3 rows)

Подробную информацию о параметрах API см. в документации.

2.1.4 Управление работой

MatrixGate предоставляет дополнительные команды для управления работой службы.

Проверка состояния

$ mxgate status
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / |  _ / _` | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_ic) | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-25; any
******************************************************
PID          29429 alive
Launched At  2023-07-26 08:26:22
Up For       4 minutes 12 seconds
Binary       /opt/ymatrix/matrixdb5/bin/mxgated
Log          /home/mxadmin/gpAdminLogs/matrixgate.2023-07-26_082622-29429.log
Config       /home/mxadmin/mxgate.conf

This output shows the service status, configuration file path, and log location, which are useful for troubleshooting.

Stop Service

$ mxgate stop
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / |  _ / _` | __/ _ \
| |  | | (_| | |_| |  | |>  <| |_| | (_ic) | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-25; any
******************************************************
PID 29429 stopped

Мониторинг службы

Используйте подкоманду mxgate watch для непрерывного мониторинга службы:

$ mxgate watch
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / |  _ / _` | __/ _ \
| |  | | (_ic) | |_| |  | |>  <| |_| | (_ic) | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version:v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-25; any
******************************************************
watch cmd will run forever until killed, you can use watch -T n to change the duration to n seconds;and you can use mxgate watch --info to get info of columns;
                 Time          WCount          ICount        WSpeed/s        ISpeed/s  WBandWidth MB/S     BlocakItems
  2022-04-28 15:20:58        14478858        14527011         2598081         2627887            2395               0
  2022-04-28 15:21:01        22231035        22633254         2584059         2702081            2222               0
  2022-04-28 15:21:04        30494310        30500874         2754425         2622540            3551               0
  2022-04-28 15:21:07        38004210        38032956         2503300         2510694            2862               0
  2022-04-28 15:21:10        46188696        46298223         2728162         2755089            2227               0
  ...

Альтернативно, используйте mxgate watch --history для просмотра исторической статистики:

$ mxgate watch --history
******************************************************
 __  __       _        _       ____       _
|  \/  | __ _| |_ _ __(_)_  __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / |  _ / _` | __/ _ \
| |  | | (_ic) | |_| |  | |>  <| |_| | (_ic) | ||  __/
|_|  |_|\__,_|\__|_|  |_/_/\_\\____|\__,_|\__\___|
  Version: v5.2.0
  Your Copy is Licensed to: yMatrix.cn; 2023-10-25; any
******************************************************
                TIME RANGE                | SPEED/S  | BANDWIDTH MB/S  | BLOCK ITEMS
  2023-07-28 16:00:00-2023-07-28 17:00:00 |  2208010 |         1254.48 |           0
  2023-07-28 17:00:00-2023-07-28 18:00:00 |  1157920 |         1327.00 |           0
  2023-07-28 18:00:00-2023-07-28 19:00:00 |  2228666 |         2162.32 |           0
  2023-07-28 19:00:00-2023-07-28 20:00:00 |  1371092 |         2881.30 |           0
  2023-07-28 20:00:00-2023-07-28 21:00:00 |  1575320 |         2608.20 |           0


2.2 Command-Line Mode

Command-line mode is used for one-time data file ingestion. The process exits after completion.

Using the same data file, remove the first line (table name), keeping only data rows, then execute:

$ cat rows.csv | mxgate --source stdin --db-database test --db-master-host localhost --db-master-port 5432 --db-user mxadmin --time-format raw --target public.dest --parallel 2  --delimiter ',' 

Другие способы загрузки данных из файлов см. в разделе Загрузка файлов.


2.3 Режим миграции

Режим миграции MatrixGate обеспечивает миграцию одной таблицы с высокой скоростью. Поддерживается перенос таблиц из других кластеров Greenplum 5, Greenplum 6 или YMatrix в текущий кластер YMatrix. Основные сценарии использования:

  • Миграция одной таблицы
  • Экспорт в файл
  • Миграция с фильтрацией

Примечание!
Подробную информацию о режиме миграции см. в разделе Инструмент миграции одной таблицы — mxgate. Для миграции всей базы данных обратитесь к Инструменту миграции всей базы данных — mxshift.

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