Extensões PostgreSQL no Banco de Dados do Azure para PostgreSQL – Servidor único

APLICA-SE A: Banco de Dados do Azure para PostgreSQL – Servidor Único

O PostgreSQL fornece a capacidade de estender a funcionalidade de seu banco de dados usando as extensões. As extensões agrupam vários objetos SQL em um pacote que pode ser carregado ou removido do seu banco de dados com um comando. Depois de carregadas no banco de dados, as extensões funcionam como recursos internos.

Como usar as extensões PostgreSQL

As extensões PostgreSQL devem ser instaladas no banco de dados para que você possa usá-las. Para instalar uma extensão específica, execute o comando CREATE EXTENSION na ferramenta psql para carregar os objetos empacotados em seu banco de dados.

O Banco de Dados do Azure para PostgreSQL dá suporte a um subconjunto de extensões de chave, conforme listado abaixo. Essas informações também estão disponíveis por meio da execução de SELECT * FROM pg_available_extensions;. Não há suporte para as extensões além daquelas listadas. Você não pode criar uma extensão própria no Banco de Dados do Azure para PostgreSQL.

Extensões do Postgres 11

As extensões a seguir estão disponíveis nos servidores do Banco de Dados do Azure para PostgreSQL que têm a versão 11 do Postgres.

Extensão Versão da extensão Descrição
address_standardizer 2.5.1 Usado para analisar um endereço em elementos constituintes.
address_standardizer_data_us 2.5.1 Exemplo de conjunto de dados de padronizador de endereço dos EUA
btree_gin 1,3 suporte para indexação de tipos de dados comuns no GIN
btree_gist 1.5 suporte para indexação de tipos de dados comuns no GiST
citext 1.5 tipo de dados para cadeias de caracteres que não diferenciam maiúsculas de minúsculas
cube 1.4 tipo de dados para cubos multidimensionais
dblink 1.2 conecta-se a outros bancos de dados PostgreSQL em um banco de dados
dict_int 1.0 modelo de dicionário de pesquisa de texto para inteiros
earthdistance 1,1 calcula distâncias de grande círculo na superfície da Terra
fuzzystrmatch 1,1 determina as semelhanças e a distância entre cadeias de caracteres
hstore 1.5 tipo de dados para armazenar conjuntos de pares (chave, valor)
hypopg 1.1.2 Índices hipotéticos para o PostgreSQL
intarray 1.2 suporte a funções, operadores e índice para matrizes 1D de inteiros
isn 1.2 tipos de dados para padrões de numeração de produtos internacionais
ltree 1,1 tipo de dados para estruturas semelhantes a árvores hierárquicas
orafce 3.7 Funções e operadores que emulam um subconjunto de funções e pacotes do RDBMS comercial
pgaudit 1.3.1 fornece a funcionalidade de auditoria
pgcrypto 1,3 funções criptográficas
pgrouting 2.6.2 Extensão de pgRouting
pgrowlocks 1.2 mostra informações de bloqueio no nível de linha
pgstattuple 1.5 mostra estatísticas no nível da tupla
pg_buffercache 1,3 examina o cache do buffer compartilhado
pg_partman 4.0.0 Extensão usada para gerenciar tabelas particionadas por hora ou ID
pg_prewarm 1.2 pré-aquecer dados de relações
pg_stat_statements 1.6 acompanha as estatísticas de execução de todas as instruções SQL executadas
pg_trgm 1.4 medição de similaridade de texto e da pesquisa de índice com base em trigramas
plpgsql 1.0 Linguagem de procedimento PL/pgSQL
plv8 2.3.11 Linguagem de procedimento confiável PL/JavaScript (v8)
postgis 2.5.1 Funções e tipos espaciais de geometria, geografia e rasterização do PostGIS
postgis_sfcgal 2.5.1 Funções SFCGAL do PostGIS
postgis_tiger_geocoder 2.5.1 Geocodificador PostGIS Tiger e geocodificador reverso
postgis_topology 2.5.1 Tipos e funções espaciais da topologia do PostGIS
postgres_fdw 1.0 wrapper de dados externos para servidores PostgreSQL remotos
tablefunc 1.0 funções que manipulam tabelas inteiras, incluindo a tabela de referência cruzada
timescaledb 1.7.4 Permite inserções escalonáveis e consultas complexas em dados de série temporal
unaccent 1,1 dicionário de pesquisa de texto que remove sotaques
uuid-ossp 1,1 gera UUIDs (identificadores universais exclusivos)

