Extensões e módulos no Base de Dados do Azure para PostgreSQL flexible server

Extensões e módulos no PostgreSQL são ferramentas poderosas que pode usar para expandir a funcionalidade do sistema de base de dados. Vão desde simples objetos SQL até bibliotecas binárias complexas, e oferecem funcionalidades e capacidades extra que não estão disponíveis na distribuição central do PostgreSQL.

Extensões

Para definir uma extensão, é necessário pelo menos um ficheiro de script que contenha os comandos SQL para criar os objetos distribuídos pela extensão, e um ficheiro de controlo que especifique propriedades básicas da própria extensão.

Quando crias, instalas ou carregas extensões numa base de dados, eles implementam um conjunto de bundle objects que visam expandir a funcionalidade do motor. Esses objetos podem ser funções, operadores, funções, tipos de dados, métodos de acesso e outros tipos de objeto de banco de dados.

Quando elimina, desinstala ou descarrega extensões de uma base de dados, o processo remove todos os objetos que a extensão criou. Uma exceção a esse caso é quando há outros objetos no banco de dados com dependências em qualquer um dos objetos definidos pela extensão.

Pode escrever a implementação da funcionalidade fornecida por esses objetos distribuídos pela extensão em SQL ou PL/pgSQL. Mas também podes implementá-lo num ficheiro de biblioteca partilhada (binário) separado, que é o resultado da compilação do código-fonte (normalmente escrito em C ou Rust) que implementa a funcionalidade.

No PostgreSQL, geres extensões através dos CREATE EXTENSIONcomandos , ALTER EXTENSION, DROP EXTENSION, e COMMENT ON EXTENSION .

  • CREATE EXTENSION cria, instala ou carrega uma extensão na base de dados onde executa o comando.
  • ALTER EXTENSION Atualiza a extensão para uma versão mais recente.
  • DROP EXTENSION remove, desinstala ou descarrega uma extensão da base de dados na qual executa o comando.
  • COMMENT ON EXTENSION Armazena um comentário sobre a extensão como um objeto de banco de dados.

Quando o servidor inicia, define uma área de memória à qual todos os processos backend podem aceder para executar cooperativamente quaisquer cargas de trabalho. No jargão do PostgreSQL, essa área de memória é chamada de memória compartilhada.

Algumas extensões que implementam funcionalidades usando bibliotecas partilhadas precisam de aceder a essa área de memória partilhada a partir do código construído nessas bibliotecas. Essas extensões têm mais um requisito: os seus arquivos da biblioteca partilhada devem ser carregados pelo processo principal do motor, assim que o servidor arrancar. Para essas bibliotecas, siga as instruções em load libraries.

Módulos

Embora não sejam consideradas extensões porque não têm um ficheiro de controlo nem um ficheiro de script para implementar objetos SQL agrupados numa base de dados, outra forma de extensibilidade no PostgreSQL é implementar funcionalidades em ficheiros binários partilhados autónomos.

Podes carregar estes ficheiros na memória quando o servidor arranca. Podem implementar código que normalmente desvia o caminho natural de execução do PostgreSQL para alterar o funcionamento padrão do motor. Tais alterações comportamentais normalmente visam amplificar algumas funcionalidades limitadas do motor.

O Banco de Dados do Azure para PostgreSQL dá suporte aos seguintes módulos:

  • auto_explain
  • pg_failover_slots
  • pg_partman_bgw
  • wal2json