Ok, donc le développement de plus en plus dans Mongodb commence à m'interroger sur le besoin de plusieurs collections plutôt que d'avoir une grande collection avec des index (puisque les colonnes et les champs peuvent être différents pour chaque document). Si j'essaie de développer de la manière la plus efficace possible (ce qui signifie moins de code et de code réutilisable), puis-je utiliser une collection pour tous les documents et simplement indexer sur un champ. En ayant tous les documents dans une collection avec des index alors je peux réutiliser tout mon code de traitement de formulaire et tout autre code puisque tout sera inséré dans la même collection.MongoDB - Une collection utilisant des index
Par exemple:
Disons que je développe un gestionnaire de contacts et j'ai deux types de contacts « individus » et « entreprises ». Ma pensée originale était de créer une collection appelée individus et une deuxième collection appelée entreprises. Mais c'était parce que je l'habitude de développer en sql où oui ce serait approprié puisque les colonnes seraient différentes pour chaque table. Plus je commençais à réfléchir à la flexibilité du document dbs, plus je commençais à penser: «Ai-je vraiment besoin de deux collections pour cela? Si je viens d'ajouter un champ à chaque document appelé "type de contact" et index sur cela, ai-je vraiment besoin de deux collections? Puisque les champs/colonnes de chaque document n'ont pas à être identiques pour tous (comme dans sql) alors chaque document peut avoir ses propres champs tant que j'ai un champ "type de document" et un index sur ce champ. Alors j'ai pris ce concept et j'ai commencé à penser, si je n'ai besoin que d'une collection pour "particuliers" et "entreprises", puis j'ai besoin d'une collection séparée pour "Utilisateurs" ou "Historique des contacts" ou d'autres données. . En théorie, je ne pourrais pas construire la solution entière dans une collection et avoir juste un champ dans chaque document qui spécifie le "type" et l'index dessus comme "Utilisateurs", "Contact individuel", "Contacts d'affaires", "Historique des contacts ", etc, et s'il s'agit d'un document lié à un autre document, je peux indexer sur le champ" parent/foreign "Id ...
Ceci me permettrait de coder le frontal de façon dynamique puisque le code de traitement de formulaire tous sont identiques (insertion dans la même collection). Cela permettrait d'économiser beaucoup de codage, mais je veux m'assurer qu'en utilisant des index et des index secondaires, la base de données fonctionnerait toujours rapidement et ne causerait pas de problèmes futurs au fur et à mesure que la collection grandirait. Comme vous pouvez l'imaginer, si tout se trouvait dans une collection, il pourrait y avoir des centaines de milliers voire des millions de documents dans cette collection au fur et à mesure que la base d'utilisateurs grandirait, mais elle aurait des index et index secondaires pour optimiser les performances.
Ma question est la suivante: est-ce une méthode courante que les développeurs de mongodb utilisent? Pourquoi ou pourquoi pas? Quelles sont les chutes, le cas échéant? S'il s'agit d'une méthode couramment utilisée, veuillez aussi donner des points positifs à l'utilisation de cette méthode. Je vous remercie.
oui je voudrais avoir plusieurs utilisateurs mais même alors j'ai besoin de plus d'une collection si je indexe juste sur le nom de collection et l'id d'utilisateur et réduis/filtre alors les résultats par l'identification de session de l'utilisateur. Ensuite, je n'utilise toujours qu'une seule collection ?? – user982853
Je sais que cassandra est sur la dénormalisation, mais beaucoup d'autres ne sont vraiment pas différents (à cet égard) que SQL.Base de données orientée document est vraiment juste une façon différente d'organiser votre base de données. Aussi mongo est très indulgent quand il s'agit de faire des schémas relationnels – kelloti