2017-10-16 4 views
1

En db mongol, quand séparer les collections par schéma et quand les mettre dans une collection? Et quels sont les inconvénients d'avoir plus de collections?quand je choisis Séparer les collections par schéma ou en incluant?

+0

Cela dépend en réalité seulement de notre cas d'utilisation. Je suis un peu en retard avec part2, mais vous pourriez trouver https://blog.mahlberg.io/blog/2015/11/05/data-modelling-for-mongodb.html utile. –

Répondre

0

Vous devez concevoir vos collections MongoDB en fonction de la stratégie d'accès de votre application.

En général, vous devriez aller pour l'intégration si:

  • données intégrées sont toujours récupérées lorsque les données « principales » sont récupérées. Si vous récupérez toujours juste une partie des données (disons ce qui pourrait être dans coll1) mais rarement vous avez aussi besoin de données intégrées (coll2) alors l'intégration ne peut pas être aussi bonne.
  • Les données incorporées ne sont pas fréquemment sujettes à des modifications. Si vous avez le même objet incorporé dans plusieurs documents, vous devez le mettre à jour sur chacun d'eux lorsque quelque chose change et que des problèmes de cohérence peuvent survenir.
  • la cardinalité des données embeddedd n'est pas trop grande. Rappelez-vous que la taille maximale du document MongoDB est de 16 Mo. Cela dépend donc de ce que vous êtes supposé intégrer dans le document. Si par exemple vous pouvez avoir 100K objets incorporés par doc, vous êtes obligé de diviser les collections
  • L'intégrité des données peut être un problème: en ayant des données intégrées dans les documents "principaux", vous pouvez tirer parti du verrouillage du niveau de document (si vous utilisez le moteur de stockage Wired Tiger). Sinon, si vous êtes dans un système concurrent, avec la conception des deux collections, vous devez gérer le mécanisme de verrouillage par vous-même au niveau de l'application.
+0

Il est à noter que la partie d'intégrité des données dépend fortement du cas d'utilisation. Il se pourrait bien que ce ne soit pas l'intégration, mais documenter les changements et agréger les résultats pourrait être une approche plus viable, * en particulier * lorsque l'accès concurrent est la norme. –

+0

Merci! beaucoup – HungryBird

+0

@HungryBird si la réponse vous a aidé, s'il vous plaît marquer comme accepté –