Sobre como consultar dados de série temporal
O MongoDB agrupa documentos com metaFields correspondentes para otimizar o armazenamento e a latência de query de dados de séries temporais. Sua escolha de metaField
tem o maior impacto na otimização de queries em seu aplicativo.
Consultar o metaField
Você faz query em uma coleção de séries temporais da mesma maneira que faz query em uma coleção MongoDB padrão. Para ver um exemplo de query e um exemplo de pipeline de agregação, consulte Fazer query em uma coleção de séries temporais. Para obter uma lista de práticas recomendadas de query, consulte Práticas recomendadas de query.
As queries em dados de série temporal normalmente se concentram em uma única série temporal na coleção. Por exemplo, considere uma coleta de séries temporais que rastreia dados de estoque usando o seguinte esquema:
{ _id: 573a1397f29313caabce8347, "ticker": "MDB", "timestamp": ISODate("2024-07-24T13:45:00.000Z"), "price": 248.21, "volume": 6930 }
A coleção tem as seguintes configurações:
timeseries: { timeField: "timestamp", metaField: "ticker", granularity: "seconds" }
O MongoDB agrupa documentos com valores ticker
correspondentes. Em vez de ter que verificar se há correspondências em todos os campos em todos os documentos, o servidor só precisa verificar o metaField
, neste caso ticker
, para restringir a faixa de pesquisa a uma série temporal exclusiva. Isso se encaixa no caso de uso esperado, que é a busca de atividade em uma única ação. Um usuário que busca informações sobre ações do MongoDB (MDB) não precisa considerar os resultados da Amazon (AMZN).
Fazer query no o timeField
A segunda maior dimensão para a query de dados de séries temporais é o tempo. Como o MongoDB agrupa documentos que têm um valor metaField
idêntico e valores próximos de timeField
, isso restringe ainda mais o escopo de uma query a uma variedade de intervalos. As transações recentes são mantidas na memória, por isso é fácil transmitir dados em tempo real.
Processamento de blocos
A partir da versão 8.0, O MongoDB pode executar determinadas queries de séries temporais usando processamento de blocos. Essa melhoria de desempenho processa as queries em "blocos" de dados, em vez de valores individuais. O processamento de blocos melhora a velocidade de execução da query e a taxa de transferência ao trabalhar com coleções de séries temporais.
O processamento de blocos melhora significativamente o desempenho e reduz a sobrecarga de pipelines de agregação de longa duração que começam com os seguintes estágios:
O MongoDB habilita automaticamente o processamento em bloco para queries de séries temporais qualificadas. Não é possível especificar manualmente se uma query usa processamento de blocos.
Para ver se sua query de série temporal usa processamento de bloco, consulte stages
na saída do plano de explicação.