Extensões Oficiais do PostgreSQL
O ServBay é um poderoso ambiente local para desenvolvimento web, integrado a diversas ferramentas para desenvolvedores, incluindo o robusto banco de dados PostgreSQL. A força do PostgreSQL reside não apenas em seus recursos essenciais, mas também em seu vasto ecossistema de extensões oficiais. O ServBay já vem com a maioria dos módulos de extensão oficiais do PostgreSQL pré-instalados, permitindo que desenvolvedores ativem e usem esses módulos no ambiente local de maneira simples, expandindo massivamente as capacidades do banco de dados para atender até mesmo demandas de aplicações complexas.
Este artigo apresenta algumas das extensões oficiais mais utilizadas do PostgreSQL e explica como instalá-las e utilizá-las no ServBay.
Visão Geral das Extensões Mais Usadas
O PostgreSQL oferece muitas extensões oficiais, abrangendo funcionalidades como monitoramento de desempenho, novos tipos de dados, busca textual avançada e muito mais. Abaixo estão algumas das extensões que desenvolvedores usam com frequência no dia a dia:
1. pg_stat_statements
- Função: Coleta e registra estatísticas sobre todas as instruções SQL executadas no servidor, como tempo total de execução, número de chamadas, linhas processadas, entre outros.
- Utilidade: Ajuda administradores e desenvolvedores de bancos de dados a analisar o desempenho de consultas, identificar gargalos e otimizar queries lentas.
- Comando de instalação:sqlObservação: Após a instalação, é geralmente necessário configurar
CREATE EXTENSION pg_stat_statements;
1shared_preload_libraries = 'pg_stat_statements'
no arquivopostgresql.conf
e reiniciar o serviço PostgreSQL para habilitar totalmente e começar a coletar dados. O ServBay oferece uma forma conveniente de alterar essa configuração.
2. pg_trgm
- Função: Fornece funções e suporte a índices baseados em trigramas para medir semelhança de texto.
- Utilidade: Permite buscas por similaridade, correspondência aproximada e busca textual eficiente, ideal para lidar com erros de digitação e variações em textos.
- Comando de instalação:sql
CREATE EXTENSION pg_trgm;
1
3. hstore
- Função: Disponibiliza um tipo de dado para armazenar pares chave-valor em um único campo do PostgreSQL.
- Utilidade: Útil para cenários que exigem armazenamento de propriedades dinâmicas, dados semi-estruturados, configurações, metadados ou preferências de usuários sem a necessidade de um esquema de tabela fixo.
- Comando de instalação:sql
CREATE EXTENSION hstore;
1
4. citext
- Função: Disponibiliza um tipo de dado de texto onde as comparações de valores não diferenciam maiúsculas de minúsculas.
- Utilidade: Ideal para armazenar e comparar informações como nomes de usuário, e-mails ou tags sem precisar usar funções como
LOWER()
em queries, simplificando a lógica da aplicação. - Comando de instalação:sql
CREATE EXTENSION citext;
1
5. uuid-ossp
- Função: Fornece funções para gerar identificadores universais únicos (UUID), suportando vários padrões, como versões 1, 3, 4 e 5.
- Utilidade: Utilizada para geração de chaves primárias, IDs de sessão, marcadores únicos em sistemas distribuídos e qualquer cenário que exija unicidade global.
- Comando de instalação:sqlObservação: O nome da extensão possui hífen e, por isso, deve ser colocado entre aspas duplas no comando SQL.
CREATE EXTENSION "uuid-ossp";
1
6. intarray
- Função: Oferece funções e operadores adicionais para manipulação avançada de arrays de inteiros.
- Utilidade: Permite operações como interseção, união, ordenação e checagem de inclusão de arrays diretamente no banco, útil para lógica avançada com arrays de inteiros.
- Comando de instalação:sql
CREATE EXTENSION intarray;
1
7. btree_gin
- Função: Oferece suporte a operações de índice GIN (Generalized Inverted Index) para tipos de dados normalmente indexados por B-tree (como inteiros, textos, datas etc.).
- Utilidade: Índices GIN são úteis para dados com múltiplos valores, como arrays,
hstore
etsvector
. Obtree_gin
permite usar índices GIN em elementos que seriam normalmente indexados por B-tree, melhorando a performance de queries complexas. - Comando de instalação:sql
CREATE EXTENSION btree_gin;
1
8. btree_gist
- Função: Provê suporte a índices GiST (Generalized Search Tree) para tipos de dados B-tree.
- Utilidade: Os índices GiST são estruturas flexíveis para múltiplos tipos de consulta (intervalos, inclusão, etc). O
btree_gist
é útil para criar índices em múltiplas colunas ou realizar queries com diferentes critérios. - Comando de instalação:sql
CREATE EXTENSION btree_gist;
1
9. cube
- Função: Disponibiliza um tipo de dado para representar cubos multidimensionais e pontos, além de funções e operadores associados.
- Utilidade: Perfeita para aplicações que lidam com dados multidimensionais, tais como análises espaciais simples (pontos 2D ou 3D), BI, ou algumas aplicações científicas.
- Comando de instalação:sql
CREATE EXTENSION cube;
1
10. fuzzystrmatch
- Função: Disponibiliza funções para determinar similaridade e distância entre strings, como Levenshtein, Soundex, Metaphone, entre outros.
- Utilidade: Excelente para busca por aproximação, correção ortográfica, deduplicação e limpeza de dados textuais.
- Comando de instalação:sql
CREATE EXTENSION fuzzystrmatch;
1
11. plpgsql
- Função: Linguagem procedural do PostgreSQL, possibilitando a escrita de funções, procedimentos armazenados e triggers.
- Utilidade: Permite implementar lógica de negócios no lado do servidor, automatizar tarefas e processar dados de forma avançada. O
plpgsql
geralmente já está instalado por padrão, mas pode ser explicitamente criado se necessário. - Comando de instalação:sql
CREATE EXTENSION plpgsql;
1
12. tablefunc
- Função: Disponibiliza funções para manipulação e transformação de tabelas inteiras, sendo a mais famosa a
crosstab
. - Utilidade: Usada para queries do tipo pivot (cruzadas), transformando valores de linhas em colunas, muito útil para relatórios e análises.
- Comando de instalação:sql
CREATE EXTENSION tablefunc;
1
13. dblink
- Função: Permite conectar um banco de dados PostgreSQL a outro e executar queries diretamente entre eles.
- Utilidade: Facilitador para consultas ou transferências simples de dados entre bancos distintos sem a necessidade de lógica externa na aplicação.
- Comando de instalação:sql
CREATE EXTENSION dblink;
1
14. postgres_fdw
- Função: Fornece um Foreign Data Wrapper para acessar e consultar tabelas de bancos PostgreSQL externos como se fossem locais.
- Utilidade: Solução poderosa e flexível para integração e consultas distribuídas entre múltiplos bancos PostgreSQL, com suporte avançado a otimização de queries.
- Comando de instalação:sql
CREATE EXTENSION postgres_fdw;
1
15. pgcrypto
- Função: Disponibiliza funções para criptografia e descriptografia, incluindo hash, criptografia simétrica e assimétrica, entre outras.
- Utilidade: Implementa segurança, como armazenamento de senhas em hash, assinatura digital e criptografia de dados diretamente pelo banco de dados.
- Comando de instalação:sql
CREATE EXTENSION pgcrypto;
1
Estes são apenas alguns dos muitos módulos de extensão oficiais do PostgreSQL inclusos no ServBay. O objetivo é suprir as necessidades dos desenvolvedores ao fornecer a maioria das extensões oficiais fornecidas pela comunidade.
Instalando e Utilizando Extensões PostgreSQL no ServBay
Instalar e usar extensões do PostgreSQL no ServBay é simples e direto. Por padrão, as extensões são habilitadas por banco de dados, ou seja, você deve ativar as extensões em cada banco em que deseja usá-las.
Pré-requisitos:
- Certifique-se de que o ServBay está em execução e o serviço do PostgreSQL está ativo.
Passo a passo:
Conecte-se ao banco de dados PostgreSQL desejado: Abra o terminal (como Terminal no macOS ou iTerm2) e use o comando
psql
para conectar ao banco onde será instalada a extensão. Por padrão, o usuário épostgres
e o banco padrão também se chamapostgres
no ServBay.bashpsql -U seu_usuario -d seu_banco
1Por exemplo, para conectar ao banco
postgres
padrão:bashpsql -U postgres -d postgres
1Se for solicitada uma senha, digite a senha definida para o usuário root/postgres do PostgreSQL no ServBay.
Instale o módulo de extensão: Após conectar, na interface do
psql
, execute o comandoCREATE EXTENSION
para instalar a extensão desejada. Substituamodule_name
pelo nome da extensão escolhida.sqlCREATE EXTENSION module_name;
1Exemplo, para instalar a extensão
pg_trgm
:sqlCREATE EXTENSION pg_trgm;
1Verifique a instalação: Depois de instalar, use o comando
\dx
para listar todas as extensões instaladas no banco e confirmar se a instalação foi concluída com sucesso.sql\dx
1
Exemplo: Ativando a extensão pg_trgm
Veja abaixo um exemplo completo de ativação da extensão pg_trgm
no banco padrão postgres
:
# Execute no terminal para conectar ao banco de dados
psql -U postgres -d postgres
# Após conectar, aparecerá o prompt do psql
psql (16.3 (ServBay))
Type "help" for help.
postgres=# -- Veja as extensões atualmente instaladas (exemplo, pode mostrar apenas plpgsql e pgcrypto por padrão)
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+------------------------------
pgcrypto | 1.3 | public | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
postgres=# -- Instale a extensão pg_trgm
postgres=# CREATE EXTENSION pg_trgm;
CREATE EXTENSION
postgres=# -- Liste novamente as extensões e confira se pg_trgm foi adicionada
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+-------------------------------------------------------------------
pg_trgm | 1.6 | public | text similarity measurement and index searching based on trigrams
pgcrypto | 1.3 | public | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(3 rows)
postgres=# -- Pronto, agora você pode utilizar todas as funções e operadores do pg_trgm neste banco
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Consultando as Extensões Disponíveis no PostgreSQL pelo ServBay
Antes de instalar extensões, pode ser útil saber todas as extensões disponíveis na versão PostgreSQL integrada ao ServBay. Assim, você pode descobrir funcionalidades extras úteis.
Após conectar a qualquer banco PostgreSQL, execute o seguinte comando SQL para ver a lista completa de extensões disponíveis:
SELECT * FROM pg_available_extensions ORDER BY name;
Este comando retorna uma tabela com as extensões suportadas pela versão do PostgreSQL do ServBay, mostrando nome, versão padrão, status de instalação e descrição.
Um retorno típico (a lista pode variar em comprimento e conteúdo conforme a versão do ServBay/PostgreSQL) seria assim:
name | default_version | installed_version | comment
------------------------------+-----------------+-------------------+---------------------------------------------------------------------------------------------------------------------
address_standardizer | 3.4.2 | | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.
address_standardizer_data_us | 3.4.2 | | Address Standardizer US dataset example
adminpack | 2.1 | | administrative functions for PostgreSQL
amcheck | 1.3 | | functions for verifying relation integrity
autoinc | 1.0 | | functions for autoincrementing fields
bloom | 1.0 | | bloom access method - signature file based index
btree_gin | 1.3 | | support for indexing common datatypes in GIN
btree_gist | 1.7 | | support for indexing common datatypes in GiST
citext | 1.6 | | data type for case-insensitive character strings
cube | 1.5 | | data type for multidimensional cubes
dblink | 1.2 | | connect to other PostgreSQL databases from within a database
dict_int | 1.0 | | text search dictionary template for integers
dict_xsyn | 1.0 | | text search dictionary template for extended synonym processing
earthdistance | 1.1 | | calculate great-circle distances on the surface of the Earth
file_fdw | 1.0 | | foreign-data wrapper for flat file access
fuzzystrmatch | 1.2 | | determine similarities and distance between strings
hstore | 1.8 | | data type for storing sets of (key, value) pairs
insert_username | 1.0 | | functions for tracking who changed a table
intagg | 1.1 | | integer aggregator and enumerator (obsolete)
intarray | 1.5 | | functions, operators, and index support for 1-D arrays of integers
isn | 1.2 | | data types for international product numbering standards
lo | 1.1 | | Large Object maintenance
ltree | 1.2 | | data type for hierarchical tree-like structures
moddatetime | 1.0 | | functions for tracking last modification time
old_snapshot | 1.0 | | utilities in support of old_snapshot_threshold
pageinspect | 1.12 | | inspect the contents of database pages at a low level
pg_buffercache | 1.4 | | examine the shared buffer cache
pg_freespacemap | 1.2 | | examine the free space map (FSM)
pg_jieba | 1.1.1 | | a parser for full-text search of Chinese
pg_prewarm | 1.2 | | prewarm relation data
pg_stat_statements | 1.10 | | track planning and execution statistics of all SQL statements executed
pg_surgery | 1.0 | | extension to perform surgery on a damaged relation
pg_trgm | 1.6 | 1.6 | text similarity measurement and index searching based on trigrams
pg_visibility | 1.2 | | examine the visibility map (VM) and page-level visibility info
pg_walinspect | 1.1 | | functions to inspect contents of PostgreSQL Write-Ahead Log
pgcrypto | 1.3 | 1.3 | cryptographic functions
pgrouting | 3.6.2 | | pgRouting Extension
pgrowlocks | 1.2 | | show row-level locking information
pgstattuple | 1.5 | | show tuple-level statistics
plpgsql | 1.0 | 1.0 | PL/pgSQL procedural language
postgis | 3.4.2 | | PostGIS geometry and geography spatial types and functions
postgis_sfcgal | 3.4.2 | | PostGIS SFCGAL functions
postgis_tiger_geocoder | 3.4.2 | | PostGIS tiger geocoder and reverse geocoder
postgres_fdw | 1.1 | | foreign-data wrapper for remote PostgreSQL servers
refint | 1.0 | | functions for implementing referential integrity (obsolete)
seg | 1.4 | | data type for representing line segments or floating-point intervals
sslinfo | 1.2 | | information about SSL certificates
tablefunc | 1.0 | | functions that manipulate whole tables, including crosstab
tcn | 1.0 | | Triggered change notifications
tsm_system_rows | 1.0 | | TABLESAMPLE method which accepts number of rows as a limit
tsm_system_time | 1.0 | | TABLESAMPLE method which accepts time in milliseconds as a limit
unaccent | 1.1 | | text search dictionary that removes accents
vector | 0.7.0 | | vector data type and ivfflat and hnsw access methods
xml2 | 1.1 | | XPath querying and XSLT
zhparser | 2.2 | | a parser for full-text search of Chinese
(55 rows)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Lembre-se: esta lista é apenas um exemplo. Os itens e versões reais disponíveis no seu ServBay podem variar conforme atualizações do ServBay ou do PostgreSQL.
Conclusão
O ServBay facilita enormemente o uso dos poderosos recursos das extensões oficiais do PostgreSQL no ambiente de desenvolvimento local. Com as extensões pré-instaladas, os desenvolvedores não precisam compilar ou instalar manualmente; basta executar comandos SQL simples para habilitar o que precisam e focar no desenvolvimento do seu aplicativo. Estas extensões permitem adicionar recursos avançados ao seu banco de dados — como análise de desempenho, busca textual completa, criptografia de dados e muito mais — com praticidade e eficiência.