Extensiones y módulos en el servidor flexible de Azure Database for PostgreSQL

Las extensiones y los módulos de PostgreSQL son herramientas eficaces que puede usar para ampliar la funcionalidad del sistema de base de datos. Van desde objetos SQL simples a bibliotecas binarias complejas y proporcionan características y funcionalidades adicionales que no están disponibles en la distribución principal de PostgreSQL.

Extensiones

Para definir una extensión, necesita al menos un archivo de script que contenga los comandos SQL para crear los objetos distribuidos por la extensión y un archivo de control que especifique una propiedad básica de la propia extensión.

Al crear, instalar o cargar extensiones en una base de datos, implementan un conjunto de objetos de agrupación que tienen como objetivo ampliar la funcionalidad del motor. Esos objetos pueden ser funciones, operadores, roles, tipos de datos, métodos de acceso y otros tipos de objetos de base de datos.

Al quitar, desinstalar o descargar extensiones de una base de datos, el proceso quita todos los objetos que creó la extensión. Una excepción a ese caso es cuando hay otros objetos en la base de datos con dependencias en cualquiera de los objetos definidos por la extensión.

Puede escribir la implementación de la funcionalidad proporcionada por esos objetos distribuidos por la extensión en SQL o PL/pgSQL. Pero también puede implementarlo en un archivo de biblioteca compartida (binario) independiente, que es el resultado de compilar el código fuente (normalmente escrito en C o Rust) que implementa la funcionalidad.

En PostgreSQL, se administran las extensiones mediante los CREATE EXTENSIONcomandos , ALTER EXTENSION, DROP EXTENSIONy COMMENT ON EXTENSION .

  • CREATE EXTENSION crea, instala o carga una extensión en la base de datos en la que se ejecuta el comando .
  • ALTER EXTENSION actualiza la extensión a una versión más reciente.
  • DROP EXTENSION quita, desinstala o descarga una extensión de la base de datos en la que se ejecuta el comando .
  • COMMENT ON EXTENSION almacena un comentario sobre la extensión como un objeto de base de datos.

Cuando se inicia el servidor, define un área de memoria a la que pueden acceder todos los procesos back-end para ejecutar de forma cooperativa las cargas de trabajo. En la jerga de PostgreSQL, esa área de memoria se conoce como memoria compartida.

Algunas extensiones que implementan la funcionalidad mediante bibliotecas compartidas necesitan acceder a ese área de memoria compartida desde el código integrado en esas bibliotecas. Esas extensiones tienen un requisito más, que es que el proceso principal del motor debe cargar sus archivos de biblioteca compartidos, en cuanto se inicie el servidor. Para esas bibliotecas, siga las instrucciones en cargar bibliotecas.

Módulos

Aunque no se consideran extensiones porque no tienen un archivo de control y un archivo de script para implementar objetos SQL agrupados en una base de datos, otra forma de extensibilidad en PostgreSQL implementa la funcionalidad en archivos de biblioteca binaria compartida independientes.

Puede cargar estos archivos en memoria cuando se inicia el servidor. Pueden implementar código que normalmente desture la ruta de ejecución natural de PostgreSQL para modificar el funcionamiento predeterminado del motor. Estas alteraciones de comportamiento normalmente apuntan a amplificar algunas funcionalidades limitadas del motor.

Azure Database for PostgreSQL admite los siguientes módulos:

  • auto_explain
  • pg_failover_slots
  • pg_partman_bgw
  • wal2json