Настройка ADB to ADB Connector

Содержание

Для отправки данных из локального (исходного) кластера ADB в удаленный (целевой) кластер ADB через ADB to ADB Connector необходимо предварительно создать следующие объекты на стороне локального кластера:

  1. Server — инкапсулирует информацию о соединении с внешним источником данных.

  2. User mapping — обеспечивает аутентификацию во внешнем источнике данных посредством сопоставления пользователей.

  3. Foreign table — таблица ADB, определяющая структуру внешних данных. Foreign-таблица не хранит данные в ADB, но к ней можно обращаться с помощью запросов как к обычной таблице.

Примеры использования перечисленных объектов для отправки данных между кластерами ADB приведены в статье Примеры использования ADB to ADB Connector.

ВАЖНО
  • Для каждого целевого кластера ADB, в который планируется отправлять запросы из исходного кластера ADB, достаточно создать один server и один user mapping. Foreign-таблиц может быть несколько, если отправка запросов запланирована в различные таблицы ADB.

  • Все опции, приведенные в таблицах ниже (Опции сервера, Опции сопоставления пользователей, Опции foreign-таблицы), при объявлении объектов заполняются в строковом виде (в одинарных кавычках '). Столбец Тип в таблицах показывает, какой тип данных будет использоваться при валидации вводимых значений.

Server

Для создания сервера предназначена команда CREATE SERVER, базовый синтаксис которой приведен ниже:

CREATE SERVER <server_name> [ TYPE '<server_type>' ] [ VERSION '<server_version>' ]
    FOREIGN DATA WRAPPER <fdw_name>
    [ OPTIONS ( [ <option> '<value>' [, ... ]] ) ]

где:

  • <server_name> — имя сервера в ADB. Должно быть уникальным в рамках текущей базы данных ADB.

  • <server_type> — необязательный параметр, определяющий тип сервера.

  • <server_version> — необязательный параметр, определяющий версию сервера.

  • <fdw_name> — имя обертки внешних данных (foreign data wrapper). Необходимо указать adb_fdw — foreign data wrapper, который создается автоматически после установки коннектора (см. шаг 4 в статье Установка ADB to ADB Connector).

  • <option> — параметры сервера, определяющие детали подключения к внешнему источнику данных. Список возможных опций для ADB to ADB Connector приведен в таблице Опции сервера ниже. Обратите внимание, что эти опции (за исключением host, port, num_segments) могут быть определены как на уровне сервера, так и на уровне foreign-таблицы. При этом опции, отмеченные как обязательные, должны быть указаны на одном из уровней.

  • <value> — значения соответствующих параметров <option>.

ПРИМЕЧАНИЕ
  • Чтобы создать сервер, пользователю необходима привилегия USAGE для обертки внешних данных adb_fdw. Пользователь, создавший сервер, становится его владельцем.

  • Полную версию синтаксиса команды CREATE SERVER можно посмотреть в документации Greenplum.

  • Для редактирования параметров сервера предназначена команда ALTER SERVER, для удаления — DROP SERVER.

Опции сервера
Имя Тип Описание Default Обязательность

host

TEXT

IP-адрес или имя master-хоста удаленного кластера ADB.

Правила валидации параметра host см. ниже

 — 

Да

port

TEXT

Номер порта для подключения к master-хосту удаленного кластера ADB.

Правила валидации параметра port см. ниже

 — 

Да

dbname

TEXT

Имя целевой БД на стороне удаленного кластера ADB

 — 

Да

mpp_execute

TEXT

Стратегия распределения обработки запроса. Возможно только одно значение — master.

Изменение опции mpp_execute не допускается. Выбор стратегии выполнения (master, all segments или any) производится коннектором ADB to ADB Connector автоматически в зависимости от вида запрошенной операции и результата планирования запроса

master

Нет

use_remote_estimate

BOOL

Флаг использования внешнего кластера при планировании запроса. Используется для оценки стоимости операций и расчета числа обработчиков на сегментах.

Если use_remote_estimate = true, запрашивается внешний кластер (создается параллельный курсор) и число обработчиков определяется согласно набору endpoints параллельного курсора. В противном случае число обработчиков берется из num_segments, а если этот параметр не заполнен — используется текущее значение количества сегментов. Дополнительную информацию можно получить в статье Обзор ADB to ADB Connector.

Возможные значение: true, false

false

Нет

num_segments

INT

Число обработчиков на сегментах для обработки данных, поставляемых с endpoints параллельного курсора.

Если число сегментов локального кластера меньше числа endpoints, то некоторым обработчикам локального кластера достанется больше endpoints (что создаст "перекос" в обработке данных — processing skew).

Для ввода допускаются целые положительные числа >= 1

 — 

Нет

fdw_startup_cost

DOUBLE

Оценка стоимости получения первой строки от источника данных.

Для ввода допускаются дробные положительные числа

100.0

Нет

fdw_tuple_cost

DOUBLE

Оценка стоимости получения одной строки от источника данных.

Для ввода допускаются дробные положительные числа

0.01

Нет

fetch_size

INT

Число строк в батче при чтении данных от источника.

Для ввода допускаются целые положительные числа >= 1

100

Нет

updatable

BOOL

Определяет, будут ли разрешены изменения в таблицах на стороне удаленного кластера ADB посредством команды INSERT.

Возможные значение: true, false

true

Нет

Правила валидации опций host и port
  • Максимальная длина имени хоста в опции host — 255 символов.

  • В значении опции host допускаются только числовые литералы 0-9, ASCII символы a-zA-Z, дефис -, нижнее подчеркивание _ и точка ..

  • Максимальная длина номера порта в опции port — 5 символов.

  • В значении опции port допускаются только числовые литералы 0-9.

User mapping

Для создания сопоставления пользователей предназначена команда CREATE USER MAPPING, базовый синтаксис которой приведен ниже:

CREATE USER MAPPING FOR { <username> | USER | CURRENT_USER | PUBLIC }
    SERVER <server_name>
    [ OPTIONS ( <option> '<value>' [, ... ] ) ]

где:

  • <username> — имя пользователя в базе данных ADB. Наряду с явным указанием пользователя, допускается ввод следующих констант:

    • USER или CURRENT_USER — текущий пользователь, установивший соединение с ADB.

    • PUBLIC — все существующие и будущие пользователи ADB.

  • <server_name> — имя сервера.

  • <option> — параметры сопоставления пользователей. Как правило, включают имя пользователя и пароль для подключения к внешнему источнику данных. Список возможных опций для ADB to ADB Connector приведен в таблице Опции сопоставления пользователей ниже.

  • <value> — значения соответствующих параметров <option>.

ПРИМЕЧАНИЕ
  • Чтобы создать user mapping, необходимо быть владельцем соответствующего сервера.

  • Полную версию синтаксиса команды CREATE USER MAPPING можно посмотреть в документации Greenplum.

  • Для редактирования параметров user mapping предназначена команда ALTER USER MAPPING, для удаления — DROP USER MAPPING.

Опции сопоставления пользователей
Имя Тип Описание Default Обязательность

user

TEXT

Имя пользователя в БД удаленного кластера ADB

 — 

Да

password

TEXT

Пароль пользователя в БД удаленного кластера ADB

 — 

Да

Настройка доступов в файле pg_hba.conf

 

Наряду с созданием user mapping, необходимо обеспечить доступ выбранного пользователя к удаленной базе данных ADB из локального кластера. Для этого добавьте следующую запись в файл pg_hba.conf на стороне удаленного кластера ADB:

host    <database_name>  <remote_user>       <local_master_address>      password

где:

  • <database_name> — имя целевой базы данных в удаленном кластере ADB. Значение all соответствует всем БД.

  • <remote_user> — имя пользователя в удаленной базе данных ADB (см. опцию user выше).

  • <local_master_address> — IP-адрес master-хоста в локальном ADB-кластере (из которого планируется отправка запросов через коннектор). Необходимо использовать номер подсети. Например, 10.92.17.84/32.

Редактирование файла pg_hba.conf возможно в web-интерфейсе ADCM. Для этого заполните параметр Custom pg_hba section на вкладке Configuration сервиса ADB в удаленном кластере ADB. Чтобы применить изменения, нажмите Save и запустите сервисное действие Reconfigure.

Foreign table

Для создания foreign-таблицы предназначена команда CREATE FOREIGN TABLE, базовый синтаксис которой приведен ниже:

CREATE FOREIGN TABLE [ IF NOT EXISTS ] <table_name> ( [
    <column_name> <data_type> [ COLLATE <collation> ] [ <column_constraint> [ ... ] ]
      [, ... ]
] )
    SERVER <server_name>
  [ OPTIONS ( <option> '<value>' [, ... ] ) ]

где:

  • <table_name> — имя foreign-таблицы в ADB.

  • <column_name> — имя столбца.

  • <data_type> — тип данных столбца.

  • <collation> — используемая для столбца сортировка (collation).

  • <column_constraint> — ограничение (constraint), определенное на уровне столбца. Имя ограничения <constraint_name> указывается опционально. Синтаксис:

    [ CONSTRAINT <constraint_name> ]
    { NOT NULL |
      NULL |
      DEFAULT <default_expr> }

    Возможные ограничения:

    • NOT NULL — указывает, что столбец не может содержать null-значений.

    • NULL — указывает, что столбец может содержать null-значения. Это ограничение используется по умолчанию (если не указано NOT NULL).

    • DEFAULT — определяет для столбца значение по умолчанию <default_expr>.

  • <server_name> — имя сервера.

  • <option> — параметры foreign-таблицы. Для ADB to ADB Connector все опции, определенные на уровне сервера (за исключением host, port, num_segments), могут быть переопределены на уровне foreign-таблиц (частично или полностью). При одновременном указании какой-либо опции для сервера и таблицы табличный уровень имеет больший приоритет. Дополнительно на уровне foreign table объявляются еще три опции, приведенные в таблице Опции foreign-таблицы ниже.

  • <value> — значения соответствующих параметров <option>.

ПРИМЕЧАНИЕ
  • Чтобы создать foreign-таблицу, пользователю необходима привилегия USAGE для соответствующего сервера, а также для всех типов данных, используемых в таблице. Пользователь, создавший foreign-таблицу, становится ее владельцем.

  • Полную версию синтаксиса команды CREATE FOREIGN TABLE можно посмотреть в документации Greenplum.

  • Для редактирования параметров foreign-таблицы предназначена команда ALTER FOREIGN TABLE, для удаления — DROP FOREIGN TABLE.

Опции foreign-таблицы
Имя Тип Описание Default Обязательность

schema_name

TEXT

Имя схемы для обращения к таблице на стороне удаленного кластера ADB. Если параметр не указан, применяется схема таблицы table_name

 — 

Нет

table_name

TEXT

Имя целевой таблицы на стороне удаленного кластера ADB

 — 

Да

column_name

TEXT

Имя столбца целевой таблицы table_name

 — 

Нет

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней