Não grave cada voto direto em uma linha de banco de dados — bufferize as escritas, faça sharding dos contadores e aceite a contagem eventual. 5M de votos em 10 minutos são ~8.300 votos/seg em média, com picos muito maiores (um momento de TV ao vivo pode fazer 10x disso). O truque é transformar um update de linha única quente em muitos incrementos independentes e paralelos.
Client ─▶ Edge/API ─▶ Kafka (vote events) ─▶ Consumers ─┬─▶ Dedup store (SET one-vote)
(durable buffer) └─▶ Sharded counters (INCR N shards)
│
Redis/Aggregator ◀── periodic sum of shards ──────────────────────┘
│
└─▶ Read replica / CDN cache ─▶ Live tally to clients
