Branches copy-on-write

Um branch DIVZ é uma cópia instantânea do banco que não duplica os dados: o storage engine só grava o que muda depois da bifurcação. Criar um branch de 50 GB leva o mesmo tempo que criar um de 50 MB.

Por que é instantâneo

Num Postgres tradicional, copiar um banco é copiar bytes: um pg_dump seguido de um pg_restore, que leva minutos ou horas conforme o tamanho.

No DIVZ o armazenamento é separado do processamento e organizado em timelines. Criar um branch é registrar uma nova timeline que aponta para o estado atual da timeline mãe. Nada é copiado nesse momento — as páginas antigas continuam sendo lidas do mesmo lugar pelos dois lados, e só o que muda depois da bifurcação ocupa espaço novo.

É a mesma ideia do git branch: barato porque não duplica história, só registra de onde você partiu.

Criar um branch

No console, em Projeto → Branches → Novo branch. Pela API:

api
curl -X POST https://api.divz.com.br/api/v1/projects/<id>/branches \
  -H "Authorization: Bearer divz_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "teste-migracao", "fromBranch": "main"}'

fromBranch é opcional e assume main. O nome precisa ser único dentro do projeto.

Para que serve na prática

  • Ensaiar migração. Rode o ALTER TABLE pesado no branch, meça quanto demorou e o que travou, e só então decida sobre a produção.
  • Ambiente por pull request. Um branch de banco por PR dá a cada revisor dados realistas sem compartilhar uma base de staging que todo mundo suja.
  • Investigar um bug com os dados que o causaram. Bifurque, reproduza à vontade, descarte.
  • Testar um DELETE antes de rodá-lo. No branch o erro custa um descarte, não um restore.

Um branch tem sua própria connection string e seu próprio compute. Ele não recebe o tráfego da produção e não compete por recurso com ela.

Limites e custo

O plano define quantos branches simultâneos você pode ter — 2 no Explorar, 5 no Starter, ilimitados no Pro e no Business. O que ocupa espaço é a divergência: um branch que ninguém escreveu é praticamente de graça, e um que reescreveu a tabela inteira ocupa quase o tamanho dela.

Branch não é backup. Ele parte de um instante e some quando você o apaga. Para voltar no tempo depois de um acidente, o mecanismo é o PITR.

Próximo: PITR e backups