Pular para o conteúdo

Trilha de PostgreSQL: o mapa das 7 fases

O mapa de estudos do PostgreSQL por dentro, da modelagem de tabelas à concorrência, ao armazenamento em disco e aos planos de execução em produção.

Publicada em · 11 min de leitura

Tamanho da fonte:
Largura da coluna:
Tom:
Espaço entre linhas:
Fonte:

Esta nota é o mapa da trilha de estudos completa para quem precisa dominar o PostgreSQL, desde a modelagem de tabelas até a engenharia fina de concorrência, armazenamento em disco e planos de execução em produção.

Diferente de tutoriais que tratam o banco de dados como uma caixa preta que apenas responde a comandos SQL, esta trilha ensina o motor por dentro. O PostgreSQL não é apenas um repositório de linhas, é um sistema operacional especializado em gerenciar memória RAM, arquivos em disco e integridade transacional sob concorrência pesada.

A ordem das 7 fases abaixo segue a escada natural de aprendizado: primeiro você aprende a definir os dados e manipulá-los no dia a dia, depois entende as garantias matemáticas e físicas que o banco oferece, em seguida mergulha na mecânica interna do motor e, por fim, aprende a diagnosticar lentidão e sustentar alta carga.


O mapa geral da trilha

FaseTemaAulasStatusObjetivo prático centralEntrega prática prevista
1Fundamentos, DDL e tipos de dados3Parcial (1/3)Escolher tipos corretos e aplicar restrições sem delegar regras vitais para a aplicaçãoSchema com UUID v7, JSONB indexável e restrições de integridade
2Operações de CRUD e manipulação avançada5PlanejadaExecutar escritas e leituras idiomáticas no Postgres com total previsibilidadePipeline de ingestão com CTEs recursivas, RETURNING e UPSERT
3Modelagem relacional e integridade4Parcial (2/4)Estruturar entidades normalizadas com integridade referencial sem travar a escritaModelo relacional e-commerce com chaves estrangeiras e índices dedicados
4Transações, concorrência e garantias ACID5Parcial (2/5)Garantir consistência absoluta em cenários de transferências e liquidações concorrentesFluxo de reserva financeira à prova de race conditions e deadlocks
5Engine interna, MVCC e armazenamento5Parcial (2/5)Entender o que acontece no disco e na memória quando uma linha é gravadaAnálise de bloat de tabela, afinamento de Autovacuum e inspeção de WAL
6Indexação e planos de execução4Parcial (1/4)Diagnosticar queries lentas e desenhar índices sob medida para a carga de trabalhoOtimização de consulta complexa guiada por EXPLAIN (ANALYZE, BUFFERS)
7Escala, alta disponibilidade e operação4Parcial (1/4)Manter o banco disponível, seguro contra desastres e com pooling dimensionadoCluster primário e réplica com PgBouncer e rotina de backup PITR

Visão arquitetural da trilha

Mapa da Trilha PostgreSQL. DDL e Tipos → Operações CRUD (Base); Operações CRUD → Relacionamentos (Modelagem)…
figura 1 · Mapa da Trilha PostgreSQL

O diagrama acima resume como o aprendizado se encadeia. O fluxo começa na modelagem básica de tabelas e tipos (topo), desce para as operações de CRUD e relacionamentos que formam o código do dia a dia, passa pelas garantias matemáticas do bloco transacional (ACID e locks), alcança o chão de fábrica do motor (páginas de 8 KB, WAL e versões de tupla no MVCC) e termina nas ferramentas que garantem que o banco não caia quando o tráfego multiplicar por cem.


Fase 1: Fundamentos, DDL e tipos de dados (1/3)

Pergunta central: Como estruturar tabelas e escolher tipos de dados no PostgreSQL para que erros de consistência sejam barrados no próprio motor antes de tocarem a regra de negócio?

AulaNota da aulaStatusPergunta que a aula responde
1.1PostgreSQL e ecossistemaPlanejadaO que torna o PostgreSQL único entre os bancos relacionais, como funciona o modelo processo por conexão e quais ferramentas usar para operá-lo?
1.2TiposConcluídaQuando usar TEXT em vez de VARCHAR, como manipular JSONB com operadores especializados e por que sempre gravar datas com timezone (TIMESTAMPTZ)?
1.3DDL e restrições de integridadePlanejadaComo combinar PRIMARY KEY, UNIQUE, CHECK e regras de nulidade para impedir dados inválidos direto na fonte?

