Partilhar via


Extensões e módulos

Extensões e módulos em PostgreSQL são ferramentas poderosas que permitem aos usuários estender a funcionalidade do sistema de banco de dados. Eles podem variar de objetos SQL simples a bibliotecas binárias complexas, fornecendo recursos extras e capacidades que não estão disponíveis na distribuição principal do PostgreSQL.

Extensões

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

Quando as extensões são criadas, instaladas ou carregadas em um banco de dados, elas implantam um conjunto de objetos de pacote que visam estender a funcionalidade do mecanismo. 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 as extensões são descartadas, desinstaladas ou descarregadas de um banco de dados, todos os objetos que foram criados pela extensão são removidos. 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.

A implementação da funcionalidade fornecida pelos objetos distribuídos pela extensão pode ser escrita em SQL ou PL/pgSQL. Mas também pode ser implementado em um arquivo separado de biblioteca compartilhada (binário), que é o resultado da compilação do código-fonte (normalmente escrito em C ou Rust) que implementa a funcionalidade.

No PostgreSQL, as extensões são gerenciadas através dos CREATE EXTENSIONcomandos , ALTER EXTENSION, DROP EXTENSIONe COMMENT ON EXTENSION .

  • CREATE EXTENSION cria, instala ou carrega uma extensão no banco de dados no qual o comando é executado.
  • ALTER EXTENSION Atualiza a extensão para uma versão mais recente.
  • DROP EXTENSION descarta, desinstala ou descarrega uma extensão do banco de dados no qual o comando é executado.
  • COMMENT ON EXTENSION Armazena um comentário sobre a extensão como um objeto de banco de dados.

Quando o servidor é iniciado, ele define uma área de memória que todos os processos de back-end podem acessar, 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 aceder a essa área de memória partilhada a partir do código desenvolvido 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, você precisa seguir as instruções em bibliotecas de carregamento.

Módulos

Embora não sejam consideradas extensões como tal, porque não têm um arquivo de controle e um arquivo de script para implantar objetos SQL agrupados em um banco de dados, outra forma de extensibilidade no PostgreSQL consiste na implementação de funcionalidade em arquivos de biblioteca binária compartilhada autônoma.

Esses arquivos também podem ser carregados na memória quando o servidor é iniciado e podem implementar código que, normalmente, desvia o caminho de execução natural do PostgreSQL para alterar o funcionamento padrão do mecanismo. 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