Использование Foreign-Data Wrappers в PostgreSQL

Foreign-Data Wrappers (FDW) в PostgreSQL это инструмент, который позволяет работать с данными из разных источников, будто они находятся прямо в PostgreSQL. Это часть стандарта SQL/MED для работы с внешними данными. FDW скрывает сложности подключения к разным базам данных (например, Oracle, MySQL, Redis), делая их использование проще. Они удобны для анализа данных из разных источников и помогают переносить данные в PostgreSQL из других систем управления базами данных.

  • Интеграция с Внешними Источниками Данных: FDW позволяют PostgreSQL выполнять запросы к различным внешним источникам данных, включая другие SQL и NoSQL базы данных, CSV-файлы, веб-сервисы и даже программные приложения.
  • Прозрачный Доступ: Пользователи могут выполнять стандартные SQL-запросы к внешним данным, как будто они находятся непосредственно в PostgreSQL, обеспечивая удобный и единообразный доступ.
  • Разнообразие Драйверов: Существуют готовые FDW для многих популярных источников данных, таких как MySQL, MongoDB, Oracle и другие, облегчая интеграцию с различными системами. Если нужный FDW еще не написан, вы можете реализовать его самостоятельно.
  • Транзакции и Безопасность: Многие FDW поддерживают транзакции и меры безопасности, что важно для обеспечения целостности и конфиденциальности данных.
  • Упрощение Миграции и Интеграции: FDW могут использоваться для упрощения процессов миграции данных и для интеграции разрозненных данных в единую систему.

В целом, Foreign-Data Wrappers значительно расширяют функциональные возможности PostgreSQL, предоставляя гибкий и мощный инструмент для работы с внешними данными.

Инструкция по использованию Foreign-Data Wrappers в PostgreSQL

Данная инструкция описывает процесс использования Foreign-Data Wrappers (FDW) в PostgreSQL для интеграции с внешними данными.

  • Установленный PostgreSQL.
  • Доступ к внешнему источнику данных, например, другой SQL базе данных.
  • Установленный соответствующий FDW для этого источника данных.

Выполните команду для установки FDW расширения. Например, для MySQL:

CREATE EXTENSION mysql_fdw;

для подключения к другому серверу PostgreSQL

CREATE EXTENSION postgres_fdw;

Расширения идет вместе с PostgreSQL и отдельно скачивать / компилировать его не нужно.

Создайте сервер внешних данных, указав тип FDW и параметры подключения для MySQL:

CREATE SERVER mysql_server
FOREIGN DATA WRAPPER mysql_fdw
OPTIONS (host 'hostname', port 'port_number');

Пример для PostgreSQL

CREATE SERVER ubuntu_server
  FOREIGN DATA WRAPPER postgres_fdw
  OPTIONS (dbname 'test_database', host '127.0.0.1', port '5454');

Проверяем:

# \des
           List of foreign servers
     Name      | Owner | Foreign-data wrapper
---------------+-------+----------------------
 ubuntu_server | eax   | postgres_fdw
(1 row)
# select * from pg_foreign_server;
-[ RECORD 1 ]-----------------------------------------------
oid        | 37539
srvname    | ubuntu_server
...

Создайте пользователя и укажите данные для доступа к внешнему серверу:

CREATE USER MAPPING FOR postgres
SERVER mysql_server
OPTIONS (username 'remote_username', password 'remote_password');

Проверяем:

select * from pg_user_mappings;

Если вы используйте пользователя отличного от postgres не забудьте дать ему права

GRANT USAGE ON FOREIGN SERVER ubuntu_server TO your_user;

Импортируйте внешние таблицы. Вы можете импортировать все таблицы или конкретную таблицу:

IMPORT FOREIGN SCHEMA remote_db_name FROM SERVER mysql_server INTO public;
IMPORT FOREIGN SCHEMA public LIMIT TO (TABLE_NAME)
  FROM SERVER ubuntu_server INTO public;

Название foreign_table_schema в нашем случае это стандартная схема public, может быть другим, не копируйте бездумно.

Теперь с таблицей table_name(или fdw_table_name) можно работать, как если бы она была локальной. Все изменения с таблицей, которые мы делаем на втором сервере, будут видны на первом, и наоборот.

Проверяем:

SELECT * FROM information_schema.foreign_tables;

Если таблица больше не нужна, от нее можно избавиться так:

DROP FOREIGN TABLE TABLE_NAME;

Теперь вы можете выполнять SQL-запросы к внешним таблицам, как к обычным таблицам PostgreSQL:

SELECT * FROM external_table;
  • Параметры подключения и настройки могут варьироваться в зависимости от типа внешнего источника данных.
  • Всегда следите за обновлениями FDW и их совместимостью с вашей версией PostgreSQL.
  • Будьте внимательны с вопросами безопасности и доступа к данным при работе с внешними источниками.

Эта инструкция предоставляет базовые шаги для начала работы с FDW в PostgreSQL.

PQ VPS сервера в 28+ странах.