Расширения и модули
Расширения и модули в PostgreSQL — это мощные средства, позволяющие пользователям расширить функциональные возможности системы базы данных. Они могут варьироваться от простых объектов SQL до сложных двоичных библиотек, предоставляя дополнительные функции и возможности, недоступные в основном дистрибутиве PostgreSQL.
Расширения
Чтобы определить расширение, требуется по крайней мере один файл скрипта, содержащий команды SQL для создания объектов, распределенных расширением, и одного файла управления, указывающего несколько основных свойств самого расширения.
При создании, установке или загрузке расширений в базе данных они развертывают набор объектов пакета, направленных на расширение функциональности подсистемы. Эти объекты могут быть функциями, операторами, ролями, типами данных, методами доступа и другими типами объектов базы данных.
При удалении, удалении или выгрузке расширений из базы данных удаляются все объекты, созданные расширением. Исключение из этого случая заключается в наличии других объектов в базе данных с зависимостями от любого из объектов, определенных расширением.
Реализация функциональных возможностей, предоставляемых этими объектами, распределенными расширением, может быть записана в SQL или PL/pgSQL. Но его также можно реализовать в отдельном файле общей библиотеки (двоичного файла), который является результатом компиляции исходного кода (обычно написанного в C или Rust), реализующего функциональные возможности.
В PostgreSQL расширения управляются с помощью CREATE EXTENSION
ALTER EXTENSION
команд , DROP EXTENSION
и COMMENT ON EXTENSION
команд.
-
CREATE EXTENSION
создает, устанавливает или загружает расширение в базу данных, в которой выполняется команда. -
ALTER EXTENSION
обновляет расширение до более новой версии. -
DROP EXTENSION
удаляет, удаляет или выгружает расширение из базы данных, в которой выполняется команда. -
COMMENT ON EXTENSION
сохраняет комментарий о расширении в качестве объекта базы данных.
При запуске сервера определяется область памяти, к которой могут обращаться все серверные процессы, для совместного выполнения любых рабочих нагрузок. В jargon PostgreSQL эта область памяти называется общей памятью.
Некоторые расширения, реализующие функциональные возможности с помощью общих библиотек, требуют доступа к этой общей памяти из кода, встроенного в эти библиотеки. Эти расширения имеют еще одно требование, что их общие файлы библиотеки должны загружаться основным процессом обработчика, как только сервер запускается. Для этих библиотек необходимо следовать инструкциям в библиотеках загрузки.
Модули
Хотя и не считаются такими расширениями, так как они не имеют файла управления и файла скрипта для развертывания упакованных объектов SQL в базе данных, другая форма расширяемости в PostgreSQL состоит из реализации функций в автономных общих файлах библиотек.
Эти файлы также можно загрузить в память при запуске сервера, и они могут реализовать код, который обычно отклоняет естественный путь выполнения PostgreSQL и изменяет функционирование ядра по умолчанию. Такие изменения поведения обычно стремятся усилить некоторые ограниченные функциональные возможности двигателя.
База данных Azure для PostgreSQL поддерживает следующие модули:
- auto_explain
- pg_failover_slots
- pg_partman_bgw
- wal2json