J'essaye actuellement d'implémenter des interactions d'utilisateur de type Tumblr, comme reblog, following, followers, commentant, blogues de personnes que je suis actuellement en train de suivre, etc. De plus, il y a une obligation d'affichage de l'activité pour chaque article de blog.Un moyen efficace de créer des relations avec la base de données NoSQL
Je suis coincé avec la création d'un schéma approprié pour la base de données. Il existe plusieurs façons d'obtenir ce type de fonctionnalités (définition de structures de données intégrées comme des billets de blog et des commentaires, création d'un document d'activité pour chaque action, etc.) mais je ne peux pas décider quelle est la meilleure performance et évolutivité.
Par exemple, regardons la mise en œuvre des personnes que je suis. Voici un exemple de document utilisateur.
User = { id: Integer,
username: String,
following: Array of Users,
followers: Array of Users,
}
Cela semble trivial. Je peux gérer le champ suivant par action de l'utilisateur (suivre/ne pas suivre) mais que faire si un utilisateur que je suis actuellement est supprimé. Est-il efficace de mettre à jour tous les enregistrements d'utilisateurs qui suivent un utilisateur supprimé.
Un autre problème est de créer une vue de blog de personnes que je suis.
Post = { id: Integer,
author: User,
body: Text,
}
Ainsi est-il question efficace derniers messages comme;
db.posts.find({ author: { $in : me.followers} })
Merci pour votre aimable réponse. J'utilise vraiment MongoDB qui convient très bien à Node.js. Je ne veux pas utiliser d'autre technologie (parce que je dois l'apprendre et faire face à d'autres problèmes aussi bien) que si elle peut être implémentée en utilisant efficacement MongoDB. –
Je peux certainement voir la tentation de continuer à essayer d'utiliser MongoDB pour maintenir des relations de document craignant qu'une autre technologie ne crée plus de complexités. Cependant, à mon avis, il s'agira d'une solution non scalable, sauf si l'application en question est très petite et sera toujours maintenue par un seul développeur. À mesure que le nombre de développeurs de l'équipe augmentera, chacun devra comprendre les implications de la mise à jour et de la suppression de documents sur les relations de document. À long terme, cela ne fera que causer plus d'erreurs et de complexité. – manish