Pular para o conteúdo

apps/data-patterns/partition-table

089 · Dados & Persistência · ≈ 5 min de estudo

Partition Table

Particionamento declarativo divide uma tabela grande em tabelas menores por faixa de data, dentro do mesmo servidor. A aplicação continua lendo e gravando em transactions; o PostgreSQL roteia cada linha para o mês certo e, numa consulta limitada por data, lê só as partições que importam. É o primeiro passo antes de pensar em sharding.

passos
6
arquivos
6
teste
1
tecnologias
4
Infraestrutura realTypeScriptBunPostgreSQLDocker
Baixar cartão

Cenário

Core bancário com o livro de lançamentos crescendo milhões de linhas por mês. O extrato mensal de uma conta precisa ler só aquele mês, e a retenção regulatória manda tirar do banco online o que passou de 12 meses — sem um DELETE que varre a tabela, incha o disco e inunda o WAL.

Planta

Fluxo
8/8
Aplicação grava elê transactionstransactions - PARTITIONBY RANGE created_attransactions_2026_07transactions_2026_08transactions_2026_09transactions_2026_10- criada adiantadatransactions_default -alerta se receber linhaManutenção: cria meses futurose aposenta os vencidosCREATE TABLEPARTITION OFDETACH e DROP
8

8 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Tabela dividida por faixa de data.

Esconde cada passo: lembre antes de tocar para revelar.

Vocabulário compartilhado

created_at+1
  1. 01

    transactions é particionada por RANGE (created_at); a chave primária inclui created_at, exigência do particionamento

  2. 02

    A manutenção cria as partições dos próximos meses antes de chegarem, como faz o pg_partman

  3. 03

    O insert não cita partiçãoO banco roteia pelo mês; o limite inferior pertence à partição e o superior à seguinte

  4. 04

    O extrato filtra por mês e o planner poda as outras partições

  5. 05

    Linha na partição default é alertaAquele mês não foi criado, e a partição dele já não pode ser criada depois

  6. 06

    Retenção por DDLO mês vencido sai com DETACH e DROP (arquivado antes, em produção)

Trade-offs

O que se ganha, o que se paga

3 vantagenscada ganho tem um preço3 custos

Vantagens

  • Consulta por data lê só o mês

  • Retenção instantânea, sem DELETE

  • Índices menores por partição

Custos

  • Consulta sem a data lê todas as partições

  • Chave primária e únicas precisam incluir created_at

  • Exige job de manutenção das partições

apps/data-patterns/partition-table

6 arquivos

sql/

  • 01_schema.sqlschemaTabela particionada, índice e partição default

src/

  • maintenance_partition.tsCriação adiantada, retenção e contagem da default
  • statement_account.tsExtrato mensal podado e seed
  • demo.tsdemoCriação, roteamento, poda e retenção
  • maintenance_partition.test.tstesteIdempotência, limites, poda, armadilha da default e retenção contra PostgreSQL real

src/config_partition.ts / src/

  • pool_partition.tsAmbiente validado e pool

Executar · com Docker

  1. ./docker.sh up# sobe PostgreSQL
  2. bun install# dependências
  3. bun run demo# roda o cenário
  4. bun run test# integração contra o serviço real
Requisitos
BunDocker
Sobe junto
PostgreSQL

Por que se relacionam

Teste rápido

Qual é o próximo passo depois de Partition Table?

Próximo projeto · Dados & PersistênciaSaga Pattern (coreografia)
Esc

↑ ↓ navegarEnter abrir191 resultados