Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Administração Linux

Guia Completo do PostgreSQL: Instalação, Configuração e Recursos Principais

PostgreSQL é um dos sistemas de gerenciamento de banco de dados relacional (RDBMS) de código aberto mais poderosos disponíveis atualmente. Reconhecido por sua estabilidade, extensibilidade e conformidade com os padrões SQL, é confiável por desenvolvedores, engenheiros de dados e empresas em todo o mundo para gerenciar grandes e complexos conjuntos de dados com confiança. Quer você esteja construindo uma aplicação web, um data warehouse ou um backend de microsserviços, PostgreSQL oferece o desempenho e a confiabilidade que seu projeto exige.

Este guia abrangente cobre tudo o que você precisa saber: o que é PostgreSQL, seus recursos destacados, como instalá-lo no Ubuntu e como realizar operações essenciais de banco de dados para começar rapidamente.

1. O Que É PostgreSQL?

PostgreSQL — frequentemente chamado de "Postgres" — é um sistema de gestão de base de dados objeto-relacional (ORDBMS) que estende as capacidades das bases de dados relacionais tradicionais. Ao contrário de motores SQL mais simples, PostgreSQL suporta tipos de dados avançados (incluindo JSON, arrays e hstore), linguagens procedurais e funções definidas pelo utilizador, tornando-o adequado para uma ampla gama de casos de uso, desde aplicações web simples até cargas de trabalho analíticas complexas.

Lançado pela primeira vez em 1996 e apoiado por uma comunidade de código aberto vibrante, PostgreSQL evoluiu para um motor de base de dados de nível de produção que compete diretamente com soluções comerciais como Oracle e Microsoft SQL Server — sem qualquer custo de licença.

Por Que Escolher PostgreSQL Em Vez De Outras Bases De Dados?

FuncionalidadePostgreSQLMySQLSQLite
Conformidade ACID✅ Completa✅ Parcial✅ Limitada
Suporte JSON✅ Nativo✅ Básico
Tipos De Dados Personalizados✅ Sim❌ Não❌ Não
Pesquisa De Texto Completo✅ Integrada✅ Básica
Extensibilidade✅ Alta⚠️ Moderada❌ Baixa
Concorrência (MVCC)✅ Sim⚠️ Limitada❌ Não

2. Características Principais do PostgreSQL

Compreender o que torna o PostgreSQL excepcional ajudará você a aproveitar todo o seu potencial na sua infraestrutura.

2.1. Tipos de Dados Avançados

PostgreSQL suporta uma gama notavelmente ampla de tipos de dados nativos, muito além do que a maioria dos bancos de dados oferece:

  • Tipos primitivos: INTEGER, NUMERIC, VARCHAR, BOOLEAN, DATE, TIMESTAMP
  • Tipos estruturados: Arrays, Tipos compostos, Tipos de intervalo
  • Tipos de documento: JSON e JSONB (JSON binário para consultas mais rápidas)
  • Tipos de rede: INET, CIDR, MACADDR — ideais para aplicações relacionadas a redes
  • Tipos geométricos: POINT, LINE, POLYGON — úteis para aplicações GIS
  • UUID: Suporte nativo para identificadores universalmente únicos
  • Full-Text Search (FTS): Os tipos tsvector e tsquery integrados permitem busca de texto completo poderosa e sensível ao idioma sem ferramentas externas

Esta versatilidade significa que você pode modelar praticamente qualquer estrutura de dados do mundo real diretamente no banco de dados.

2.2. Extensibilidade

PostgreSQL foi projetado para ser extensível. Você pode personalizar e expandir sua funcionalidade sem modificar o mecanismo principal:

  • Funções Personalizadas e Procedimentos Armazenados: Escreva lógica de negócios diretamente no banco de dados usando PL/pgSQL, PL/Perl, PL/Python, PL/Tcl, ou até PL/V8 (JavaScript)
  • Operadores e Agregados Personalizados: Defina seus próprios operadores adaptados aos seus tipos de dados
  • Extensões: O ecossistema de extensões do PostgreSQL é vasto. As extensões populares incluem:
PostGIS — suporte avançado de dados geoespaciais
pg_stat_statements — monitoramento de desempenho de consultas
pgcrypto — funções criptográficas
uuid-ossp — geração de UUID
TimescaleDB — otimização de dados de série temporal

2.3. Controle de Concorrência e Transações
PostgreSQL lida com acesso concorrente graciosamente através do Multi-Version Concurrency Control (MVCC):

