Extensões e módulos
Extensões e módulos no PostgreSQL são ferramentas poderosas que permitem aos usuários estender a funcionalidade do sistema de banco de dados. Eles podem variar de simples objetos SQL a bibliotecas binárias complexas, fornecendo recursos e capacidades extras 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 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 objetos de banco de dados.
Quando extensões são removidas, 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 de 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 de biblioteca compartilhada (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, as extensões são gerenciadas por meio dos comandos CREATE EXTENSION
, ALTER EXTENSION
, DROP EXTENSION
, e 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
remove, 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 backend 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 acesso à 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 principal. Para essas bibliotecas, você precisa seguir as instruções em carregar bibliotecas.
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 funcionalidades em arquivos de biblioteca compartilhada independentes.
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 e altera o funcionamento padrão do mecanismo. Essas alterações comportamentais normalmente visam ampliar alguma funcionalidade limitada do mecanismo.
O Banco de Dados do Azure para PostgreSQL oferece suporte aos seguintes módulos:
- auto_explain
- pg_failover_slots
- pg_partman_bgw
- wal2json