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