Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Limitações de coleta de séries temporais

Nesta página

  • Recursos Não Suportados
  • Agregação $merge e $out
  • Comando distinto
  • Tamanho do documento
  • Exclui
  • Updates
  • Índices Secundários da Série Temporal
  • Índices Secundários da Série Temporal
  • Índices Secundários de Série Temporal com MongoDB 5.0 e Anteriores
  • Capped collections
  • Modificação do Tipo de Coleção
  • Modificação de timeField e metaField
  • Granularidade
  • Tamanho do bucket
  • Modificando Parâmetros de Bucket
  • Fragmentação
  • Comandos de Administração de Fragmentação
  • Campos-Chave de Fragmento
  • Refragmentação
  • Transações
  • Visualizações
  • Isolamento de snapshot

Esta página descreve as limitações no uso de coleções de séries temporais.

Os recursos a seguir não são compatíveis com coleções de séries temporais:

Em coleções de séries temporais que usam o Atlas Data Ingest, o suporte do Atlas Device Sync é limitado.

Não é possível usar o estágio de aggregation de $merge para adicionar dados de outra collection a uma coleção de séries temporais.

Alterado na versão 7.0.3: Você pode usar o estágio de agregação $out para gravar documentos em uma coleção de séries temporais.

Devido à estrutura de dados única das coleções de séries temporais, o MongoDB não pode indexá-las de forma eficiente para valores diferentes. Evite usar o comando distinct ou método assistente db.collection.distinct() em coleções de séries temporais. Em vez disso, use uma agregação $group para agrupar documentos por valores distintos.

Por exemplo, para consultar valores meta.type diferentes em documentos onde meta.project = 10, em vez de:

db.foo.distinct("meta.type", {"meta.project": 10})

Usar:

db.foo.createIndex({"meta.project":1, "meta.type":1})
db.foo.aggregate([{$match: {"meta.project": 10}},
{$group: {_id: "$meta.type"}}])

Isso funciona da seguinte maneira:

  1. Criando um índice composto em meta.project e meta.type e é compatível com a agregação.

  2. O estágio $match filtra documentos onde meta.project = 10.

  3. O estágio $group usa meta.type como a chave de grupo para gerar um documento por valor exclusivo.

O tamanho máximo dos documentos em uma coleção de séries temporais é 4 MB.

A partir do MongoDB 5.1, você pode realizar operações de exclusão limitadas em coleções de séries temporais. O MongoDB 7.0 remove a maioria das limitações das operações baseadas no comando delete.

Não há suporte para exclusões de séries temporais para transações de vários documentos.

De MongoDB 5.1 a 6.3, os comandos de exclusão devem atender aos seguintes requisitos:

  • Você só pode corresponder em valores de campo metaField .

  • Seu comando de exclusão não deve limitar o número de documentos a serem excluídos. Configure justOne: false ou utilize o método deleteMany().

A partir do MongoDB 7.0, há apenas uma limitação relacionada à série temporal nestes comandos delete :

Você não pode usar esses comandos com transações de vários documentos. Não há outras restrições.

Se uma coleção de séries temporais contiver documentos com timeField registros de data e hora anteriores a 1970-01-01T00:00:00.000Z ou posteriores a 2038-01-19T03:14:07.000Z, nenhum documento será excluído da coleção pelo recurso TTL "time to live".

Para obter detalhes sobre exclusões de TTL, consulte Expirar dados de collections configurando TTL.

A partir do MongoDB 5.1, você pode executar operações de atualização limitadas.

Os comandos de atualização devem atender aos seguintes requisitos:

  • Você só pode combinar metaField ao valor do campo.

  • Você só pode modificar o valor do campo metaField.

  • Seu documento de atualização só pode conter expressões de operador de atualização.

  • Seu comando de atualização não deve limitar o número de documentos a serem atualizados. Defina multi: true ou use o método updateMany() .

  • Seu comando de atualização não deve definir upsert: true.

No MongoDB 5.0, as coleções de séries temporais suportam somente inserir operações e ler consultas. Atualizações e operações manuais de exclusão resultam em um erro.

Para excluir dados antigos automaticamente, configure a remoção automática (TTL).

Para remover todos os documentos de uma collection, use o método drop() para soltar a collection.

O MongoDB 6.0 e posterior apresentam suporte melhorado para índices secundários em coleções de séries temporais. Para obter um resumo dessas opções, consulte Índices secundários de séries temporais no MongoDB 6.0 e posterior.

