Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Я ХОЧУ СЕБЕ POSTGRES. Быстрый старт с PostgreSQL и о том, как использовать обёртки внешних данных (Foreign Data Wrapper)

Практика



ВВЕДЕНИЕ

Не приходилось ли вам когда-либо, по самым разным причинам, думать о PostgreSQL? Свободно распространяемой, доступной, простой, гибкой, расширяемой, ненапыщенной, но гордой своими неоспоримыми преимуществами. Она совмещает простоту, предельную логичность пользования, и, в то же время, это действительно безгранично расширяемый инструмент. Она поддерживает многопоточность, позволяя проводить параллелные транзакции без Read lock’ов. Она имеет extensions для решения задач на любой цвет и вкус. Эх, жаль, жаль, она не сможет приготовить вам борщ.

 

Одно из самых популярных и мощных свойств PostgreSQL, о котором мы сегодня поговорим – это Foreign Data Wrapper’ы, то есть, программные обертки для всевозможных источников данных, позволяющие пользоваться ими изнутри этой СУБД.

Эта статья содержит быстрое введение и рассчитана на всех, хотя желательно, чтобы у вас был linux, и в общем не требует какой-либо подготовки.

ЧТО такое PostgreSQL

или что это такое

Foreign Data Wrapper’ами называются расширения для PostgreSQL, которые позволяют осуществлять доступ к данным на удаленном сервере.

Характер и структура этих данных может быть самой разнообразной. На официальной вики постгреса кратко собраны ссылки на исходники и краткая информация о всех официально поддерживаемых foreign data wrapper’ах (см. “Суть вопроса”).

Ключевой момент заключается в возможности подключения к стороннему серверу. Идея проста. У вас сервер с postgreSQL, и сторонний сервер, на котором есть уже не так важно что. Вам нужна программная оболочка для доступа к этому “не так важно что”, которая на вход от вас получала бы только логин с паролем для подключения к серверу, а затем – пользовательские данные для доступа к источнику данных в нем (логин и пароль к базе, например). И для каждого этого “не так важно чего”, независимо от его природы, эта обертка должна быть встроена в postgres, и в использовании должна быть унифицирована с другими такими обертками.

Вот именно такими и являются foreign data wrapper’ы.

ПОДГОТОВКА к установке PostgreSQL

устанавливаем необходимое

Для начала вам понадобится сам postgres. В случае linux, вы получите основной функционал, введя

Более детальная информация о загрузках лежит на официальной вики. Ну, а в случае других операционных систем – никогда не поздно попробовать linux… Хотя, если серьезно, установка на Windows тривиальна и не отличается от установки обычного музыкального проигрывателя.

Теперь нам нужен более-менее интересный источник внешних данных. У меня на машине завалялась MySQL. В моем случае именно она послужит источником внешних данных. Однако возможными источниками данных могут быть и другие СУБД, в том числе нереляционные, и простые файлы, и еще много чего (см. “Суть вопроса”).

Мы создадим новую базу данных с одной таблицей, данными которых мы попробуем воспользоваться из postgres.

(Чтобы не было скучно, пускай это будет не затасканная всеми туториалами таблица users с полями контактных данных, а таблица, хранящая информацию о жертвах одного сумасшедшего маньяка, который хочет посеять хаос и анархию во всем мире, регулярно убивает невинных людей, а в свободное время сидит с ноутбуком и попивает кофе. До недавнего времени он вел свой учет жертв в MySQL, но сейчас он решил разработать более серьезный проект и ему нужно синхронизировать капельку его данных из mysql в postgres).

Также заполним эту таблицу какими-то самую капельку адекватными данными.

Можем несколько раз убить Кенни из Саус Парка – для примера самое то.

(Полный список смертей Кенни включать не будем, ограничимся тремя первыми, датой смерти будем считать даты выхода серий).

БЫСТРЫЙ СТАРТ B POSTGRES

запускаем необходимое

Теперь обоснуемся в postgres. Нам нужна новая база данных, в которой мы созданим внешнюю таблицу, основываясь на данных из MySQL.

Запускаем postgreSQL от имени суперпользователя СУБД, именуемого “postgres”:

Обращаясь к базе, кратко узнаем обстановку.

-просмотр существующих баз данных

-создаем новую базу данных

-выбираем базу для работы

-просмотр таблиц выбранной базы

Наконец, мы обладаем почти всеми необходимыми инструментами. Остался последний – собственно, сам foreign data wrapper.

СУТЬ ВОПРОСА: mysql_fdw

Для нашей ситуации нам нужен foreign data wrapper (далее “обертка”) для данных из MySQL. Теоретически, обертку можно создать самостоятельнo, и postgreSQL предоставляет красивую и лаконичную документацию. Однако для СУБД всех сортов и мастей, и не только СУБД, но и, пожалуй, для всех вообразимых источников данных, можно подобрать себе готовый fdw на всякий вкус и цвет. Нам же для простого примера понадобится mysql_fdw. В случае другого источника данных, это была бы другая обертка.

Каждая обертка является расширением postgreSQL и имеет некоторую процедуру установки.

Скачиваем исходники архивом со страницы mysql_fdw на GitHub. Распаковываем, собираем, компилируем. Полная 4-шаговая инструкция по установке находится в файле README.md, ничего необычного или сложного, просто добавь два указанных пути к системной переменной $PATH, и запусти компиляцию.

НАКОНЕЦ, ИСПОЛЬЗОВАНИЕ

У нас есть postgres на локальном сервере, есть расширение для обработки внешних данных, и есть MySQL. Тоже на локальном сервере, но каким бы ни был адрес, использование идентично.

Чтобы в нашей базе pg_cruel появились данные из cruel в MySQL, нужно выполнить 4 шага:

  1.  Создать расширение для postgresql с оберткой данных.
  2. Создать подключение к серверу с внешними данными.
  3. Установить пользовательский доступ к источнику данных на внешнем сервере (user mapping)
  4. Создать, наконец, внешнюю таблицу.

Создаем расширение

Создаем внешний сервер для подключения, указав адрес и порт подключения, а так же, возможно, пароль и другие опции (здесь довольно широкий список)

Создаем пользовательский доступ к источнику данных. Здесь все зависит от конкретного FDW, для mysql_fdw требуется логин и пароль. Указываем также внешний сервер, для которого действительны пользовательские данные.

Создаем внешнюю таблицу, указав внешний сервер.

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

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

 

Начинка данными – по вкусу.

А теперь… Вуаля! Можем получить имена наших жертв в связи со способом их убийства!

создано: 2018-10-26
обновлено: 2021-03-13
132834



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

MySql (Maria DB)

Термины: MySql (Maria DB)