Capped collections
Nesta página
Coleções limitadas são coleções de tamanho fixo que inserem e recuperam documentos com base na ordem de inserção. As coleções limitadas funcionam de forma semelhante aos buffers circulares: uma vez que uma coleção preenche seu espaço alocado, ela abre espaço para novos documentos substituindo os documentos mais antigos da coleção.
Restrições
Coleções limitadas não podem ser fragmentadas.
Não é possível criar coleções limitadas em instâncias sem servidor.
As coleções limitadas não têm compatibilidade na Stable API V1.
Não é possível gravar em coleções limitadas em transações.
O estágio de pipeline de agregação
$out
não pode gravar resultados em uma collection limitada.
Sintaxe do comando
O exemplo a seguir cria uma coleção limitada chamada log
com um tamanho máximo de 100,000 bytes.
db.createCollection( "log", { capped: true, size: 100000 } )
Para obter mais informações sobre como criar capped collections, consulte createCollection()
ou create
.
Casos de uso
Geralmente, os índices TTL (Time To Live) oferecem melhor desempenho e mais flexibilidade do que as capped collections. Os índices TTL expiram e removem dados de collections normais com base no valor de um campo digitado por data e um valor TTL para o índice.
As coleções limitadas serializam as operações de gravação e, portanto, têm pior desempenho simultâneo de inserção, atualização e exclusão do que as coleções não limitadas. Antes de criar uma coleção limitada, avalie se não é possível usar um índice TTL.
O caso de uso mais comum para uma coleção limitada é armazenar informações de registro. Quando a coleção limitada atinge seu tamanho máximo, as entradas de log antigas são automaticamente substituídas por novas entradas.
Começar
Para criar e consultar capped collections, consulte estas páginas:
Comportamento
Considere estes detalhes comportamentais para capped collections.
Coleta de registros
A collection oplog.rs que armazena um registro das operações em um conjunto de réplicas utiliza uma capped collection.
Diferente de outras capped collections, o oplog pode ultrapassar o limite de tamanho configurado para evitar a exclusão do majority commit point
.
Observação
O MongoDB arredonda o tamanho limitado do oplog para o número inteiro mais próximo que seja múltiplo de 256, em bytes.
Índice _id
As coletas mapeadas têm um campo _id
e um índice no campo _id
por padrão.
Updates
Evite atualizar dados em uma capped collection. Como as capped collections são de tamanho fixo, as atualizações podem fazer com que seus dados se expandam além do espaço alocado da coleção, o que pode causar um comportamento inesperado.
Eficiência da query
Use ordem natural para recuperar os elementos inseridos mais recentemente da coleção de forma eficiente. Isto é semelhante ao uso do comando tail
em um arquivo de log.
Cursor atualizado
Você pode usar um cursor tailable com coleções limitadas. Semelhante ao comando Unix tail -f
, o cursor tailable "tails" o final de uma coleção limitada. À medida que novos documentos são inseridos na coleção limitada, você pode usar o cursor tailable para continuar recuperando documentos.
Para obter informações sobre como criar um cursor persistente, consulte Cursores persistentes.
Múltiplas gravações simultâneas
Se houver gravadores simultâneos em uma capped collection, o MongoDB não garante que os documentos sejam retornados na ordem de inserção.
Snapshot da preocupação de leitura
A partir do MongoDB 8.0, você pode usar a preocupação de leitura "snapshot"
em capped collections.