Ceci est une question assez courante sur MongoDB: Quand l'intégrer et quand faire référence.Opinion sur mon cas Conception de schéma MongoDB
Cependant dans mon cas, cela semble être en quelque sorte un dilemme. J'ai un document qui a une référence où je pourrais juste l'incorporer, pourtant cela me coûtera la taille du disque. Mais si je fais une référence, cela me coûtera très cher.
Voici un exemple, disons que je ce membre avec le « détail » comme mon problème:
Member: {
_id: "abc",
detail: {
name: "Stack Overflow",
website: "www.stackoverflow.com"
}
}
Je veux que ce le détail du député d'être dans tous les blogs ce membre « asdf » fait cause chaque blog affiché serait affiche les détails du membre. Donc, il y a 2 options que je peux faire pour mon document Blog:
Tout d'abord, faire une référence que par la mise de _id du membre:
Blog: {
_id: 123,
memberId: "asdf" ---> will be used as reference to query specific member
}
ou deuxième, incorporez le membre dans Blog place:
Blog: {
_id: 123,
member: {
_id: "asdf",
detail: {
name: "Stack Overflow",
website: "www.stackoverflow.com"
}
}
}
La première option nécessite donc une autre requête pour le membre, ce qui pose un problème de performance. La deuxième option est cependant plus rapide parce que je n'ai besoin de faire qu'une seule requête, mais mon disque serait plus gros pour les données redondantes du document incorporé 'membre' à mesure que le nombre de blogs augmente. PS: Comme vous pouvez le voir dans cet exemple, la relation Membre et Blog est un-à-plusieurs, de sorte qu'un membre peut avoir plusieurs blogs, mais les variables de détail des membres restent les mêmes; 'nom' et 'site web'.
Une opinion qui est meilleure dans ce cas? Ce sera génial si vous avez aussi la 3ème solution. Merci avant.
Merci! Je ne pensais pas assez loin jusqu'à ce que vous nous avez expliqué au premier alinéa En fin de compte, dans mon cas, le doc incorporé pour les données qui sont fréquemment mises à jour par référence (le détail du membre) me donnera aussi le coût de la performance, donc je vais choisir le séparé, merci pour la suggestion du cache aussi, Stennie. –