Каков наилучший дизайн документа для хранения чата с Mongo?Монго дизайн для чата приложения
- документ за номер + массив сообщений в каждой комнате
- документ за номер + документ в сообщении с _id номер
- что-то другое
Первый вариант должен обрабатывать некоторые ограничения (возможно, переопределять некоторые старые сообщения), потому что документ Mongo ограничен 16Mo (и каков может быть предел x сообщений? Я предполагаю, что x около ~ 300.000, я закрываю?).
Кроме того, кажется, что встроенные массивы, растущие слишком часто, могут turn a fast update-in-place to a slow copy operation. Я не совсем понимаю это.
Второй вариант будет длиться во времени, но сложнее управлять (многие запросы, ссылающиеся на _id и т. Д.).
Почему приложение чата должно сохранять сообщения в базе данных? Обычное определение «чата» - это мгновенное общение, поэтому не должно быть постоянства сообщений. (Важно, чтобы вы ответили на этот вопрос, потому что он расскажет нам о вашем использовании) – Philipp
Пользователи должны иметь возможность просматривать историю чата. Как и в Google Hangouts, сообщения сохраняются. Что может быть лучшим способом сделать это? –
Эффективный дизайн схемы очень зависит от вашего приложения. Для чат-приложения я ожидаю, что вы * можете * хотеть иметь какой-то подход с ведомым кодом (т. Е. Документы с целым рядом сообщений, а не всю историю). Несколько полезных отправных точек: [Проектирование схем MongoDB с встроенными, не встроенными и ведровыми структурами] (https://www.openshift.com/blogs/designing-mongodb-schemas-with-embedded-non-embedded-and-bucket -структуры) и [Схема дизайна для социальных почтовых ящиков в MongoDB] (http://blog.mongodb.org/post/65612078649/schema-design-for-social-inboxes-in-mongodb). – Stennie