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.