Мне нужна помощь в моделировании моих данных в монго. Большинство моих опытов было в реляционных БД, я только начинаю w/mongo. Я моделирую данные для разных событий.
- Каждое "событие" имеет одинаковые поля.
- Каждое "событие" будет содержать от сотен до миллионов документов/строк
- События динамичны, т.е. При необходимости создаются новые. т.е., возможно, создать новое мероприятие "Летние Олимпийские игры 2016".
Вероятно, самое главное, при работе с событиями (CRUD-операции) пользователям нужно будет указать имя события.
Я вижу пару способов сделать это до сих пор, и я не хочу делать серьезную ошибку при настройке моей модели данных на "неправильный" способ.
1) Коллекция "событий", в которой есть данные для всех событий. Указатель на имя "event". Запрос будет выглядеть примерно так:
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 2013', attributes: [{name: 'steve smith', .... }
{event: 'Summer Olympics 2013', attributes: [{name: 'amy jones', .... }
2) Коллекция для каждого нового события, которое идет вместе, с коллекцией для отслеживания всех имен событий. Индекс имени события не требуется, поскольку каждое событие хранится в другой коллекции.
// 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'};
Для # 1 я немного обеспокоен тем, что как только я достиг 100 событий, каждый из которых имеет миллионы записей, поиск в "событии" будет медленным, даже если в одном из событий есть только 500 документов.
Для № 2 я "обкрадываю" модель монго здесь, создавая новую коллекцию каждый раз, и происходит событие?
Любые комментарии/идеи приветствуются, поскольку я действительно не знаю, какой из них будет в конечном итоге работать лучше, или если тот или другой заставит меня больше беспокоиться по дороге. Я огляделся (с сайтом mongo), и я действительно не могу найти конкретного ответа.