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

conception mongo db des suivis et des flux, où dois-je intégrer ?

En général, il est déconseillé d'intégrer des relations de suivi/suivi dans les documents utilisateur, pour plusieurs raisons :

(1) il existe une limite de taille de document maximale de 16 Mo, et il est plausible qu'un utilisateur populaire d'un site bien abonné puisse se retrouver avec des centaines de milliers d'abonnés, ce qui approchera la taille maximale du document,

(2) les relations d'abonnés changent fréquemment, et donc le cas où un utilisateur gagne beaucoup d'abonnés se traduit par une croissance répétée des documents si vous intégrez des abonnés. La croissance fréquente des documents entravera considérablement les performances de MongoDB et doit donc être évitée (la croissance occasionnelle des documents, en particulier si les documents ont tendance à atteindre une taille finale stable, est moins pénalisante pour les performances).

Donc, oui, il est préférable de diviser la relation de suivi/suivi en une collection distincte d'enregistrements ayant chacun deux champs, par exemple, { _id :, oid :}, avec des index sur _id (pour le "qui suis-je suivi ? " requête) et oid (pour la requête "qui me suit ?"). Tout changement d'état individuel est modélisé par un ajout ou une suppression de document unique, bien que si vous affichez également des éléments tels que le nombre de suiveurs, vous devriez probablement conserver des compteurs séparés que vous mettez à jour après toute insertion/suppression de bord.

(Bien sûr, cela suppose que les exigences de votre entreprise vous permettent une certaine flexibilité sur les détails de cohérence :en général, si votre code d'affichage indique à un utilisateur qu'il a 304 abonnés et procède ensuite à leur énumération, seul l'utilisateur le plus pointilleux vérifiera que les abonnés énumérés compter jusqu'à 304. Si les besoins de l'entreprise nécessitent une cohérence absolue, vous aurez soit besoin d'une base de données qui isole les transactions pour vous, soit vous devrez faire le comptage vous-même dans le cadre de l'affichage de toutes les identités des utilisateurs.)