Внешние и сторонние таблицы Greenplum: external vs foreign

Greenplum внешние и сторонние таблицы примеры курсы обучение, Greenplum для разработчика и дата-инженера, Greenplum примеры курсы обучение архитектура DWH, Школа Больших Данных Учебный Центр Коммерсант

Чем внешняя таблица Greenplum отличается от сторонней, и как они преобразуются друг в друга: организация доступа к данным вне базы, FDW-обертки и протоколы для интеграции MPP-СУБД с другими источниками информации.

Сторонняя таблица в Greenplum

Термины внешняя (external) и сторонняя (foreign) table похожи, но нюансы их использования в  Greenplum отличаются. Такие таблицы обеспечивают доступ к данным, хранящимся в источниках данных за пределами Greenplum, будто данные хранятся в обычных таблицах БД.

Сторонняя таблица (foreign) — это таблица базы данных Greenplum, поддерживаемая данными, находящимися вне базы данных. Такие внешние таблицы часто используются для загрузки и выгрузки данных базы. Можно читать и писать в одну и ту же внешнюю таблицу, использовать внешние таблицы в SQL-командах так же, как и обычные таблицы, включая соединение с обычными таблицами Greenplum.

Разница между внешними и сторонними таблицами в Greenplum заключается в способах доступа к ним. Чтобы получить доступ к foreign-таблице, надо создать объект внешнего сервера, который определяет, как подключиться к определенному удаленному источнику данных в соответствии с набором параметров, используемых поддерживающей его оберткой внешних данных.

Обертка сторонних данных (FDW, Foreign Data Wrapper) — это библиотека, которая взаимодействует с удаленным источником данных, скрывая детали подключения и доступа к данным, специфичные для источника. Дистрибутив базы данных Greenplum включает оболочки внешних данных greenplum_fdw и postgres_fdw. Можно также написать свою собственную обертку. При доступе к сторонней таблице Greenplum запрашивает FDW-оболочку для извлечения данных или обновления данных из удаленного источника. При этом доступ к удаленным данным может требовать аутентификации в удаленном источнике. Эта информация может быть предоставлена ​​путем сопоставления пользователей, которое представляет имя пользователя и пароль на основе текущей роли в Greenplum.

Внешняя таблица

Внешняя таблица (external) – это другой тип таблицы Greenplum, поддерживаемый данными, которые находятся вне базы. Такие внешние таблицы тоже используются для загрузки и выгрузки данных базы. Доступная для чтения таблица нужна, чтобы читать данные из внешнего источника, а внешняя таблица с возможностью записи – для записи данных во внешний источник, о чем мы писали здесь. Аналогично foreign-таблицам, внешние таблицы можно использовать в SQL-командах, включая операторы SELECT, INSERT и JOIN.

При создании определения external-таблицы надо указать структуру и формат данных, протокол доступа к данным, расположение внешнего источника данных и другие параметры, зависящие от протокола или формата. Протокол внешней таблицы определяет метод доступа к данным для внешнего источника данных. Greenplum поддерживает следующие встроенные (включаемые автоматически) и дополнительные подключаемые пользователем протоколы внешних таблиц:

  • file:// — встроенный протокол для доступа к внешним файлам данных на хостах сегмента, к которым имеет доступ суперпользователь базы данных Greenplum (gpadmin);
  • gpfdist:// — встроенный протокол для параллельной передачи файлов внешних данных всем сегментам Greenplum;
  • gpfdists:// — безопасная версия протокола gpfdist, которая тоже является встроенной;
  • pxf:// — подключаемый пользователем протокол для доступа к внешним системам хранения объектов (Azure, Google Cloud Storage, Minio, S3-совместимым), системам Hadoop (HDFS, Hive, HBase), сетевым файловым системам и базам данных SQL с помощью PXF-фреймворка Greenplum (Platform Extension Framework), о котором мы писали здесь;
  • s3:// — подключаемый пользователем протокол для доступа к файлам в корзине Amazon S3.

External-таблицы в Greenplum могут быть доступные для чтения, которые создаются с помощью инструкции CREATE EXTERNAL TABLE, и доступные для записи, создаваемые с помощью CREATE WRITABLE EXTERNAL TABLE. External-таблицы для чтения обычно используются для загрузки данных и допускают только операции SELECT. Они поддерживают основные ETL-задачи b параллельное чтение данных из нескольких экземпляров сегмента Greenplum для оптимизации операций большой загрузки. Если запрос содержит фильтрацию с условием WHERE, его можно передать внешнему источнику данных. Эта функция в настоящее время поддерживается только протоколом pxf.

External-таблицы с возможностью записи обычно используются для выгрузки данных и допускают только операции INSERT. Они поддерживают выбор данных из таблиц базы для вставки во внешнюю таблицу, доступную для записи, и отправку данных в приложение в виде потока. Например, можно выгрузить данные из Greenplum и отправить их в приложение, которое подключается к другой базе данных или ETL-инструменту для загрузки данных в другое место.

Greenplum 7 внутренне преобразует внешние таблицы в сторонние, а также внутренне обрабатывает и представляет таблицу, используя структуры данных и каталог сторонних таблиц. При этом используется встроенный модуль оболочки внешних данных gp_exttable_fdw для внутреннего преобразования external-таблицы, которая определена с помощью команды CREATE EXTERNAL TABLE, в foreign-таблицу. Оболочка внешних данных обеспечивает доступ к внешнему источнику данных. Объект внешнего сервера, связанный с определенной FDW-оберткой, определяет детали подключения к конкретному удаленному источнику данных. Внешняя таблица указывает внешний сервер, с помощью которого осуществляется доступ к удаленному источнику данных. Сторонняя таблица также определяет структуру удаленных данных, как будто это было определено для внешней таблицы.

Узнайте больше про администрирование и эксплуатацию Greenplum для аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/admin_guide-external-map_ext_to_foreign.html
  2. https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/admin_guide-external-g-working-with-file-based-ext-tables.html
Поиск по сайту