Примеры использования 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, выполните следующие шаги:

  1. Подключитесь к базе данных adb удаленного кластера ADB под пользователем gpadmin (например, через psql) и создайте таблицу author:

    CREATE TABLE author(id INT NOT NULL, name TEXT NOT NULL)
    WITH (appendoptimized=true)
    DISTRIBUTED BY(id);
  2. Добавьте данные в таблицу 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');
  3. Предоставьте необходимые права пользователю adb_to_adb на доступ к новой таблице author (на стороне удаленного кластера):

    GRANT SELECT, INSERT ON public.author TO adb_to_adb;
  4. Подключитесь к базе данных 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');
    • User mapping для пользователя gpadmin:

      CREATE USER MAPPING FOR gpadmin
      SERVER test_server
      OPTIONS (user 'adb_to_adb', password '123');
    • Foreign-таблица test_table:

      CREATE FOREIGN TABLE test_table (id INT, name TEXT)
      SERVER test_server
      OPTIONS (table_name 'author');
  5. Выполните выборку данных из таблицы 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. Выполните шаги 1-4, приведенные выше (если они не были пройдены ранее).

  2. Подключитесь к базе данных adb локального кластера ADB под пользователем gpadmin (например, через psql) и добавьте данные в foreign-таблицу test_table:

    INSERT INTO test_table(id, name) VALUES
    (11, 'Fyodor Dostoevsky'),
    (12, 'Alexander Pushkin'),
    (13, 'Mikhail Bulgakov');
  3. Подключитесь к базе данных 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)
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней