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

Devrions-nous utiliser dbref ou un document intégré dans une application à lecture intensive

DBref n'a rien à voir avec une clé étrangère dans les systèmes relationnels traditionnels. C'est seulement une convention qui dit facilement à un conducteur (qui en est capable) de charger automatiquement ces documents référencés. Veuillez consulter DBRef pour plus d'informations à ce sujet.

Selon le pilote utilisé, vous pourrez peut-être charger ces références automatiquement uniquement lorsque vous en avez besoin (paresseux), de sorte que la surcharge de performances devrait être très faible. Mais la surcharge de stockage est un peu plus élevée qu'un simple _id référencé d'un autre document. Fondamentalement, je dirais que vous ne devez utiliser ces DBrefs que si le document lié peut être de type variable. Si c'est statique, vous êtes coincé avec des références _id et peut-être votre propre fonctionnalité de chargeur paresseux, donc vous ne vous répétez pas.

Ne vous répétez pas (ou la duplication de données en termes de base de données) s'applique également dans votre contexte, comme le recommande MongoDB (donc je le ferais aussi), c'est seulement lier vos documents . Sinon, vous auriez une utilisation de stockage plus élevée et des mises à jour un peu longues, pour mettre à jour une seule entité logique (dupliquée physiquement très souvent).

Avec le chargeur paresseux personnalisé mentionné précédemment, vous pouvez ajouter une mise en cache afin que toutes les recherches n'aboutissent pas réellement à une recherche mongodb. Vous devrez alors probablement vous occuper de la cohérence de vos données entre le cache et la base de données.