MVCC: Em vez de bloquear linhas durante leituras, PostgreSQL cria um instantâneo dos dados para cada transação. Isso permite que leitores e escritores operem simultaneamente sem se bloquearem mutuamente, melhorando dramaticamente o desempenho sob alta concorrência.
Conformidade ACID: Cada transação no PostgreSQL é totalmente compatível com ACID:
Atomicidade — as transações são concluídas completamente ou não
Consistência — os dados sempre se movem de um estado válido para outro
Isolamento — transações concorrentes não interferem uma com a outra
Durabilidade — dados confirmados sobrevivem a falhas do sistema via Write-Ahead Logging (WAL)
Savepoints: Controle de transação refinado dentro de um bloco de transação único
Two-Phase Commit (2PC): Suporta transações distribuídas em múltiplos nós de banco de dados

2.4. Recursos de Segurança
PostgreSQL inclui capacidades de segurança de nível empresarial:

Controle de acesso baseado em função (RBAC) com gerenciamento de privilégios granular
Row-Level Security (RLS) — restrinja o acesso aos dados no nível de linha por usuário
Encriptação SSL/TLS para conexões em trânsito
Autenticação SCRAM-SHA-256 e MD5
pg_hba.conf — configuração de autenticação baseada em host flexível

2.5. Alta Disponibilidade e Replicação

Streaming Replication: Replicação em tempo real de primário para réplica
Logical Replication: Replique tabelas específicas ou publicações seletivamente
Point-in-Time Recovery (PITR): Restaure seu banco de dados para qualquer momento específico usando arquivos WAL
Suporte a Failover: Compatível com ferramentas como Patroni, repmgr e pgBouncer para pool de conexões

3. Instalação do PostgreSQL no Ubuntu
Esta secção orienta-o através de uma instalação completa e pronta para produção do PostgreSQL no Ubuntu 22.04 LTS. Os mesmos passos aplicam-se ao Ubuntu 20.04 com pequenas variações.
> Pré-requisitos: Um servidor a executar Ubuntu 22.04 LTS com privilégios sudo. Se necessitar de um ambiente de servidor fiável, considere VPS Hosting da AlexHost — ideal para executar cargas de trabalho de base de dados com recursos garantidos e acesso root completo.
Passo 1: Actualizar o Índice de Pacotes
Comece sempre por actualizar as suas listas de pacotes para garantir que instala a versão mais recente disponível:
sudo apt update && sudo apt upgrade -y
Passo 2: Instalar PostgreSQL
Instale o PostgreSQL juntamente com o pacote postgresql-contrib, que inclui utilitários e extensões adicionais:
sudo apt install postgresql postgresql-contrib -y
Isto instala o PostgreSQL 14 (ou a versão mais recente disponível no seu repositório Ubuntu). Para instalar uma versão específica (por exemplo, PostgreSQL 16) a partir do repositório APT oficial do PostgreSQL, utilize o seguinte:
# Add the PostgreSQL APT repository
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# Import the signing key
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

# Update and install
sudo apt update
sudo apt install postgresql-16 -y
Passo 3: Iniciar e Activar o Serviço PostgreSQL
Após a instalação, inicie o serviço e configure-o para ser lançado automaticamente no arranque do sistema:
sudo systemctl start postgresql
sudo systemctl enable postgresql
Passo 4: Verificar a Instalação
Confirme que o PostgreSQL está a funcionar correctamente:
sudo systemctl status postgresql
Resultado esperado:
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
     Active: active (running) since ...
Também pode verificar a versão instalada:
psql --version
# Output: psql (PostgreSQL) 16.x
Passo 5: Configurar PostgreSQL para Acesso Remoto (Opcional)
Por padrão, o PostgreSQL apenas escuta no localhost. Para permitir ligações remotas (por exemplo, a partir do seu servidor de aplicações), edite o ficheiro de configuração principal:
sudo nano /etc/postgresql/16/main/postgresql.conf
Localize e modifique esta linha:
listen_addresses = 'localhost'
Altere-a para:
listen_addresses = '*'
Depois actualize o ficheiro de autenticação baseado em anfitriões:
sudo nano /etc/postgresql/16/main/pg_hba.conf
Adicione a seguinte linha para permitir um intervalo de IP específico (substitua pelo seu intervalo de IP real):
host    all             all             192.168.1.0/24          scram-sha-256
Reinicie o PostgreSQL para aplicar as alterações:
sudo systemctl restart postgresql
> Nota de Segurança: Sempre restrinja o acesso remoto a endereços IP conhecidos e certifique-se de que a sua firewall (UFW ou iptables) está configurada adequadamente. Emparelhe o seu servidor de base de dados com um Certificado SSL para encriptar todos os dados em trânsito.
4. Utilização Básica do PostgreSQL
Agora que o PostgreSQL está instalado, vamos percorrer as operações essenciais que todo administrador e desenvolvedor precisa conhecer.
Passo 1: Aceder à Shell do PostgreSQL
O PostgreSQL cria um utilizador de sistema padrão chamado postgres durante a instalação. Mude para este utilizador e abra a shell interativa:
sudo -i -u postgres
psql
Deverá ver a linha de comandos do PostgreSQL:
postgres=#
Alternativamente, pode aceder à shell diretamente sem mudar de utilizador:
sudo -u postgres psql
Passo 2: Criar uma Base de Dados
Crie uma nova base de dados para a sua aplicação:
CREATE DATABASE mydatabase;
Verifique se foi criada:
l
Isto lista todas as bases de dados no servidor.
Passo 3: Criar um Utilizador (Role)
Crie um utilizador de base de dados dedicado com uma senha segura:
CREATE USER myuser WITH PASSWORD 'StrongP@ssw0rd!';
Boa prática: evite usar o utilizador postgres padrão para ligações de aplicações. Crie sempre uma role dedicada com privilégios mínimos.
Passo 4: Conceder Privilégios
Conceda ao novo utilizador acesso total à base de dados:
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
Para um controlo mais granular, pode conceder privilégios específicos em esquemas e tabelas individuais:
-- Connect to the database first
c mydatabase

