Я начинаю проект, который, как мне кажется, будет особенно подходить для MongoDB из-за скорости и масштабируемости, которые он предоставляет.
Модуль, который меня сейчас интересует, связан с чатом в реальном времени. Если бы мне пришлось делать это в традиционной СУБД, я бы разделил это на:
- Канал (у канала много пользователей)
- Пользователь (у пользователя один канал, но много сообщений)
- Сообщение (у сообщения есть пользователь)
В качестве цели этого варианта использования я хотел бы предположить, что обычно одновременно будет активным 5 каналов, каждый из которых обрабатывает не более 5 сообщений в секунду.
Конкретные запросы, которые должны выполняться быстро:
- Получать новые сообщения (на основе закладки, может быть, отметки времени или увеличивающегося счетчика?)
- Опубликовать сообщение на канале
- Убедитесь, что пользователь может публиковать сообщения на канале
Принимая во внимание, что ограничение на размер документа в MongoDB составляет 4 МБ, как бы вы подойдете к разработке схемы? Как бы ты выглядел? Есть ли какие-то ошибки, которых я должен остерегаться?