Otimiza uso do banco de dados na tradução e indexação de dados #99
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
O que esse PR faz?
Este Pull Request foca em otimizar a forma como as métricas de uso são computadas e indexadas, além de adicionar índices em campos chave do banco de dados para melhorar o desempenho de queries. As principais modificações incluem:
Item,UserAgent,UserSession,ItemAccess) durante o processamento de linhas de log, reduzindo significativamente o número de requisições ao banco de dados e otimizando o processo de registro de acessos._process_user_sessions: Refatora a lógica para buscar todos osItemAccessrelacionados a uma coleção e data de uma vez, em vez de iterar porUserSessione depois por seusItemAccessindividualmente. Isso minimiza as operações de banco de dados e melhora a eficiência.scielo_issnda tabelajournal.collectionescielo_issnda tabelaarticle.dateda tabelalog_manager_logfiledate.dateelog_fileda tabelalog_manager_logfiledate.datetimeda tabelametrics_usersession.itemeuser_sessionda tabelametrics_itemaccess.scielo_usage_counterpara1.5.0e a versão geral da aplicação para1.11.0.metrics/tasks.pyecore/utils/date_utils.pypara melhorar a clareza e manutenibilidade do código.Por onde a revisão poderia começar?
A revisão pode começar pelos arquivos que contêm as principais alterações de lógica e otimização:
metrics/tasks.py(para as otimizações de cache e processamento de dados)article/models.pyejournal/models.py(para a adição dos novos índices e alteração dodb_indexdescielo_issnemjournal)log_manager/models.py(para a adição de índices)Como este poderia ser testado manualmente?
N/A
Algum cenário de contexto que queira dar?
As otimizações implementadas neste PR são cruciais para a escalabilidade e desempenho do sistema, especialmente ao lidar com grandes volumes de dados de log. Antes dessas alterações, o processo de parsing e registro de acessos era muito intensivo em termos de requisições ao banco de dados, o que podia causar lentidão e gargalos. O uso de cache em memória e a busca massiva de objetos relacionados antes da iteração contribuem para um processamento mais eficiente, permitindo que a aplicação lide com mais dados em menos tempo.
A adição dos índices é uma medida fundamental para melhorar o desempenho das consultas ao banco de dados. Campos como
scielo_issn,collection,date,itemeuser_sessionsão frequentemente utilizados em filtros e junções, e a indexação desses campos garante que as operações de busca sejam realizadas de forma mais rápida, impactando positivamente a performance de relatórios e dashboards.Screenshots
N/A
Quais são tickets relevantes?
#98
Referências
N/A