Глава 56. Написание обёртки сторонних данных
Содержание
- 56.1. Функции обёрток сторонних данных
- 56.2. Подпрограммы обёртки сторонних данных
- 56.2.1. Подпрограммы FDW для сканирования сторонних таблиц
- 56.2.2. Подпрограммы FDW для сканирования сторонних соединений
- 56.2.3. Подпрограммы FDW для планирования обработки после сканирования/соединения
- 56.2.4. Подпрограммы FDW для изменения данных в сторонних таблицах
- 56.2.5. Подпрограммы FDW для блокировки строк
- 56.2.6. Подпрограммы FDW для
EXPLAIN- 56.2.7. Подпрограммы FDW для
ANALYZE- 56.2.8. Подпрограммы FDW для
IMPORT FOREIGN SCHEMA- 56.2.9. Подпрограммы FDW для параллельного выполнения
- 56.2.10. Подпрограммы FDW для изменения параметризации путей
- 56.2.2. Подпрограммы FDW для сканирования сторонних соединений
- 56.2.1. Подпрограммы FDW для сканирования сторонних таблиц
- 56.3. Вспомогательные функции для обёрток сторонних данных
- 56.4. Планирование запросов с обёртками сторонних данных
- 56.5. Блокировка строк в обёртках сторонних данных
- 56.4. Планирование запросов с обёртками сторонних данных
Все операции со сторонней таблицей производятся через созданную для неё обёртку сторонних данных, представляющую собой набор подпрограмм, которые вызывает ядро сервера. Обёртка сторонних данных отвечает за получение данных из удалённого источника данных и передачу их исполнителю запросов Postgres Pro. Чтобы поддерживалось изменение данных в сторонних таблицах, эту операцию также должна выполнять обёртка. В данной главе освещается написание обёртки сторонних данных.
Реализация обёрток сторонних данных, включённых в стандартный дистрибутив, может послужить хорошим примером при написании собственных обёрток. Её вы можете найти в подкаталоге contrib дерева исходного кода. Некоторые полезные детали также можно узнать на странице справки CREATE FOREIGN DATA WRAPPER.
Примечание
В стандарте SQL описан интерфейс для написания обёрток сторонних данных, но Postgres Pro не реализует его, так как это потребовало бы больших усилий, а данный стандартизированный API всё равно не получил широкого распространения.
Chapter 56. Writing A Foreign Data Wrapper
Table of Contents
- 56.1. Foreign Data Wrapper Functions
- 56.2. Foreign Data Wrapper Callback Routines
- 56.2.1. FDW Routines For Scanning Foreign Tables
- 56.2.2. FDW Routines For Scanning Foreign Joins
- 56.2.3. FDW Routines For Planning Post-Scan/Join Processing
- 56.2.4. FDW Routines For Updating Foreign Tables
- 56.2.5. FDW Routines For Row Locking
- 56.2.6. FDW Routines for
EXPLAIN- 56.2.7. FDW Routines for
ANALYZE- 56.2.8. FDW Routines For
IMPORT FOREIGN SCHEMA- 56.2.9. FDW Routines for Parallel Execution
- 56.2.10. FDW Routines For reparameterization of paths
- 56.2.2. FDW Routines For Scanning Foreign Joins
- 56.2.1. FDW Routines For Scanning Foreign Tables
- 56.3. Foreign Data Wrapper Helper Functions
- 56.4. Foreign Data Wrapper Query Planning
- 56.5. Row Locking in Foreign Data Wrappers
- 56.4. Foreign Data Wrapper Query Planning
All operations on a foreign table are handled through its foreign data wrapper, which consists of a set of functions that the core server calls. The foreign data wrapper is responsible for fetching data from the remote data source and returning it to the Postgres Pro executor. If updating foreign tables is to be supported, the wrapper must handle that, too. This chapter outlines how to write a new foreign data wrapper.
The foreign data wrappers included in the standard distribution are good references when trying to write your own. Look into the contrib subdirectory of the source tree. The CREATE FOREIGN DATA WRAPPER reference page also has some useful details.
Note
The SQL standard specifies an interface for writing foreign data wrappers. However, Postgres Pro does not implement that API, because the effort to accommodate it into Postgres Pro would be large, and the standard API hasn't gained wide adoption anyway.