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


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

Расширения и модули в 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