J'ai besoin d'aide pour modéliser mes données en mongo. La plupart de mon expérience a été dans les bases de données relationnelles, je commence juste avec mongo. Je modélise des données pour différents événements.Mongodb: plusieurs collections ou une grande collection w/index
- Chaque 'événement' ayant les mêmes champs. Chaque événement aura des centaines à des millions de documents/lignes
- Les événements sont dynamiques, c'est-à-dire que de nouveaux seront créés si nécessaire. Par exemple, peut-être créer un nouvel événement 'Summer Olympics 2016'.
Probablement le plus important, lorsqu'il s'agit d'événements (opérations CRUD) les utilisateurs devront spécifier un nom d'événement.
Je peux voir plusieurs façons de le faire jusqu'à présent et je ne veux pas faire une erreur majeure dans la configuration de mon modèle de données de «mauvais».
1) Une collection 'événements' contenant des données pour tous les événements. Index sur le nom de l'événement Requête ressemblerait à quelque chose comme:
db.events.find({event: 'Summer Olympics 2012');
{event: 'Summer Olympics 2012', attributes: [{name: 'joe smith', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'jane doe', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'john avery', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'ted williams', .... }
db.events.find({event: 'Summer Olympics 2013'})
{event: 'Summer Olympics 2016', attributes: [{name: 'steve smith', .... }
{event: 'Summer Olympics 2016', attributes: [{name: 'amy jones', .... }
2) Une collection pour chaque nouvel événement qui vient, w/collection de garder une trace de tous les noms d'événement. Aucun index sur le nom de l'événement n'est nécessaire car chaque événement est stocké dans une collection différente.
// multiple collections, create new as needed
db.summer2012.find() // get summer 2012 docs
db.summer2016.find() // get summer 2016 docs
//'events' collection
db.events.find() // get all events that I would have collections for
{name: 'summer2012', title: 'Summer Olympics 2012};
{name: 'summer2016', title: 'Summer Olympics 2016};
Pour # 1 Je suis un peu inquiet qu'une fois que j'atteins 100 événements chacun avec des millions d'enregistrements par LookUps « événement » sera lente, même si l'un des événements a seulement 500 documents. Pour # 2 Est-ce que je "contourne" le modèle mongo ici en créant une nouvelle collection à chaque fois et l'événement arrive?
Tous les commentaires/idées sont les bienvenus, car je n'ai aucune idée de ce qui finira par mieux fonctionner ou si l'un ou l'autre me causerait plus de problèmes sur la route. J'ai regardé autour (le site de mongo inclus) et je ne peux vraiment pas trouver une réponse concrète.
Quels sont ces attributs? Gens? Alors avez-vous des événements x personnes qui participent à un événement? Ces personnes sont-elles enregistrées dans votre système? Si vous venez de commencer à MongoDB, jetez un oeil à ceci: https://code.google.com/p/morphia/wiki/QuickStart – rbento
Désolé mauvais exemple :(.Vraiment ses données géospatiales.Je vais avoir un x Les utilisateurs peuvent facilement ajouter/déposer une épingle sur la carte pour leur emplacement actuel et joindre des métadonnées sur cet emplacement, par exemple les photos/vidéo, le titre, la météo, etc Donc, imaginez un groupe de personnes lors de l'ajout olympique nouvelles données Personnes/emplacements Même différence La question est la suivante: chaque événement peut-il avoir des millions de documents si chaque événement doit être séparé dans sa propre collection, ou bien tous les documents d'événements doivent-ils être regroupés dans la même collection? collections qui ont chacune ~ 1 million de docs – lostintranslation
Je viens aussi de commencer avec Mongo, je pense que cette partie du manuel est importante: http://docs.mongodb.org/manual/applications/indexes/ Cela me conduit à cette impression que la conception de MongoDb db, peut, et devrait être très similaire à la conception de DB, et ainsi, je pulmp pour votre première option, surtout si vous avez l'intention de faire des questions "cross-event" –