Normaliza métricas de uso e organiza índices do OpenSearch - #144
Merged
pitangainnovare merged 23 commits intoSep 11, 2026
Merged
pitangainnovare merged 23 commits into
pitangainnovare merged 23 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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?
Reestrutura o armazenamento das métricas de uso no OpenSearch para reduzir a duplicação de dados e manter consultas eficientes:
scielo_log_validatorpara 2.0.3,scielo_usage_counterpara 2.2.2 e a versão dousagepara 2.4.0.As migrations incluídas são exclusivamente de esquema. O povoamento das políticas por coleção permanece no mecanismo de seed da aplicação.
Onde a revisão poderia começar?
A revisão pode começar por:
metrics/opensearch/mappings.py, que define os novos fatos e índices de metadados;metrics/counter/indexing/converter.pyemetrics/counter/indexing/engines/, que fazem a conversão;metrics/services/export.pyemetrics/opensearch/client.py, que implementam roteamento, aliases, idempotência e rollover;metrics/services/metadata_sync.py,metrics/signals.pyemetrics/models.py, responsáveis pela sincronização incremental de metadados;log_manager_config/models.pyeconfig/collections.py, que definem as políticas por coleção.Como este poderia ser testado manualmente?
python manage.py migrateRecarregar as configurações das coleções pelo mecanismo de seed já utilizado pelo projeto.
Usar um prefixo isolado em
OPENSEARCH_INDEX_NAMEe processar um log validado de uma coleção pequena, como Books.Confirmar a criação do alias e do primeiro índice físico:
Reprocessar o mesmo dia e confirmar que as métricas não são duplicadas.
Para uma coleção com estratégia anual, confirmar que datas em 2025 e 2026 são direcionadas a aliases de escrita distintos, mantendo o mesmo alias global de leitura.
Configurar temporariamente um limite de rollover pequeno, inserir dados suficientes e confirmar que documentos existentes continuam no índice físico original enquanto documentos novos seguem para a geração seguinte.
Validações executadas nesta branch:
black --check: 43 arquivos verificados;flake8: sem erros;python manage.py makemigrations --check --dry-run: nenhuma mudança pendente;-000001para-000002, atualização de documento no índice físico original e criação de documento novo na geração atual;Algum cenário de contexto que queira dar?
Os índices anteriores repetiam metadados e dimensões em grande volume, especialmente para SCL. Além do custo de armazenamento, isso dificultava consultas por período, país, idioma, coleção, periódico e área temática. A nova organização mantém fatos compactos e referencia metadados por chaves estáveis.
Para coleções grandes, a separação anual evita índices excessivamente extensos sem impedir rollover antes do fim do ano. Para coleções menores, índices contínuos evitam fragmentação desnecessária. O limite padrão permanece configurável e inicia em 50 GB, com uma réplica igual a zero e um shard primário por padrão.
Screenshots
Não aplicável. A alteração afeta o pipeline e a estrutura dos índices, sem mudanças visuais.
Quais são os tickets relevantes?
Não há ticket diretamente associado a este PR.
Referências
Segurança da informação (NSI.04)
Este PR manipula dados sensíveis ou pessoais (LGPD)?
Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?
Este PR introduz, atualiza ou remove dependências de terceiros?
Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?
Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?
Este PR expõe novos endpoints, telas ou serviços?
Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?