Extensões do Postgres 10

As extensões a seguir estão disponíveis nos servidores do Banco de Dados do Azure para PostgreSQL que têm a versão 10 do Postgres.

Extensão Versão da extensão Descrição
address_standardizer 2.5.1 Usado para analisar um endereço em elementos constituintes.
address_standardizer_data_us 2.5.1 Exemplo de conjunto de dados de padronizador de endereço dos EUA
btree_gin 1,3 suporte para indexação de tipos de dados comuns no GIN
btree_gist 1.5 suporte para indexação de tipos de dados comuns no GiST
chkpass 1.0 tipo de dados para senhas criptografadas automaticamente
citext 1.4 tipo de dados para cadeias de caracteres que não diferenciam maiúsculas de minúsculas
cube 1.2 tipo de dados para cubos multidimensionais
dblink 1.2 conecta-se a outros bancos de dados PostgreSQL em um banco de dados
dict_int 1.0 modelo de dicionário de pesquisa de texto para inteiros
earthdistance 1,1 calcula distâncias de grande círculo na superfície da Terra
fuzzystrmatch 1,1 determina as semelhanças e a distância entre cadeias de caracteres
hstore 1.4 tipo de dados para armazenar conjuntos de pares (chave, valor)
hypopg 1.1.1 Índices hipotéticos para o PostgreSQL
intarray 1.2 suporte a funções, operadores e índice para matrizes 1D de inteiros
isn 1,1 tipos de dados para padrões de numeração de produtos internacionais
ltree 1,1 tipo de dados para estruturas semelhantes a árvores hierárquicas
orafce 3.7 Funções e operadores que emulam um subconjunto de funções e pacotes do RDBMS comercial
pgaudit 1.2 fornece a funcionalidade de auditoria
pgcrypto 1,3 funções criptográficas
pgrouting 2.5.2 Extensão de pgRouting
pgrowlocks 1.2 mostra informações de bloqueio no nível de linha
pgstattuple 1.5 mostra estatísticas no nível da tupla
pg_buffercache 1,3 examina o cache do buffer compartilhado
pg_partman 2.6.3 Extensão usada para gerenciar tabelas particionadas por hora ou ID
pg_prewarm 1,1 pré-aquecer dados de relações
pg_stat_statements 1.6 acompanha as estatísticas de execução de todas as instruções SQL executadas
pg_trgm 1,3 medição de similaridade de texto e da pesquisa de índice com base em trigramas
plpgsql 1.0 Linguagem de procedimento PL/pgSQL
plv8 2.1.0 Linguagem de procedimento confiável PL/JavaScript (v8)
postgis 2.4.3 Funções e tipos espaciais de geometria, geografia e rasterização do PostGIS
postgis_sfcgal 2.4.3 Funções SFCGAL do PostGIS
postgis_tiger_geocoder 2.4.3 Geocodificador PostGIS Tiger e geocodificador reverso
postgis_topology 2.4.3 Tipos e funções espaciais da topologia do PostGIS
postgres_fdw 1.0 wrapper de dados externos para servidores PostgreSQL remotos
tablefunc 1.0 funções que manipulam tabelas inteiras, incluindo a tabela de referência cruzada
timescaledb 1.7.4 Permite inserções escalonáveis e consultas complexas em dados de série temporal
unaccent 1,1 dicionário de pesquisa de texto que remove sotaques
uuid-ossp 1,1 gera UUIDs (identificadores universais exclusivos)

Extensões do Postgres 9.6

As extensões a seguir estão disponíveis nos servidores do Banco de Dados do Azure para PostgreSQL que têm a versão 9.6 do Postgres.

