Задать вопрос

Как лучше реализовать следующую структуру в mongodb?

Привет, ответьте пожалуйста, как лучше реализовать следующую структуру.

Имеется большой сервис, в котором регистрируются примерно 1k человек в день. У пользователей есть возможность писать сообщения, добавления своих записей в ленту. Суммарное кол-во сообщений всех пользователей в день составляет около 10 млн и около 800.000k записей ленты.

Эти записи и сообщения нужно хранить в базе данных(в нашем случае - mongodb). Есть понятие шардинг и репликация. Допустим я реализовал шардинг с 2,3 серверами баз данных. Но как мне реализовать структуру записи сообщений и записи лент, чтобы было по меньше нагрузки и чтобы быстрее отзывался сервер базы данных?

Может ли помочь такой примерный метод?

Каждый день в базе данных того или иного сервера, создается база данных (имеется ввиду создается база данных в котором есть коллекции) и для каждого пользователя создается коллекция для сообщений, коллекция для ленты.

Пример:
В день зарегистрировалось 1k человек.
Есть уже сегодня созданная база данных (например: db1449491310772).
Для каждого пользователя у меня создаются 2 коллекции (для сообщений, для записей ленты).
Т.е в базе данных db1449491310772 у меня сейчас 6k коллекций.
Таким образом, если 1k человек в день написали 10 млн сообщений, то 1 человек в среднем написал 10k сообщений, соответственно мне не надо будет просматривать 10 млн сообщений и искать из этих сообщений сообщения данного пользователя, и не придется пролистывать 10 млн объектов(сообщений), а лишь 10k.
  • Вопрос задан
  • 647 просмотров
Подписаться 7 Оценить 11 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы