Поделиться через


Расширения и модули

Расширения и модули в PostgreSQL — это мощные средства, позволяющие пользователям расширить функциональные возможности системы базы данных. Они могут варьироваться от простых объектов SQL до сложных двоичных библиотек, предоставляя дополнительные функции и возможности, недоступные в основном дистрибутиве PostgreSQL.

Расширения

Чтобы определить расширение, требуется по крайней мере один файл скрипта, содержащий команды SQL для создания объектов, распределенных расширением, и одного файла управления, указывающего несколько основных свойств самого расширения.

При создании, установке или загрузке расширений в базе данных они развертывают набор объектов пакета, направленных на расширение функциональности подсистемы. Эти объекты могут быть функциями, операторами, ролями, типами данных, методами доступа и другими типами объектов базы данных.

При удалении, удалении или выгрузке расширений из базы данных удаляются все объекты, созданные расширением. Исключение из этого случая заключается в наличии других объектов в базе данных с зависимостями от любого из объектов, определенных расширением.

Реализация функциональных возможностей, предоставляемых этими объектами, распределенными расширением, может быть записана в SQL или PL/pgSQL. Но его также можно реализовать в отдельном файле общей библиотеки (двоичного файла), который является результатом компиляции исходного кода (обычно написанного в C или Rust), реализующего функциональные возможности.

В PostgreSQL расширения управляются с помощью CREATE EXTENSIONALTER 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