J'essaie de comprendre l'équivalent des clés étrangères et des index dans les bases de données NoSQL KVP ou Document. Puisqu'il n'y a pas de tableaux croisés dynamiques (pour ajouter des clés marquant une relation entre deux objets), je suis vraiment perplexe quant à la façon dont vous pourriez récupérer des données d'une manière qui serait utile pour les pages Web normales.
Disons que j'ai un utilisateur, et cet utilisateur laisse de nombreux commentaires sur tout le site. Le seul moyen auquel je pense pour suivre les commentaires des utilisateurs est de
- Intégrez-les dans l'objet utilisateur (ce qui semble assez inutile)
- Créez et maintenez une
user_id:comments
valeur qui contient une liste de la clé de chaque commentaire [commentaire: 34, commentaire: 197, etc ...] afin que je puisse les récupérer si nécessaire.
Cependant, en prenant le deuxième exemple, vous allez bientôt heurter un mur de briques lorsque vous l'utilisez pour suivre d'autres choses comme une clé appelée "active_comments" qui peut contenir 30 millions d'identifiants, ce qui coûte une TONNE d'interroger chaque page juste pour en savoir plus commentaires actifs. Il serait également très sujet aux conditions de course, car de nombreuses pages pourraient essayer de le mettre à jour en même temps.
Comment puis-je suivre des relations comme les suivantes dans une base de données NoSQL?
- Tous les commentaires d'un utilisateur
- Tous les commentaires actifs
- Tous les messages tagués avec [mot-clé]
- Tous les étudiants d'un club - ou tous les clubs auxquels appartient un étudiant
Ou est-ce que je pense mal à cela?