Примеры использования ADB to ADB Connector
В статье показаны примеры чтения и записи данных между двумя кластерами ADB с использованием ADB to ADB Connector. При выполнении примера соблюдены следующие условия:
-
Локальный кластер ADB развернут согласно руководству Online-установка.
-
Удаленный кластер ADB развернут согласно руководству Online-установка. Мастер-хост кластера —
bds-mdw-ext. -
База данных с именем
adbсуществует в обоих кластерах. -
Пользователь с именем
adb_to_adbи паролем123создан в БД удаленного кластера. -
Для пользователя
adb_to_adbнастроен доступ к базе данныхadbв удаленном кластере с мастер-хоста локального кластера. Для этой цели отредактирован файл pg_hba.conf согласно руководству Настройка ADB to ADB connector:host all adb_to_adb 10.92.17.84/32 passwordгде
10.92.17.84/32— адрес мастер-хоста локального кластера ADB (с подсетью). -
ADB to ADB Connector установлен на стороне локального и удаленного кластеров согласно статье Установка ADB to ADB connector.
Чтение данных
Чтобы проверить чтение данных из удаленного кластера в локальный кластер ADB, выполните следующие шаги:
-
Подключитесь к базе данных
adbудаленного кластера ADB под пользователемgpadmin(например, черезpsql) и создайте таблицуauthor:CREATE TABLE author(id INT NOT NULL, name TEXT NOT NULL) WITH (appendoptimized=true) DISTRIBUTED BY(id); -
Добавьте данные в таблицу
authorна стороне удаленного кластера:INSERT INTO author(id, name) VALUES (1,'Virginia Woolf'), (2,'J.R.R. Tolkien'), (3,'Harper Lee'), (4,'J.D. Salinger'), (5,'George Orwell'), (6,'John Steinbeck'), (7,'Margaret Mitchell'), (8,'Alan Moore'), (9,'Jack Kerouac'), (10,'Ernest Hemingway'); -
Предоставьте необходимые права пользователю
adb_to_adbна доступ к новой таблицеauthor(на стороне удаленного кластера):GRANT SELECT, INSERT ON public.author TO adb_to_adb; -
Подключитесь к базе данных
adbлокального кластера ADB под пользователемgpadmin(например, черезpsql) и последовательно создайте следующие объекты:-
Сервер
test_server:CREATE SERVER test_server FOREIGN DATA WRAPPER adb_fdw OPTIONS ( host 'bds-mdw-ext', port '5432', dbname 'adb', use_remote_estimate 'true'); -
Сопоставление пользователя
gpadmin:CREATE USER MAPPING FOR gpadmin SERVER test_server OPTIONS (user 'adb_to_adb', password '123'); -
Сторонняя таблица
test_table:CREATE FOREIGN TABLE test_table (id INT, name TEXT) SERVER test_server OPTIONS (table_name 'author');
-
-
Выполните выборку данных из таблицы
test_table. Убедитесь, что данные, добавленные на стороне удаленного кластера, доступны для чтения в локальном кластере:SELECT * FROM test_table ORDER BY id;Результат:
id | name ----+------------------- 1 | Virginia Woolf 2 | J.R.R. Tolkien 3 | Harper Lee 4 | J.D. Salinger 5 | George Orwell 6 | John Steinbeck 7 | Margaret Mitchell 8 | Alan Moore 9 | Jack Kerouac 10 | Ernest Hemingway (10 rows)
Запись данных
Чтобы проверить запись данных из локального в удаленный кластер ADB, выполните следующие шаги:
-
Выполните шаги 1—4, приведенные выше (если они не были пройдены ранее).
-
Подключитесь к базе данных
adbлокального кластера ADB под пользователемgpadmin(например, черезpsql) и добавьте данные в стороннюю таблицуtest_table:INSERT INTO test_table(id, name) VALUES (11, 'Fyodor Dostoevsky'), (12, 'Alexander Pushkin'), (13, 'Mikhail Bulgakov'); -
Подключитесь к базе данных
adbудаленного кластера ADB под пользователемgpadmin(например, черезpsql) и проверьте наличие новых кортежей в таблицеauthor:SELECT * FROM author ORDER BY id;Результат содержит новые данные, пришедшие из исходного кластера ADB:
id | name ----+------------------- 1 | Virginia Woolf 2 | J.R.R. Tolkien 3 | Harper Lee 4 | J.D. Salinger 5 | George Orwell 6 | John Steinbeck 7 | Margaret Mitchell 8 | Alan Moore 9 | Jack Kerouac 10 | Ernest Hemingway 11 | Fyodor Dostoevsky 12 | Alexander Pushkin 13 | Mikhail Bulgakov (13 rows)