Conceito e mecanismo
Uma cache reduz trabalho repetido quando os dados e a tolerância a atraso o permitem. Em cache-aside, uma falha de cache leva a leitura do armazenamento e preenchimento posterior. A escrita deve ter uma estratégia de invalidação, mas o padrão não promete consistência automática entre todas as cópias. Caches locais podem divergir entre instâncias. Separar modelos de leitura e escrita com CQRS também não exige, por definição, bases diferentes nem event sourcing. Uma projeção pode servir consultas eficientes e continuar atrasada face à escrita. O contrato deve explicar essa frescura e como a aplicação confirma uma operação recente.
Aplicação guiada
Num exemplo fictício, um cliente concentra a maioria das operações. Fazer hash do identificador de cliente distribui clientes, mas não divide automaticamente esse cliente quente por várias partições. Revê a chave, as consultas dominantes, ordenação e custo de rebalanceamento. Uma fila pode absorver um pico e proteger o consumidor, desde que a taxa agregada respeite capacidade downstream. Se a entrada média exceder continuamente a conclusão, o atraso cresce. Acrescentar consumidores sem limites pode apenas mover a saturação para a base. Compara estas opções pelo problema medido: cache para reutilização, partição para distribuição de dados e carga, fila para desacoplar ritmos, sem atribuir a um mecanismo garantias que pertencem a outro.
Uma boa taxa global de cache hits pode esconder um cliente quente ou leituras desatualizadas num fluxo crítico.
Armadilhas comuns
Cache como fonte sempre atual; CQRS como obrigação de duas bases; hash como divisão automática de um tenant; fila sem limites.
Tópicos relacionados: Requisitos e decisões de arquitetura · Capacidade e latência · Dados e consistência
Mede distribuição, frescura e atraso além do débito total.
Referência: Sharding pattern · System design patterns; PostgreSQL18 scoped examples; primary guidance consulted 2026-09-30