Je suis un peu nouveau pour les bases de données noSQL (je suis assez bon avec les bases de données relationnelles cependant), et je me demande quel est le moyen le plus efficace de gérer les messages seraient. Chaque "message" aura un seul expéditeur et un seul destinataire. Le nombre de messages reçus/envoyés variera considérablement entre les utilisateurs. Ce système devrait bien évoluer à plus de 1k + utilisateurs.MongoDB/Mongoose Schema pour les messages threadés (efficacement)
J'ai lu sur le ventilateur en écriture/lecture, mais je ne suis pas sûr à quel point cela fonctionnerait pour les messages threadés.
Comme je suis nouveau sur MongoDB/NoSQL en général, je ne suis pas vraiment habitué à structurer efficacement les données de cette façon. Je suppose qu'il va y avoir des objets imbriqués dans n'importe quelle manière efficace de gérer cela ... mais je ne peux pas me contenter d'un design qui semble à la fois efficace et pratique pour les conversations threadées entre 2 utilisateurs.
Je pensais à stocker des données avec un tableau des 2 utilisateurs, combiné avec un tableau d'objets 'message'. Mais il y a aussi le problème de l'ordre des noms d'utilisateur des 2 utilisateurs. (ex: [UserA, UserB] et [UserB, UserA] sont tous les deux possibles et seraient problématiques, ce qui a semblé être une mauvaise idée). Je pensais faire tout le ventilateur en lecture/écriture, mais cela ne semble pas efficace pour les messages threadés (puisque si saisir des messages par le destinataire est pratique, saisir les messages par expéditeur ne sera pas et vice versa) . Je penche en faveur de l'acceptation des messages par le destinataire (puisque la boîte de réception charge plusieurs messages, et l'envoi n'en implique qu'un [mais avec un temps de recherche plus long]). Mais j'aimerais vraiment saisir une conversation filaire en une fois, ainsi que la liste des utilisateurs avec lesquels un utilisateur a des discussions avec fil (pour la liste des discussions).
Si quelqu'un pouvait me donner un schéma efficace pour les conversations avec fil, je serais très reconnaissant. J'ai fait des recherches sur ce sujet et essayé de régler un design pendant des heures, et je suis épuisé. Je continue de trouver des failles dans mes conceptions et de les mettre au rebut et je voudrais vraiment juste une entrée de quelqu'un plus expérimenté avec bases de données NoSQL/MongoDB afin que je puisse éviter de faire un énorme défaut de conception et/ou une logique d'écriture meilleure conception de base de données.
Merci d'avance pour toute aide.
Merci pour tous les liens utiles. Je suis tombé sur le premier et le dernier pendant mes recherches. Je suppose que ma vraie question est, par souci d'efficacité, où devrais-je séparer le schéma de base de données et la logique pour cela. Devrais-je le stocker d'une manière qui me permette de l'attraper à partir de la base de données déjà triée d'une manière thread-conversation ... ou devrais-je simplement avoir un schéma de message et le trier avec la logique côté serveur? –