MatrixGate, сокращённо mxgate — это высокопроизводительный инструмент загрузки данных, поставляемый вместе с YMatrix. Он расположен в каталоге bin/mxgate установочного директории YMatrix и на данный момент поддерживает загрузку данных через интерфейсы SDK, HTTP и STDIN API. Поддерживаемые форматы данных: TEXT и CSV.
Производительность загрузки данных с использованием mxgate значительно выше, чем у родного оператора INSERT. Это обусловлено тем, что mxgate может напрямую взаимодействовать с процессами Segment, избегая узкого места в виде единой точки Master.
На данный момент mxgate в основном поддерживает следующие функции:
Логика загрузки данных с помощью MatrixGate показана на рисунке ниже:

Сравнение INSERT и MatrixGate:
| Метод записи | Преимущества | Недостатки | Применимые сценарии |
|---|---|---|---|
| Прямой INSERT | Простой интерфейс | Низкая пропускная способность | Низкая производительность, сотни тысяч точек данных/секунду |
| MatrixGate | Высокая пропускная способность Стандартная работа в реальном времени |
Требуется дополнительное развертывание, затраты на эксплуатацию | Высокая производительность, десятки миллионов точек данных/секунду |
MatrixGate предоставляет следующие режимы работы:
Ниже показано, как использовать эти два режима для загрузки данных в таблицу. Структура таблицы dest следующая:
=# CREATE TABLE dest(
time timestamp,
c1 int,
c2 text
)DISTRIBUTED 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: 4.2.0
Your Copy is Licensed to: yMatrix.cn; 2022-03-01; any
**********************************************************
Launching MatrixGate daemon...
MatrixGate daemon started successfully
After the startup is successful, use the curl tool to send an HTTP request to submit the data.
Notes!
In production environments, data is submitted using HTTP libraries supported by programming languages
The test data file rows_header.csv has been prepared, with the following content:
$ cat 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
When submitting data, the first row must specify the target table name, because the MatrixGate service may have multiple target tables.
Submit data:
curl http://localhost:8086/ -X POST -H 'Content-Type: text/plain' --data-binary "@rows_header.csv"
MatrixGate binds to port 8086 by default, which can be modified through configuration files.
Query the injected data:
=# 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)
For more detailed API parameters, please refer to Document.
MatrixGate also provides other operation and maintenance commands for operation and maintenance management.
View Status
$ mxgate status
**********************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / | _ / _` | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: 4.2.0
Your Copy is Licensed to: yMatrix.cn; 2022-03-01; any
**********************************************************
PID 15146 alive
Launched At 2021-09-01 14:59:03
Up For 26 seconds
Binary /usr/local/matrixdb-4.2.0.community/bin/mxgated
Log /home/mxadmin/gpAdminLogs/matrixgate.2021-09-01_145904.log
Config /home/mxadmin/mxgate.conf
You can see the service program running status, configuration files and log paths, which are used to track down problems.
Stop service
$ mxgate stop
**********************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / | _ / _` | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: 4.2.0
Your Copy is Licensed to: yMatrix.cn; 2022-03-01; any
**********************************************************
PID 15146 stopped
Команда mxgate stop останавливает сервис.
Наблюдение за работой сервиса
Вы можете использовать подкоманду mxgate watch для отслеживания состояния сервиса в реальном времени:
$ mxgate watch
**********************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / | _ / _` | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: 4.5.0
Your Copy is Licensed to: yMatrix.cn; 2022-05-14; 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
**********************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / | _ / _` | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: 4.5.0
Your Copy is Licensed to: yMatrix.cn; 2022-05-14; any
**********************************************************
TIME RANGE | SPEED/S | BANDWIDTH MB/S | BLOCK ITEMS
2022-04-28 16:00:00-2022-04-28 17:00:00 | 2208010 | 1254.48 | 0
2022-04-28 17:00:00-2022-04-28 18:00:00 | 1157920 | 1327.00 | 0
2022-04-28 18:00:00-2022-04-28 19:00:00 | 2228666 | 2162.32 | 0
2022-04-28 19:00:00-2022-04-28 20:00:00 | 1371092 | 2881.30 | 0
2022-04-28 20:00:00-2022-04-28 21:00:00 | 1575320 | 2608.20 | 0
Command line mode is used to pour data files into one go, and the process exits after the end.
It's still the data file just now. Remove the first row of the target table, only keep the data rows, and execute the following command:
$ 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 ','
Дополнительные способы доступа к файлам см. в разделе Доступ к файлам
Режим миграции mxgate主要用于用于 однонаборных таблиц, а также поддерживает миграцию таблиц данных из других кластеров Greenplum 5, Greenplum 6 и YMatrix в текущий кластер YMatrix. В настоящее время существует три основных варианта использования:
Примечание!
Подробное описание режима миграции см. в разделе Инструмент миграции одной таблицы — mxgate, а метод полной миграции базы данных — в разделе Инструмент миграции всей базы данных — mxshift.
Примечание!
Полное описание инструмента MatrixGate см. в разделе MatrixGate.