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

Сравнение методов INSERT и MatrixGate:
| Метод записи | Преимущества | Недостатки | Сценарии использования |
|---|---|---|---|
| Прямой INSERT | Простой интерфейс | Низкая пропускная способность | Сценарии с низкой нагрузкой: сотни тысяч точек данных в секунду |
| MatrixGate | Высокая пропускная способность Почти в реальном времени |
Требуется дополнительное развертывание и эксплуатационные усилия | Сценарии с высокой нагрузкой: миллионы точек данных в секунду |
Тесты показывают, что производительность загрузки данных с помощью MatrixGate примерно в 79 раз выше, чем у InfluxDB.
MatrixGate предоставляет следующие режимы работы:
Ниже приведены примеры использования этих режимов для загрузки данных в таблицу. Схема целевой таблицы dest выглядит следующим образом:
=# CREATE TABLE dest(
time timestamp,
c1 int,
c2 text
)USING MARS3
DISTRIBUTED BY(c1)
ORDER BY(c1);
В режиме службы фоновый процесс работает постоянно и предоставляет HTTP-интерфейс для отправки временных рядов. Это стандартный метод, используемый в рабочих средах.
Для использования режима службы сначала необходимо создать файл конфигурации, указав параметры подключения к базе данных и целевой таблицы.
$ 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 | Разделитель полей | , |
Далее запустите 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
После успешного запуска используйте инструмент 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 см. в документации.
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
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 ','
Другие способы загрузки данных из файлов см. в разделе Загрузка файлов.
Режим миграции MatrixGate обеспечивает миграцию одной таблицы с высокой скоростью. Поддерживается перенос таблиц из других кластеров Greenplum 5, Greenplum 6 или YMatrix в текущий кластер YMatrix. Основные сценарии использования:
Примечание!
Подробную информацию о режиме миграции см. в разделе Инструмент миграции одной таблицы — mxgate. Для миграции всей базы данных обратитесь к Инструменту миграции всей базы данных — mxshift.
Примечание!
Полный обзор инструмента MatrixGate доступен в разделе MatrixGate.