Um banco transacional simples atende bem até algumas dezenas de milhares de linhas de histórico. A partir daí, monitorar centenas de perfis diariamente por anos gera volume que pede uma estrutura mais pensada para análise.

Particionamento por data

Bancos como PostgreSQL suportam particionamento nativo por intervalo de data — consultas que filtram por período recente tocam só a partição relevante, não a tabela inteira:

CREATE TABLE metricas_diarias (
    perfil_id INTEGER,
    data DATE,
    seguidores INTEGER
) PARTITION BY RANGE (data);

Tabelas agregadas pré-calculadas

Em vez de recalcular médias móveis e variações a cada consulta do dashboard, uma tabela agregada (atualizada uma vez por dia) com métricas semanais/mensais já resumidas acelera drasticamente a leitura.

Quando migrar para um data warehouse dedicado

Ferramentas como BigQuery ou Redshift fazem sentido quando o volume de dados históricos e a complexidade das análises (cruzamento com outras fontes, por exemplo) ultrapassam o que um banco transacional comum consegue atender com boa performance.