Скажем, у меня есть приложение, которое получает запросы с двумя параметрами: X и Y. Все, что я хочу сделать, это подсчет этих запросов, и я хочу использовать MongoDB для задачи.Моделирование данных MongoDB: Дилемма вложения документов
я могу думать о двух способов хранить эту информацию в MongoDB:
1. Наличие документа для каждой комбинации X и Y:
{
_id : "X+Y",
count : 34
}
2. вложения Y в X, это означает, что каждый из X имеет документ, в котором обобщаются все запросы с тем, что Х:
{
_id : "X",
total_count : 47,
y: {
"Y1" : 34,
"Y2" : 13
}
}
Каковы плюсы и минусы каждого из т hese методы?
Является ли один метод лучшей практикой? Есть ли другой законный метод, который мне не хватает? Это обычная дилемма?
Я читал руководство MongoDB data modeling раздел и a FAQ discussing this issue, но я не был удовлетворен.
Благодаря
Update
Мое приложение, как ожидается, обрабатывать около 50М запросов в день, в то время как каждый запрос имеет несколько атрибутов (например, X и Y), но относительно небольшое их количество (4-5), и каждый запрос должен быть подсчитан (либо вставкой, либо обновлением).
Эти данные будут запрашиваться каждый час или около того, и ожидается, что запросы будут использовать агрегацию. Эти запросы обычно запрашивают данные за последние несколько дней (до недели).
Первый способ был бы лучше с точки зрения чтения/записи ?! Может быть, если я запрошу конкретные X и Y, правильно? Поскольку, если я запрашиваю несколько типов, я должен запрашивать несколько документов (больше, чем во втором методе), и, насколько я понимаю, чем больше документов вы запрашиваете, тем хуже получается, нет? –