Reduzi um DB de 8TB para 218 GB! como? ClickHouse!
Saudações novamente a todos!
Continuando com a saga que iniciei há 3 dias aqui: Reduzi um DB de 52GB para 4.5GB!...
Estou estudando o DB ClickHouse (versão self-hosted open source) e estou IMPRESSIONADO com a capacidade de compressão desse DB!
Dessa vez, fiz um teste no maior DB que tenho disponível em produção:
DB PostgreSQL, com um total de 8,12 TB de tamanho e 44,9 bilhões de linhas!
49k partições.
Esse mesmo DB, migrado para ClickHouse, resultou em 218 GB!
Uma redução de aproximadamente 38 vezes! (Muito acima dos 10x prometidos pelo ClickHouse Cloud).
Cada linha ocupa apenas 5,1 Bytes!
uma linha com 5 colunas, sendo 1 ID string, 1 id int, 1 valor referência int, 1 ENUM pra status e a ultima de timestamp DateTime.
tudo isso ocupando 5,1 bytes, em comparação, a palavra "bytes" ocupa 5 bytes no padrão ASCII
Explicando melhor a natureza desses dados e o propósito deles
Na empresa em que trabalho atualmente, temos um sistema de métricas e histórico de eventos. Essas métricas são exibidas em dashboards e geram relatórios para os clientes.
Com o aumento constante de clientes, o volume de dados começou a subir exponencialmente, e tudo vai para esse DB PostgreSQL.
Em minhas estimativas, estamos lidando com uma média de 500-700 milhões/dia de dados sendo gerados e salvos no DB.
Com isso, o desempenho das consultas vem se degradando e o DB começa a se tornar um mamute enorme!
Detalhe: armazenamos esses dados por apenas 90 dias!
Mas por que migrar para ClickHouse?
- Capacidade de TTL nas tabelas (o próprio DB controla a validade dos dados e os deleta no fim do prazo). Isso estava se tornando um problema crescente no atual DB postgreSQL, pois mesmo com um script deletando os dados antigos 24h por dia, o DB não para de crescer, apenas retardou um pouco a velocidade do crescimento (mesmo fazendo vacuum)
- Redução absurda no tamanho do DB (38x menor!), maior beneficio a meu ver.
- Consultas analíticas são incrivelmente rápidas (relatório que levava 1 min agora leva, em média, 200 ms)
- Esse DB consegue aproveitar melhor o hardware do servidor (um servidor de 8 vCPUs e 12 GB de RAM entrega desempenho similar ao servidor PostgreSQL, que tem 16 vCPUs e 90 GB de RAM)
- Facilidade de gerar dados analíticos sobre o DB, como contagem total de linhas, disco usado por cada coluna, quais clientes têm mais dados, entre outras tantas possibilidades de análise técnica
- Possibilidade de criar replicas de escrita, assim podendo escalonar horizontalmente o DB.
Próximo passo: testar em uso real para mensurar melhor o desempenho desse DB em produção.
Não consigo compartilhar mais dados a respeito dessa migração por motivos óbvios (dados sigilosos e regras de negócio), mas estou realmente empolgado depois de descobrir esse DB mágico kkkkk