Extensão Versão da extensão Descrição
address_standardizer 2.3.2 Usado para analisar um endereço em elementos constituintes.
address_standardizer_data_us 2.3.2 Exemplo de conjunto de dados de padronizador de endereço dos EUA
btree_gin 1.0 suporte para indexação de tipos de dados comuns no GIN
btree_gist 1.2 suporte para indexação de tipos de dados comuns no GiST
chkpass 1.0 tipo de dados para senhas criptografadas automaticamente
citext 1,3 tipo de dados para cadeias de caracteres que não diferenciam maiúsculas de minúsculas
cube 1.2 tipo de dados para cubos multidimensionais
dblink 1.2 conecta-se a outros bancos de dados PostgreSQL em um banco de dados
dict_int 1.0 modelo de dicionário de pesquisa de texto para inteiros
earthdistance 1,1 calcula distâncias de grande círculo na superfície da Terra
fuzzystrmatch 1,1 determina as semelhanças e a distância entre cadeias de caracteres
hstore 1.4 tipo de dados para armazenar conjuntos de pares (chave, valor)
hypopg 1.1.1 Índices hipotéticos para o PostgreSQL
intarray 1.2 suporte a funções, operadores e índice para matrizes 1D de inteiros
isn 1,1 tipos de dados para padrões de numeração de produtos internacionais
ltree 1,1 tipo de dados para estruturas semelhantes a árvores hierárquicas
orafce 3.7 Funções e operadores que emulam um subconjunto de funções e pacotes do RDBMS comercial
pgaudit 1.1.2 fornece a funcionalidade de auditoria
pgcrypto 1,3 funções criptográficas
pgrouting 2.3.2 Extensão de pgRouting
pgrowlocks 1.2 mostra informações de bloqueio no nível de linha
pgstattuple 1.4 mostra estatísticas no nível da tupla
pg_buffercache 1.2 examina o cache do buffer compartilhado
pg_partman 2.6.3 Extensão usada para gerenciar tabelas particionadas por hora ou ID
pg_prewarm 1,1 pré-aquecer dados de relações
pg_stat_statements 1.4 acompanhar as estatísticas de execução de todas as instruções SQL executadas
pg_trgm 1,3 medição de similaridade de texto e da pesquisa de índice com base em trigramas
plpgsql 1.0 Linguagem de procedimento PL/pgSQL
plv8 2.1.0 Linguagem de procedimento confiável PL/JavaScript (v8)
postgis 2.3.2 Funções e tipos espaciais de geometria, geografia e rasterização do PostGIS
postgis_sfcgal 2.3.2 Funções SFCGAL do PostGIS
postgis_tiger_geocoder 2.3.2 Geocodificador PostGIS Tiger e geocodificador reverso
postgis_topology 2.3.2 Tipos e funções espaciais da topologia do PostGIS
postgres_fdw 1.0 wrapper de dados externos para servidores PostgreSQL remotos
tablefunc 1.0 funções que manipulam tabelas inteiras, incluindo a tabela de referência cruzada
timescaledb 1.7.4 Permite inserções escalonáveis e consultas complexas em dados de série temporal
unaccent 1,1 dicionário de pesquisa de texto que remove sotaques
uuid-ossp 1,1 gera UUIDs (identificadores universais exclusivos)

Extensões do Postgres 9.5

Observação

O PostgreSQL versão 9.5 foi desativado.

As extensões a seguir estão disponíveis nos servidores do Banco de Dados do Azure para PostgreSQL que têm a versão 9.5 do Postgres.

