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