Fase 2: Operações de CRUD e manipulação avançada (0/5)

Pergunta central: Como manipular dados de maneira idiomática no PostgreSQL aproveitando recursos nativos que evitam idas e vindas desnecessárias da aplicação ao banco?

AulaNota da aulaStatusPergunta que a aula responde
2.1Inserção com RETURNING e cargas em lotePlanejadaComo inserir dados recuperando identificadores gerados em uma única viagem de rede e quando trocar comandos INSERT pelo protocolo COPY?
2.2Consultas profissionais e paginaçãoPlanejadaComo buscar dados com ordenação determinística e por que a paginação por cursor supera LIMIT/OFFSET em tabelas com milhões de linhas?
2.3Atualizações e exclusões segurasPlanejadaComo atualizar ou remover dados com segurança em ambientes críticos, evitando bloqueios prolongados e impactos na fila de replicação?
2.4UPSERT idiomático com ON CONFLICTPlanejadaComo resolver colisões de chaves únicas com ON CONFLICT DO UPDATE ou DO NOTHING sem cair em race conditions no código da aplicação?
2.5Expressões de tabela comuns e CTEsPlanejadaComo usar WITH para modularizar consultas complexas, tratar dados antes de inseri-los e navegar estruturas em árvore com CTEs recursivas?

Fase 3: Modelagem relacional e integridade (2/4)

Pergunta central: Como conectar tabelas preservando integridade referencial sem criar gargalos silenciosos de bloqueio e lentidão em operações concorrentes?

AulaNota da aulaStatusPergunta que a aula responde
3.1Normalização e formas normaisConcluída (unifica Normalização e Formas normais)O que são 1FN, 2FN e 3FN na prática, qual problema cada uma resolve e quando uma desnormalização controlada faz sentido para leitura?
3.2Relacionamentos e chaves estrangeirasPlanejadaComo modelar relações 1:1, 1:N e N:N com tabelas associativas e como o motor valida a integridade referencial entre tuplas?
3.3Ações em cascata e bloqueiosPlanejadaO que cada cláusula faz (CASCADE, RESTRICT, SET NULL) na exclusão e por que cascata em tabelas de alto volume pode travar o banco?
3.4Junções e índices em chaves estrangeirasPlanejadaComo escolher entre INNER, LEFT, RIGHT e FULL OUTER JOIN, e por que o PostgreSQL não cria índices automáticos em chaves estrangeiras?

Fase 4: Transações, concorrência e garantias ACID (2/5)

Pergunta central: Como garantir que operações financeiras ou de estoque mantenham o banco íntegro mesmo diante de falhas de hardware e centenas de conexões disputando a mesma linha?

AulaNota da aulaStatusPergunta que a aula responde
4.1TransaçãoConcluídaO que é o ciclo de vida transacional (BEGIN, COMMIT, ROLLBACK) e como o PostgreSQL isola as alterações temporárias de cada cliente?
4.2ACIDConcluídaComo o PostgreSQL entrega cada uma das quatro letras (Atomicidade, Consistência, Isolamento e Durabilidade) do ponto de vista do software e do hardware?
4.3Pontos de restauração com SAVEPOINTPlanejadaComo dividir uma transação longa em etapas seguras com SAVEPOINT e desfazer erros parciais sem perder o bloco inteiro?
4.4Níveis de isolamento no PostgreSQLPlanejadaQual a diferença real entre READ COMMITTED, REPEATABLE READ e SERIALIZABLE, e quais anomalias cada nível permite ou elimina?
4.5Locks explícitos e prevenção de deadlocksPlanejadaQuando usar SELECT FOR UPDATE, como funcionam SKIP LOCKED e NOWAIT para filas de tarefas e como desenhar queries para nunca causar deadlock?

Fase 5: Engine interna, MVCC e armazenamento (2/5)

Pergunta central: O que acontece fisicamente na memória RAM e nos discos de estado sólido quando você clica em confirmar uma gravação no PostgreSQL?