-- Grant usage on the public schema
GRANT USAGE ON SCHEMA public TO myuser;

-- Grant privileges on all existing tables
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO myuser;

-- Ensure future tables are also accessible
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO myuser;
Passo 5: Ligar-se à Base de Dados como o Novo Utilizador
Saia da sessão atual e reconecte-se como o novo utilizador:
q
Depois ligue-se diretamente:
psql -U myuser -d mydatabase -h localhost
Passo 6: Criar Tabelas e Inserir Dados
Uma vez ligado, crie a sua primeira tabela:
CREATE TABLE employees (
    id          SERIAL PRIMARY KEY,
    first_name  VARCHAR(50) NOT NULL,
    last_name   VARCHAR(50) NOT NULL,
    email       VARCHAR(100) UNIQUE NOT NULL,
    department  VARCHAR(50),
    salary      NUMERIC(10, 2),
    hired_at    TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Insira alguns registos:
INSERT INTO employees (first_name, last_name, email, department, salary)
VALUES
    ('Alice', 'Johnson', 'alice@example.com', 'Engineering', 85000.00),
    ('Bob', 'Smith', 'bob@example.com', 'Marketing', 72000.00),
    ('Carol', 'Williams', 'carol@example.com', 'Engineering', 91000.00);
Consulte os dados:
SELECT first_name, last_name, department, salary
FROM employees
WHERE department = 'Engineering'
ORDER BY salary DESC;
Passo 7: Referência de Comandos psql Essenciais




Comando
Descrição




l
Listar todas as bases de dados


c dbname
Ligar a uma base de dados


dt
Listar todas as tabelas na base de dados atual


d tablename
Descrever estrutura da tabela


du
Listar todos os utilizadores/roles


i file.sql
Executar SQL a partir de um ficheiro


timing
Ativar/desativar exibição do tempo de execução de consultas


q
Sair do psql


?
Ajuda para comandos psql


h
Ajuda para comandos SQL




5. Essenciais de Otimização de Desempenho do PostgreSQL
Uma instalação padrão do PostgreSQL é conservadora no uso de recursos. Em ambientes de produção, ajustar a configuração melhora significativamente o desempenho.
Parâmetros-chave em postgresql.conf
sudo nano /etc/postgresql/16/main/postgresql.conf




Parâmetro
Padrão
Recomendado (servidor com 8GB RAM)




shared_buffers
128MB
2GB (25% de RAM)


effective_cache_size
4GB
6GB (75% de RAM)


work_mem
4MB
64MB


maintenance_work_mem
64MB
512MB


max_connections
100
200 (use pgBouncer para mais)


wal_buffers
-1 (auto)
64MB


checkpoint_completion_target
0.9
0.9




Aplique as alterações reiniciando o serviço:
sudo systemctl restart postgresql
Melhores Práticas de Indexação
Os índices são críticos para o desempenho das consultas:
-- B-tree index (default, for equality and range queries)
CREATE INDEX idx_employees_department ON employees(department);

-- Partial index (index only a subset of rows)
CREATE INDEX idx_high_earners ON employees(salary) WHERE salary > 80000;

-- Composite index (for multi-column queries)
CREATE INDEX idx_dept_salary ON employees(department, salary DESC);

-- GIN index (for full-text search and JSONB)
CREATE INDEX idx_fts ON articles USING GIN(to_tsvector('english', content));
6. Cópia de Segurança e Recuperação
A proteção de dados é inegociável. PostgreSQL fornece ferramentas robustas integradas para cópia de segurança e recuperação.
Cópia de Segurança Lógica com pg_dump
# Backup a single database
pg_dump -U postgres -d mydatabase -F c -f /backups/mydatabase_$(date +%Y%m%d).dump

# Backup all databases
pg_dumpall -U postgres > /backups/all_databases_$(date +%Y%m%d).sql
Restaurar a partir de Cópia de Segurança
# Restore a custom-format dump
pg_restore -U postgres -d mydatabase -F c /backups/mydatabase_20240101.dump

# Restore from SQL file
psql -U postgres -d mydatabase < /backups/all_databases_20240101.sql
Script de Cópia de Segurança Automatizada
#!/bin/bash
BACKUP_DIR="/var/backups/postgresql"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="mydatabase"

mkdir -p "$BACKUP_DIR"
pg_dump -U postgres -F c -d "$DB_NAME" -f "$BACKUP_DIR/${DB_NAME}_${DATE}.dump"

# Retain only the last 7 days of backups
find "$BACKUP_DIR" -name "*.dump" -mtime +7 -delete

echo "Backup completed: ${DB_NAME}_${DATE}.dump"
Adicione isto ao cron para cópias de segurança automatizadas diárias:
crontab -e
# Add: 0 2 * * * /usr/local/bin/pg_backup.sh >> /var/log/pg_backup.log 2>&1
7. Hosting PostgreSQL: Escolher a Infraestrutura Certa
O desempenho e a confiabilidade da sua implementação PostgreSQL dependem muito da infraestrutura subjacente. Aqui estão as melhores opções de hosting dependendo da sua carga de trabalho:
Para Desenvolvimento e Pequenas Aplicações
Shared Web Hosting fornece um ponto de entrada acessível para pequenos projetos. No entanto, para aplicações intensivas em banco de dados, recursos dedicados são fortemente recomendados.
Para Aplicações Web em Produção
Um plano VPS Hosting oferece CPU e RAM dedicados, acesso root completo e a capacidade de ajustar parâmetros de configuração do PostgreSQL — essencial para desempenho de banco de dados em nível de produção. Os planos VPS da AlexHost estão disponíveis com armazenamento NVMe SSD, o que reduz drasticamente a latência de I/O do PostgreSQL.
Se você preferir uma experiência com painel de controle gerenciado, VPS com cPanel simplifica o gerenciamento do servidor enquanto ainda oferece acesso à sua instância PostgreSQL.
Para Cargas de Trabalho de Alto Tráfego e Empresariais
Servidores Dedicados da AlexHost fornecem desempenho máximo sem compartilhamento de recursos. Esta é a escolha ideal para grandes implementações PostgreSQL que lidam com milhões de transações por dia, consultas analíticas complexas ou configurações de replicação de alta disponibilidade.
Para Cargas de Trabalho de IA e Machine Learning
Se você está usando PostgreSQL junto com pipelines de machine learning (por exemplo, com pgvector para busca de similaridade de vetores), GPU Hosting da AlexHost oferece o poder computacional necessário para processamento de dados orientado por IA.
8. Security Hardening Checklist
Antes de implementar PostgreSQL em produção, execute esta lista de verificação de segurança:

[ ] Altere a senha padrão postgres: ALTER USER postgres WITH PASSWORD 'NewStrongPassword!';
  • [ ] Desative o acesso remoto para o superuser em pg_hba.conf
  • [ ] Use funções dedicadas com privilégios mínimos para cada aplicação
  • [ ] Ative conexões SSL em postgresql.conf: ssl = on
  • [ ] Configure regras de firewall para restringir a porta 5432 apenas a IPs conhecidos
  • [ ] Ative Row-Level Security (RLS) para aplicações multi-tenant
  • [ ] Audite regularmente os privilégios dos utilizadores: du e dp
  • [ ] Mantenha PostgreSQL atualizado para receber patches de segurança
  • [ ] Monitorize registos em /var/log/postgresql/ para atividades suspeitas
  • [ ] Implemente cópias de segurança automatizadas com armazenamento fora do local
  • Conclusão

    PostgreSQL é um sistema de gerenciamento de banco de dados de classe mundial, de código aberto, que combina a confiabilidade do software empresarial com a flexibilidade de uma plataforma aberta. Desde seus tipos de dados avançados e modelo de concorrência MVCC até seu rico ecossistema de extensões e recursos de segurança robustos, PostgreSQL foi construído para lidar com os desafios mais exigentes de gerenciamento de dados.

    Seguindo este guia, você aprendeu como:

    • Instalar e configurar PostgreSQL no Ubuntu
    • Criar bancos de dados, usuários e gerenciar privilégios
    • Realizar operações CRUD essenciais
    • Otimizar o desempenho para cargas de trabalho em produção
    • Implementar uma estratégia sólida de backup e recuperação
    • Proteger sua instância PostgreSQL contra ameaças comuns

    O próximo passo é escolher a infraestrutura certa para hospedar seu banco de dados. Seja você precise de uma solução de VPS Hosting econômica ou de um Servidor Dedicado de alto desempenho para cargas de trabalho empresariais, a AlexHost fornece a infraestrutura confiável e de alto desempenho que sua implantação PostgreSQL merece.