mysql_fdw

Это расширение QHB реализует обертку сторонних данных (FDW) для MySQL.

Обратите внимание, что эта версия mysql_fdw работает с QHB версии 1.5.1 и выше.


Установка

Обертка сторонних данных MySQL для QHB поставляется в виде пакета qhb-1.5.1-mysql-fdw.

Подключите репозиторий пакетов QHB и установите пакет расширения для выбранной платформы со страницы загрузки.

Примечание
Для работы расширения требуется установка клиентских библиотек MariaDB или MySQL (MySQL's C client library is needed. This library can be downloaded from the official MySQL website), например, для CentOS 7 и 8: yum install mariadb-devel.


Применение

Следующие параметры могут быть установлены для объекта внешнего сервера MySQL:

  • host: Адрес или имя хоста сервера MySQL. Значение по умолчанию 127.0.0.1.
  • port: номер порта сервера MySQL. Значение по умолчанию 3306.
  • secure_auth: Включить или отключить безопасную аутентификацию. Значение по умолчанию true.
  • init_command: Оператор SQL для выполнения при подключении к серверу MySQL.
  • use_remote_estimate: Определяет, выдает ли mysql_fdw удаленные команды EXPLAIN для получения оценки стоимости. Значение по умолчанию false.
  • reconnect: Включить или отключить автоматическое переподключение к серверу MySQL, если обнаружится, что существующее соединение было потеряно. Значение по умолчанию false.
  • sql_mode: Установите MySQL sql_mode для установленного соединения. Значение по умолчанию ANSI_QUOTES.
  • ssl_key: Путь к файлу закрытого ключа клиента.
  • ssl_cert: Путь к файлу сертификата открытого ключа клиента.
  • ssl_ca: Путь к файлу сертификата центра сертификации (ЦС). Этот параметр, если он используется, должен указывать тот же сертификат, который используется сервером.
  • ssl_capath: Путь к каталогу, содержащему файлы доверенных сертификатов ЦС SSL.
  • ssl_cipher: список допустимых шифров для SSL-шифрования.
  • fetch_size: Этот параметр указывает количество строк, которые mysql_fdw должна получить при каждой операции выборки. Его можно указать для внешней таблицы или внешнего сервера. Параметр, указанный в таблице, переопределяет параметр, указанный для сервера. Значение по умолчанию 100.
  • character_set: Набор символов для подключения к MySQL. Значение по умолчанию auto означает автоматическое определение на основе настроек операционной системы.

Следующие параметры могут быть установлены для объекта внешней таблицы MySQL:

  • dbname: имя базы данных MySQL для запроса. Это обязательный параметр.
  • table_name: Имя таблицы MySQL, по умолчанию такое же, как у внешней таблицы.
  • max_blob_size: максимальный размер большого двоичного объекта для чтения без усечения.
  • fetch_size: То же, что и параметр fetch_size для стороннего сервера.

Следующие параметры необходимо указать при создании сопоставления пользователей:

  • username: Имя пользователя для использования при подключении к MySQL.
  • password: Пароль для аутентификации на сервере MySQL.

В команде IMPORT FOREIGN SCHEMA можно задать следующие параметры:

  • import_default: Этот параметр определяет, включаются ли выражения столбца DEFAULT в определения внешних таблиц, импортированных с внешнего сервера. Значение по умолчанию false.
  • import_not_null: Этот параметр определяет, включаются ли ограничения столбца NOT NULL в определения внешних таблиц, импортированных с внешнего сервера. Значение по умолчанию true.
  • import_enum_as_text: Этот параметр можно использовать для сопоставления типа MySQL enum с типом text в определениях внешних таблиц, в противном случае выдается предупреждение о создаваемом типе. Значение по умолчанию false.
  • import_generated: Этот параметр определяет, будут ли выражения столбцов GENERATED включены в определения внешних таблиц, импортированных со стороннего сервера, или нет. Значение по умолчанию true. Импорт полностью завершится ошибкой, если импортированное сгенерированное выражение использует функцию или оператор, которых нет в QHB.

Примеры

-- Первая загрузка расширения после установки
CREATE EXTENSION mysql_fdw;

-- создание объекта сервера
CREATE SERVER mysql_server
	FOREIGN DATA WRAPPER mysql_fdw
	OPTIONS (host '127.0.0.1', port '3306');

-- создание сопоставления пользователей
CREATE USER MAPPING FOR qhb
	SERVER mysql_server
	OPTIONS (username 'foo', password 'bar');

-- создание сторонней таблицы
CREATE FOREIGN TABLE warehouse
	(
		warehouse_id int,
		warehouse_name text,
		warehouse_created timestamp
	)
	SERVER mysql_server
	OPTIONS (dbname 'db', table_name 'warehouse');

-- добавление новых строк в таблицу
INSERT INTO warehouse values (1, 'UPS', current_date);
INSERT INTO warehouse values (2, 'TV', current_date);
INSERT INTO warehouse values (3, 'Table', current_date);

-- выборка из таблицы
SELECT * FROM warehouse ORDER BY 1;

warehouse_id | warehouse_name | warehouse_created
-------------+----------------+-------------------
           1 | UPS            | 10-JUL-20 00:00:00
           2 | TV             | 10-JUL-20 00:00:00
           3 | Table          | 10-JUL-20 00:00:00

-- удаление строки из таблицы
DELETE FROM warehouse where warehouse_id = 3;

-- изменение строки в таблице
UPDATE warehouse set warehouse_name = 'UPS_NEW' where warehouse_id = 1;

-- показать план выполнения запроса для таблицы с параметром verbose
EXPLAIN VERBOSE SELECT warehouse_id, warehouse_name FROM warehouse WHERE warehouse_name LIKE 'TV' limit 1;

                                   QUERY PLAN
--------------------------------------------------------------------------------------------------------------------
Limit  (cost=10.00..11.00 rows=1 width=36)
	Output: warehouse_id, warehouse_name
	->  Foreign Scan on public.warehouse  (cost=10.00..1010.00 rows=1000 width=36)
		Output: warehouse_id, warehouse_name
		Local server startup cost: 10
		Remote query: SELECT `warehouse_id`, `warehouse_name` FROM `db`.`warehouse` WHERE ((`warehouse_name` LIKE BINARY 'TV'))

Лицензия

Авторское право (c) 2011-2023, Корпорация EnterpriseDB.

Разрешение на использование, копирование, изменение и распространение этого программного обеспечения и его документация для любых целей, бесплатно и без письменного соглашения настоящим предоставляется, при условии, что вышеуказанное уведомление об авторских правах и этот параграф и следующие два абзаца присутствуют во всех экземплярах.

НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ENTERPRISEDB CORPORATION НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ПЕРЕД ЛЮБОЙ СТОРОНОЙ ЗА ПРЯМЫЕ, КОСВЕННЫЕ, ОСОБЫЕ, СЛУЧАЙНЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ, ВКЛЮЧАЯ ПОТЕРИ ПРИБЫЛЬ, ПОЛУЧЕННАЯ ОТ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И ЕГО ДОКУМЕНТАЦИИ, ДАЖЕ ЕСЛИ ENTERPRISEDB CORPORATION БЫЛА УВЕДОМЛЕНА О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.

ENTERPRISEDB CORPORATION ОСОБЕННО ОТКАЗЫВАЕТСЯ ОТ ЛЮБЫХ ГАРАНТИЙ, В ТОМ ЧИСЛЕ, НО НЕ ОГРАНИЧИВАЯСЬ ​​ПОДРАЗУМЕВАЕМЫМИ ГАРАНТИЯМИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОГО НАЗНАЧЕНИЯ. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, ПРЕДОСТАВЛЯЕМОЕ ДАННЫМ, ПРЕДОСТАВЛЯЕТСЯ НА ОСНОВЕ «КАК ЕСТЬ», И ENTERPRISEDB CORPORATION НЕ НЕСЕТ ОБЯЗАННОСТЕЙ ОБЕСПЕЧИВАТЬ ОБСЛУЖИВАНИЕ, ПОДДЕРЖКУ, ОБНОВЛЕНИЯ, УЛУЧШЕНИЯ ИЛИ МОДИФИКАЦИИ.


См. также