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 contém os comandos SQL para criar os objetos distribuídos pela extensão, e um arquivo de controle, que especifica 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 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 à qual 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 compartilhadas exigem o acesso a essa memória compartilhada a partir do código criado nessas bibliotecas. Essas extensões têm mais um requisito, que é que seus arquivos de biblioteca compartilhada devem ser carregados pelo processo principal do mecanismo, assim que o servidor for iniciado. 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 em implementar a funcionalidade em arquivos de biblioteca compartilhada autônomos.

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