MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB $slice (pagination de tableau intégrée)

Je vais donc dire que vous devriez changer votre schéma pour laisser les commentaires sous forme de documents séparés car il s'agit d'un tableau non lié et cela rendra vos requêtes plus efficaces. Je vais vous l'expliquer.

Lorsque vous ajoutez des documents intégrés à un tableau qui n'est pas une taille fixe, mongoDB devra potentiellement déplacer le document au fur et à mesure de sa croissance, en modifiant le facteur de remplissage et en provoquant une fragmentation (le facteur de remplissage est une estimation du côté de mongodb de la taille de votre document croître, il préalloue plus d'espace pour ce cas).

Vous êtes également limité à 16 Mo de document pr, alors imaginez si vous obtenez un fil populaire fou ou si vous décidez d'étendre les commentaires avec d'autres métadonnées, il est possible que vous brisiez cette barrière. La récupération d'un gros document est également coûteuse et prend du temps.

En général, les documents intégrés sont parfaits s'ils ne sont pas des tableaux non liés. Donc, garder une liste des 10 meilleurs commentaires fonctionnera très bien, mais garder plus de 1000 commentaires est mauvais.

Il y a une bonne présentation sous

http://www.10gen.com/presentations /mongodb-berlin/2012/10-key-performance-indicators http://www.10gen.com/presentations/mongosv -2011/schema-design-by-example

Je pense qu'il y a plus de travail à venir sur la conception de schéma qui sera plus utile à long terme. Je pense que c'est le plus difficile d'être honnête. Je sais, il m'a fallu un certain temps pour comprendre les différences avec les modèles relationnels.