У меня вопрос по проектированию индекса в MongoDB.
Скажите, у меня есть коллекция пользователей и группы.
user {
name : "" ,
age : 19
}
group {
name : ""
members : [],
posts : [ { date : "" , author : "" , topic : "" }, { date : "" ,
author : "" , topic : "" } ......]
}
Может быть 1000 групп, и каждая группа может иметь миллионы
сообщения. Операции, которые я часто выполняю:
- получение сообщений на основе даты (70%)
- обновление сообщений (30%)
Итак, по сути, мне нужно индексировать по дате.
Мой вопрос:
Должен ли я создать новую коллекцию сообщений, такую как
posts {
name : "", date : "" , author : "" , topic : ""
}
и создание однозначного индекса по дате в коллекции сообщений
( db.posts.ensureIndex({posts : 1}) )
OR
Должен ли я включать посты внутри группового объекта и создавать встроенные
индекс как db.groups.ensureIndex({ posts.date : 1})
Какой из них более эффективен? какова лучшая практика, если это необходимо
масштабировать до миллионов сообщений?
Спасибо