2013-03-05 3 views
2

Dans le scénario de Question et Commentaires ... où les commentaires n'existent pas d'eux-mêmes, mais sont stockés comme des éléments imbriqués dans leur document de question parent ... ces commentaires pourraient bien sûr s'accumuler à des centaines et des centaines d'entrées ... ne vais-je pas encourir une pénalité de performance lorsque je charge une question? Cette opération de chargement ne chargera-t-elle pas toutes les centaines et centaines de commentaires? Quelle requête pourrait (je devrais) exécuter pour charger la question, mais ensuite charger seulement les 10 premiers commentaires, pour avoir la possibilité de charger une autre "page" de commentaires comme je le dois?RavenDB Conception et performance de documents imbriqués

Ou RavenDB applique-t-il un chargement paresseux, en ce sens qu'il ne charge pas les commentaires jusqu'à ce que j'accède à la propriété Comments de l'instance de Question? Et même ainsi ... est-ce que je pourrais contrôler que "paresseux" charge les commentaires d'une manière paginée?

De même, comment ajouter un nouveau commentaire à une question sans avoir à charger la question (avec tous ses commentaires)?

+0

Voir mes commentaires dans votre [autre question] (http://stackoverflow.com/a/15210218/634824). J'aimerais vous référer à [le groupe RavenDB Google] (https://groups.google.com/forum/?fromgroups#!forum/ravendb) si vous avez d'autres questions concernant la compréhension de la modélisation. Gardons Stack Overflow pour un code spécifique. Merci. –

+2

imho cette question est un bon ajustement pour SO – jgauffin

Répondre

2

Lorsque vous chargez un document, vous voulez généralement tout charger (c'est-à-dire la page de détails dans le blog).

Pour la page d'index (répertoriant tous les articles de blog), vous pouvez créer un index qui fait map/reduce. En ce qui concerne l'enregistrement d'un nouveau commentaire, vous pourriez vous demander à quelle fréquence vous le faites? Dans la plupart des sites Web, les lectures sont beaucoup plus fréquemment utilisées que les écritures. Ainsi, la pénalité de performance pour le chargement du blog entier n'est pas si pertinente en regardant l'ensemble de l'image.

Mais si vous prévoyez d'avoir BEAUCOUP de commentaires, vous voudrez peut-être revoir votre application plus tard pour faire des agrégats de commentaires. Mais ne le faites pas tant qu'il ne s'est pas avéré être un problème de performance. (Il est également facile de déplacer les commentaires grâce à la nature schemaless de RavenDB).

+0

Donc, pour être clair, la réponse est, si vous stockez un document avec une collection imbriquée, chaque fois que vous chargez le document, la collection imbriquée entière est chargée avec elle? –

+0

Oui, sauf si vous avez créé un index et interrogez explicitement via l'index. La collection fait partie du document, il est donc normal qu'elle soit chargée. – jgauffin

Questions connexes