Custo de dados · nota de engenharia

Como cortamos ~99% das leituras de banco com delta sync

Em bancos que cobram por leitura, o custo não mora nas escritas — mora em cada abertura de tela que relê o que não mudou. Numa das nossas plataformas em produção, uma tela caía de 5.752 leituras para praticamente zero depois de três decisões simples.

A aritmética que ninguém faz

Bancos serverless como o Firestore cobram por documento lido. Parece barato até você multiplicar: uma listagem com milhares de registros, relida a cada navegação, por dezenas de sessões por dia. A conta cresce com o uso — exatamente quando o produto dá certo. O primeiro passo de qualquer otimização é medir a tela mais cara, não a consulta mais lenta: custo e latência não são o mesmo vilão.

As três decisões

1. Cache local como padrão, não como otimização. Dado quase estático (cadastros, catálogos, históricos fechados) vive no dispositivo. A rede é para o que mudou — não para reconstituir o mundo a cada visita.

2. Delta sync com marca d'água do servidor. Cada sincronização pede apenas "o que mudou desde X", onde X é a maior marca de atualização atribuída pelo servidor — nunca pelo relógio do cliente. Relógio de cliente atrasa, adianta e mente; usar updatedAt do servidor elimina a classe inteira de bugs de "registro que sumiu na sincronização".

3. Agregações no índice, não no cliente. Somatórios e contagens que a interface mostra toda hora saem de agregações do próprio banco — não de varrer a coleção e somar no aparelho.

O resultado medido

A tela mais cara caiu de 5.752 leituras para ~2.126 com a primeira rodada (cache) e para praticamente zero com o delta sync — só documentos efetivamente alterados trafegam. Em um sistema com dezenas de milhares de registros de produção, é a diferença entre uma fatura que cresce com o sucesso e uma que fica no chão.

O sync mais barato é o que não acontece; o segundo mais barato é o que só carrega o delta.

Os detalhes que mordem

Duas armadilhas que encontramos no caminho e valem o aviso: índices têm direção — um índice ascendente não serve à consulta descendente, e o erro só aparece em produção; e emuladores não validam tudo — o ambiente local aceita consultas que o banco real rejeita, então o teste que conta é contra o serviço de verdade, com dados de verdade.

Sua fatura de banco cresce com o uso?
A auditoria de custo é a nossa Fase 01.

Falar com a Vector Trends