AulaNota da aulaStatusPergunta que a aula responde
5.1PostgreSQL (Internals)ConcluídaComo funcionam os arquivos Heap, as páginas de 8 KB, as tuplas e o cache em memória RAM através dos Shared Buffers?
5.2Write-Ahead Logging e durabilidadePlanejadaComo o WAL garante que nenhum commit seja perdido se o servidor sofrer falta de energia instantânea e o que o Checkpointer faz periodicamente?
5.3MVCCConcluídaPor que leituras nunca travam escritas no Postgres, o que são os cabeçalhos xmin e xmax de cada linha e como a visibilidade é calculada?
5.4Bloat de tabelas e AutovacuumPlanejadaPor que comandos UPDATE e DELETE geram tuplas mortas, o que é o fenômeno do bloat e como afinar o Autovacuum para não sufocar o I/O?
5.5Armazenamento de atributos grandes com TOASTPlanejadaO que o PostgreSQL faz quando um texto ou JSON ultrapassa o limite de uma página de 8 KB e qual o impacto disso na performance de leitura?

Fase 6: Indexação e planos de execução (1/4)

Pergunta central: Como o planejador de consultas escolhe o caminho mais rápido para buscar os dados e como desenhar os índices certos sem encarecer as gravações?

AulaNota da aulaStatusPergunta que a aula responde
6.1ÍndicesConcluídaQuais os algoritmos de índices nativos (B-Tree, Hash, GIN, GiST, BRIN), quando usar cada um e qual o custo oculto de manter índices no disco?
6.2Índices parciais e em expressõesPlanejadaComo indexar apenas um subconjunto de linhas com a cláusula WHERE e como acelerar buscas sobre campos derivados ou propriedades de JSONB?
6.3Lendo planos de consulta com EXPLAINPlanejadaComo interpretar nós de Seq Scan, Index Scan e Bitmap Scan em saídas de EXPLAIN (ANALYZE, BUFFERS) e descobrir onde o tempo foi gasto?
6.4ParticionamentoConcluídaComo dividir tabelas gigantescas em partições menores por intervalo, lista ou hash, e como a poda de partições poupa processamento?

Fase 7: Escala, alta disponibilidade e operação (0/4)

Pergunta central: Como operar o PostgreSQL em regime ininterrupto, garantindo replicação de dados em tempo real, tolerância a falhas e gerenciamento eficiente de conexões?

AulaNota da aulaStatusPergunta que a aula responde
7.1Gerenciamento de conexões com PgBouncerPlanejadaPor que abrir milhares de conexões diretas esgota a memória do PostgreSQL e como usar poolers de conexão para multiplicar a capacidade de atendimento?
7.2Replicação física e alta disponibilidadePlanejadaComo funciona a replicação via streaming do WAL para servidores standby, qual a diferença entre modo síncrono e assíncrono e como fazer failover?
7.3Replicação lógica e publicação de eventosPlanejadaComo replicar apenas tabelas específicas entre servidores diferentes usando Logical Decoding e integrar o Postgres com serviços externos?
7.4Estratégias de backup e Point-In-Time RecoveryPlanejadaQual a diferença entre cópias lógicas com pg_dump e cópias físicas contínuas com PITR para recuperar o banco exatamente no segundo anterior a um desastre?

Como as peças se encaixam

As fases 1 e 2 constroem o vocabulário básico de manipulação. A fase 3 organiza as relações entre tabelas, garantindo que os dados não fiquem órfãos nem corrompidos. A fase 4 introduz a proteção das transações e as propriedades ACID, permitindo lidar com dinheiro e estoque sem inconsistências. A fase 5 revela o mecanismo físico: ao entender páginas de 8 KB, WAL e MVCC, todo o comportamento das transações ganha explicação técnica. As fases 6 e 7 fecham o ciclo elevando o sistema para escala corporativa, com consultas otimizadas no milissegundo e alta disponibilidade sem perda de dados.

Relacionados

↑ Voltar ao topo

Atalhos de teclado

Abrir busca
/
Alternar tema claro/escuro
t
Aula anterior na série
←
Próxima aula na série
→
Lista de atalhos
?