A partir do MongoDB 6.3, as time series collections suportam a propriedade de índice expireAfterSeconds para partial indexes no metaField. Para versões anteriores do MongoDB, utilize o parâmetro expireAfterSeconds do nível de coleção.

A partir do MongoDB 6.0, você pode adicionar um índice secundário a qualquer campo.

Esses tipos de índice são parcialmente suportados:

Estes tipos de índice não são suportados:

Se houver coleções de séries temporais e você precisar fazer downgrade da versão de compatibilidade de recursos (FCV), primeiro descartará todos os índices secundários que são incompatíveis com o FCV rebaixado. Consulte setFeatureCompatibilityVersion.

No MongoDB 5.0 e anterior:

  • O metaField pode ter índices secundários.

  • O timeField pode ter índices secundários.

  • Se o metaField for um documento, você poderá adicionar índices secundários em campos dentro do documento.

Dica

Veja também:

Você não pode criar uma coleção de séries temporais como uma capped collection.

Você só pode definir o tipo de collection ao criar uma collection:

  • Uma coleção existente não pode ser convertida em uma coleção de séries temporais.

  • Uma coleção de séries temporais não pode ser convertida em um tipo de coleção diferente.

Para mover dados de uma coleção existente para uma coleção de séries temporais, migre os dados para uma coleção de séries temporais.

Você só pode definir os parâmetros timeField e metaField de uma collection ao criá-la. Você não poderá modificar esses parâmetros posteriormente.

Para qualquer configuração de parâmetros de granularidade, o tamanho máximo de um bucket é de 1000 medições ou 125 KB de dados, o que for menor. O MongoDB também pode impor um tamanho máximo menor para dados de alta cardinalidade com muitos valores exclusivos, para que o conjunto de trabalho de buckets caiba no cache WiredTiger.

Depois de definir os parâmetros granularity ou agrupamento personalizado bucketMaxSpanSeconds e bucketRoundingSeconds de uma coleção, você pode aumentar o intervalo de tempo coberto por um bucket, mas não diminuí-lo. Utilize o comando collMod para modificar os parâmetros. Por exemplo:

db.runCommand({
collMod: "timeseries",
timeseries: { bucketMaxSpanSeconds: 3600, bucketRoundingSeconds: 3600 }
})

Observação

bucketMaxSpanSeconds e bucketRoundingSeconds deve ser igual. Se você modificar um parâmetro, você também deverá definir o outro para o mesmo valor.

A partir do MongoDB 5.1 (e 5.0.6), você pode criar coleções de séries temporais fragmentadas.

Em versões anteriores ao MongoDB 5.0.6, você não pode mostrar coleções de séries temporais.

Não é possível executar comandos de administração de fragmentação em coleções de séries temporais fragmentadas.

Ao fragmentar coleções de série temporal, você só pode especificar os seguintes campos na chave de fragmento:

  • O metaField

  • Subcampos de metaField

  • O timeField

Você pode especificar combinações desses campos na chave do fragmento. Nenhum outro campo, incluindo _id, é permitido no padrão da chave de fragmento.

Quando você especifica a chave de fragmento:

Dica

Evite especificar apenas o timeField como a chave de fragmento. Como o timeField aumenta monotonicamente, isso pode fazer com que todas as gravações apareçam em um único bloco dentro do cluster. Idealmente, os dados são distribuídos uniformemente entre os blocos.

Para saber como escolher melhor uma chave de fragmento, consulte:

Você não pode refragmentar uma collection de séries temporais fragmentada. No entanto, você pode refinar sua chave de shard.

Não é possível escrever em coleções de séries temporais em transações.

Observação

As leituras de coleções de séries temporais são suportadas em transações.

  • As coleções de séries temporais são visualizações não materializadas graváveis. As limitações das visualizações se aplicam às coleções de séries temporais.

  • Você não pode criar uma visualização a partir de um namespace de collection de série temporal (ou seja, uma collection prefixada com system.buckets).

As operações de leitura em coleções de séries temporais com preocupação de leitura "snapshot" garantem o isolamento do snapshot somente na ausência de operações simultâneas de remoção ou renomeação de coleções na operação de leitura. A recriação de uma coleção de séries temporais no mesmo namespace com configuração de granularidade diferente não produz isolamento total do snapshot.

Voltar

Compressão de Time Series