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
)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.1.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
**********************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / | _ / _` | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.1.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
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: v5.1.0
Your Copy is Licensed to: yMatrix.cn; 2023-10-25; any
**********************************************************
PID 29429 stopped
Мониторинг службы
Вы можете использовать подкоманду mxgate watch для наблюдения за службой в реальном времени:
$ mxgate watch
**********************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / | _ / _` | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version:v5.1.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
**********************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _` | __| '__| \ \/ / | _ / _` | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.1.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 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.