Extensão Versão da extensão Descrição
address_standardizer 2.3.0 Usado para analisar um endereço em elementos constituintes.
address_standardizer_data_us 2.3.0 Exemplo de conjunto de dados de padronizador de endereço dos EUA
btree_gin 1.0 suporte para indexação de tipos de dados comuns no GIN
btree_gist 1,1 suporte para indexação de tipos de dados comuns no GiST
chkpass 1.0 tipo de dados para senhas criptografadas automaticamente
citext 1,1 tipo de dados para cadeias de caracteres que não diferenciam maiúsculas de minúsculas
cube 1.0 tipo de dados para cubos multidimensionais
dblink 1,1 conecta-se a outros bancos de dados PostgreSQL em um banco de dados
dict_int 1.0 modelo de dicionário de pesquisa de texto para inteiros
earthdistance 1.0 calcula distâncias de grande círculo na superfície da Terra
fuzzystrmatch 1.0 determina as semelhanças e a distância entre cadeias de caracteres
hstore 1,3 tipo de dados para armazenar conjuntos de pares (chave, valor)
hypopg 1.1.1 Índices hipotéticos para o PostgreSQL
intarray 1.0 suporte a funções, operadores e índice para matrizes 1D de inteiros
isn 1.0 tipos de dados para padrões de numeração de produtos internacionais
ltree 1.0 tipo de dados para estruturas semelhantes a árvores hierárquicas
orafce 3.7 Funções e operadores que emulam um subconjunto de funções e pacotes do RDBMS comercial
pgaudit 1.0.7 fornece a funcionalidade de auditoria
pgcrypto 1.2 funções criptográficas
pgrouting 2.3.0 Extensão de pgRouting
pgrowlocks 1,1 mostra informações de bloqueio no nível de linha
pgstattuple 1,3 mostra estatísticas no nível da tupla
pg_buffercache 1,1 examina o cache do buffer compartilhado
pg_partman 2.6.3 Extensão usada para gerenciar tabelas particionadas por hora ou ID
pg_prewarm 1.0 pré-aquecer dados de relações
pg_stat_statements 1,3 acompanhar as estatísticas de execução de todas as instruções SQL executadas
pg_trgm 1,1 medição de similaridade de texto e da pesquisa de índice com base em trigramas
plpgsql 1.0 Linguagem de procedimento PL/pgSQL
postgis 2.3.0 Funções e tipos espaciais de geometria, geografia e rasterização do PostGIS
postgis_sfcgal 2.3.0 Funções SFCGAL do PostGIS
postgis_tiger_geocoder 2.3.0 Geocodificador PostGIS Tiger e geocodificador reverso
postgis_topology 2.3.0 Tipos e funções espaciais da topologia do PostGIS
postgres_fdw 1.0 wrapper de dados externos para servidores PostgreSQL remotos
tablefunc 1.0 funções que manipulam tabelas inteiras, incluindo a tabela de referência cruzada
unaccent 1.0 dicionário de pesquisa de texto que remove sotaques
uuid-ossp 1.0 gera UUIDs (identificadores universais exclusivos)

pg_stat_statements

A extensão pg_stat_statements é pré-carregada em cada servidor do Banco de Dados do Azure para PostgreSQL para fornecer a você uma forma de acompanhar as estatísticas de execução das instruções SQL. A configuração pg_stat_statements.track, que controla quais instruções são contadas por extensão, tem top como padrão, que significa que todas as instruções emitidas diretamente por clientes são rastreadas. Dois outros níveis de rastreamento são none e all. Essa definição é configurável como um parâmetro de servidor por meio de portal do Azure ou da CLI do Azure.

Há um equilíbrio entre as informações de execução de consulta fornecida por pg_stat_statements e o impacto no desempenho do servidor, que registra cada instrução SQL. Se você não está usando ativamente a extensão pg_stat_statements, recomendamos que você defina pg_stat_statements.track como none. Observe que alguns serviços de monitoramento de terceiros podem depender de pg_stat_statements para fornecer informações de desempenho de consulta, para confirmar se este é o caso para você ou não.

Com dblink e postgres_fdw, você pode se conectar de um servidor PostgreSQL a outro ou a outro banco de dados no mesmo servidor. O servidor de recebimento precisa permitir conexões do servidor de envio por meio de seu firewall. Ao usar essas extensões para conectar-se entre os servidores do Banco de Dados do Azure para PostgreSQL, isso pode ser feito definindo "Permitir acesso aos serviços do Azure" como LIGADO. Isso também será necessário se você quiser usar as extensões para executar um loop no mesmo servidor. A configuração "Permitir acesso aos serviços do Azure" pode ser encontrada na página do portal do Azure para o servidor Postgres em Segurança de Conexão. A ativação de "Permitir acesso aos serviços do Azure" coloca todos os IPs do Azure na lista de permitidos.

Observação

Atualmente, não há suporte para conexões de saída do Banco de Dados do Azure para PostgreSQL por meio de extensões de wrapper de dados, tais como postgres_fdw, exceto as conexões com outros servidores do Banco de Dados do Azure para PostgreSQL na mesma região do Azure.

uuid

Se você estiver planejando usar uuid_generate_v4() na extensão uuid-ossp, considere a possibilidade de comparação com gen_random_uuid() na extensão pgcrypto para obter os benefícios de desempenho.

pgAudit

A extensão pgAudit fornece log de auditoria de sessão e objeto. Para saber como usar essa extensão no Banco de Dados do Azure para PostgreSQL, acesse o artigo sobre conceitos de auditoria.

pg_prewarm

A extensão pg_prewarm carrega dados relacionais no cache. O pré-aquecimento dos caches significa que as consultas têm tempos de resposta melhores na primeira execução após uma reinicialização. No Postgres 10 e inferior, o pré-aquecimento é feito manualmente por meio da função prewarm.

