MongoDB - Collections limitées

Capped collectionssont des collections circulaires de taille fixe qui suivent l'ordre d'insertion pour prendre en charge des performances élevées pour les opérations de création, de lecture et de suppression. Par circulaire, cela signifie que lorsque la taille fixe allouée à la collection est épuisée, il commencera à supprimer le document le plus ancien de la collection sans fournir de commandes explicites.

Les collections plafonnées limitent les mises à jour des documents si la mise à jour entraîne une augmentation de la taille du document. Étant donné que les collections plafonnées stockent les documents dans l'ordre du stockage sur disque, cela garantit que la taille du document n'augmente pas la taille allouée sur le disque. Les collections plafonnées sont idéales pour stocker les informations de journal, les données de cache ou toute autre donnée à volume élevé.

Créer une collection plafonnée

Pour créer une collection plafonnée, nous utilisons la commande createCollection normale mais avec capped option comme true et en spécifiant la taille maximale de la collection en octets.

>db.createCollection("cappedLogCollection",{capped:true,size:10000})

En plus de la taille de la collection, nous pouvons également limiter le nombre de documents de la collection en utilisant le max paramètre -

>db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})

Si vous souhaitez vérifier si une collection est plafonnée ou non, utilisez la commande suivante isCapped commande -

>db.cappedLogCollection.isCapped()

S'il existe une collection existante que vous prévoyez de convertir en plafonnée, vous pouvez le faire avec le code suivant -

>db.runCommand({"convertToCapped":"posts",size:10000})

Ce code convertirait notre collection existante posts à une collection plafonnée.

Interroger une collection plafonnée

Par défaut, une requête de recherche sur une collection plafonnée affichera les résultats dans l'ordre d'insertion. Mais si vous souhaitez que les documents soient récupérés dans l'ordre inverse, utilisez lesort commande comme indiqué dans le code suivant -

>db.cappedLogCollection.find().sort({$natural:-1})

Il y a peu d'autres points importants concernant les collections plafonnées à connaître -

  • Nous ne pouvons pas supprimer les documents d'une collection plafonnée.

  • Il n'y a aucun index par défaut présent dans une collection plafonnée, pas même sur le champ _id.

  • Lors de l'insertion d'un nouveau document, MongoDB n'a pas besoin de rechercher un emplacement pour accueillir un nouveau document sur le disque. Il peut insérer aveuglément le nouveau document à la fin de la collection. Cela rend les opérations d'insertion dans les collections plafonnées très rapides.

  • De même, lors de la lecture de documents, MongoDB retourne les documents dans le même ordre que ceux présents sur le disque. Cela rend l'opération de lecture très rapide.