Dasboard com dados oriundos de arquivos gigantes
13/07/2018
0
Preciso automatizar a atualização de dashboards com dados oriundos de arquivos gigantes no formato xlsx em torno de 300k de registros e 200 colunas aproximadamente 150MB,
atualmente uso python para baixar o arquivo e converter em .sql e depois insiro no MySQL por meio de comando direto no cmd
logo após executo procedures que criam tabelas com os dados agrupados nos níveis necessários para cada visualização do dashboard
o problema é que este processo é muito lento e como é acumulativo acaba se tornando mais lento ainda no passar do tempo.
Considerando este cenário, penso em migrar para MongoDB. Gostaria de saber se alguem pode informar se terei bons resultados
com a migração ou alguma outra sugestão para solucionar o problema.
Obs: Tudo deve ser feito com tecnologias open source que rodem na intranet, os dashboards são paginas em php com auxilio de algumas libs javascript
atualmente uso python para baixar o arquivo e converter em .sql e depois insiro no MySQL por meio de comando direto no cmd
logo após executo procedures que criam tabelas com os dados agrupados nos níveis necessários para cada visualização do dashboard
o problema é que este processo é muito lento e como é acumulativo acaba se tornando mais lento ainda no passar do tempo.
Considerando este cenário, penso em migrar para MongoDB. Gostaria de saber se alguem pode informar se terei bons resultados
com a migração ou alguma outra sugestão para solucionar o problema.
Obs: Tudo deve ser feito com tecnologias open source que rodem na intranet, os dashboards são paginas em php com auxilio de algumas libs javascript
Poncio Oliveira
Curtir tópico
+ 0
Responder
Post mais votado
16/07/2018
"python para baixar o arquivo e converter em .sql e depois insiro no MySQL" -- Aqui já tem muita gordura pra tirar do seu processo.
Se você já está usando python, abra uma conexão com o banco e insira os dados direto, sem converter em .sql
Para aliviar a carga e não deixar sua máquina sem memória, faça essa inserção em batches (faça um loop que lê só 10,000 linhas por vez). Isso vai ajudar.
Outra coisa. Nas configurações do MySQL, desligue o autocommit e os logs quando fizer as cargas.
Pra BI, outra dica é você criar tabelas com os dados já agregados, reduzindo muito os tempos de queries para os dashboards.
Dica de leitura: ETL Toolkit do Kimball.
Se você já está usando python, abra uma conexão com o banco e insira os dados direto, sem converter em .sql
Para aliviar a carga e não deixar sua máquina sem memória, faça essa inserção em batches (faça um loop que lê só 10,000 linhas por vez). Isso vai ajudar.
Outra coisa. Nas configurações do MySQL, desligue o autocommit e os logs quando fizer as cargas.
Pra BI, outra dica é você criar tabelas com os dados já agregados, reduzindo muito os tempos de queries para os dashboards.
Dica de leitura: ETL Toolkit do Kimball.
Leandro Meili
Responder
Mais Posts
13/07/2018
Venancio Alves
Olá Poncio Elias!
Se o problema é o desempenho do banco de dados, consultas pesadas, a migração será muito boa, vai ganhar muito desempenho.
Se o problema é o desempenho do banco de dados, consultas pesadas, a migração será muito boa, vai ganhar muito desempenho.
Responder
17/07/2018
Poncio Oliveira
Obrigado pela recomendação de leitura, tenho muito ainda a evoluir no ETL, quanto a técnica sobre python, na verdade, a forma que falou foi a primeira tentativa que fiz e pelo menos nos meus testes praticos ficou mais rápido convertendo tudo em sql e dando a carga em um comando só, por hora, vou tentar as dicas de configuração do mysql.
Responder
Clique aqui para fazer login e interagir na Comunidade :)