No Postgres 11 e posterior, você pode configurar o pré-aquecimento automático. Você precisa incluir pg_prewarm na lista de parâmetros shared_preload_libraries e reiniciar o servidor para aplicar a alteração. Os parâmetros podem ser definidos no portal do Azure, na CLI, na API REST ou no modelo do ARM.

TimescaleDB

O TimescaleDB é um banco de dados de série temporal empacotado como uma extensão para PostgreSQL. Ele fornece funções analíticas orientadas a tempo, otimizações e escala o Postgres para cargas de trabalho de série temporal.

Saiba mais sobre o TimescaleDB, uma marca comercial registrada da Timescale, Inc.. O Banco de Dados do Azure para PostgreSQL fornece a edição Apache-2 do TimescaleDB.

Como instalar o TimescaleDB

Para instalar o TimescaleDB, você precisa incluí-lo nas bibliotecas de pré-carregamento compartilhadas do servidor. Uma alteração no parâmetro shared_preload_libraries do Postgres exige uma shared_preload_libraries para entrar em vigor. Altere os parâmetros usando o portal do Azure ou a CLI do Azure.

Usando o portal do Azure:

  1. Selecione seu servidor de Banco de Dados do Azure para PostgreSQL.

  2. Na barra lateral, selecione Parâmetros do Servidor.

  3. Pesquise o parâmetro shared_preload_libraries.

  4. Selecione TimescaleDB.

  5. Escolha Salvar para preservar as alterações. Você receberá uma notificação quando a alteração for salva.

  6. Após a notificação, reinicie o servidor para aplicar essas alterações. Para saber como reiniciar um servidor, confira Reiniciar um servidor de Banco de Dados do Azure para PostgreSQL.

Agora você pode habilitar TimescaleDB no seu banco de dados do Postgres. Conecte-se ao banco de dados e emita o seguinte comando:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Dica

Se você receber um erro, confirme se você reiniciou o servidor depois de salvar shared_preload_libraries.

Agora você pode criar uma hipertabela do TimescaleDB do zero ou migrar os dados de série temporal existentes no PostgreSQL.

Restaurando um banco de dados do Timescale usando pg_dump e pg_restore

Para restaurar um banco de dados do Timescale usando pg_dump e pg_restore, você precisará executar dois procedimentos auxiliares no banco de dados de destino: timescaledb_pre_restore() e timescaledb_post restore().

Primeiro, prepare o banco de dados de destino:

--create the new database where you'll perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database 
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

Agora você pode executar pg_dump no banco de dados original e executar pg_restore. Após a restauração, lembre-se de executar o seguinte comando no banco de dados restaurado:

SELECT timescaledb_post_restore();

Para obter mais detalhes sobre o método de restauração com banco de dados habilitado para Timescale, confira a documentação do Timescale

Restaurando um banco de dados do Timescale usando timescaledb-backup

Durante a execução do procedimento SELECT timescaledb_post_restore() listado acima, você poderá ver erro de permissões negadas ao atualizar o sinalizador timescaledb.restaurando. Isso ocorre devido à permissão ALTER DATABASE limitada nos serviços de banco de dados de PaaS de nuvem. Nesse caso, você pode executar um método alternativo usando a ferramenta timescaledb-backup para fazer backup e restaurar o banco de dados do Timescale. Timescaledb-backup é um programa para tornar o despejo e a restauração de um banco de dados TimescaleDB mais simples e menos propenso a erros e aumentar seu desempenho. Para isso, você deve fazer o que é mostrado abaixo

  1. Instale as ferramentas conforme detalhado aqui
  2. Criar banco de dados e servidor de destino do Banco de Dados do Azure para PostgreSQL
  3. Habilitar a extensão do Timescale conforme mostrado acima
  4. Conceder a função azure_pg_admin ao usuário que será usado por ts-restore
  5. Executar ts-restore para restaurar o banco de dados

Mais detalhes sobre esses utilitários podem ser encontrados aqui.

Observação

O uso de utilitários timescale-backup para restaurar no Azure ocorre porque os nomes de usuário de banco de dados para o Banco de Dados do Azure para PostgresQL não flexíveis precisam usar o formato <user@db-name>; você precisa substituir @ pela codificação de caracteres %40.

Próximas etapas

Se você não vir uma extensão que gostaria de usar, fale conosco. Vote em solicitações existentes ou crie comentários e solicitações em nosso fórum de comentários.