Я проектирую социальную сетевую систему, такую как твиттер, и пользователи получат уведомления, я собираюсь сохранять уведомления в mongodb. Мы будем поддерживать 100 уведомлений для каждого пользователя максимум, и единственным полем будет обновление read
(пользователь прочитал уведомление). Поэтому мне интересно, кастрированный баран с помощью несколько документов, как ударМногосторонний документ или встроенный документ в Mongodb?
{"userId":1, "content":"some msg", "read":true..}
{"userId":1, "content":"another msg", "read":true..}
или с помощью встроенных документов, как это:
{"userId":1, "noficications":[{"content":"some msg", "read": true},{"content":"another msg", "read":true}]}
Я хотел использовать встроенный массив, но немного волновался за производительность. Как упоминалось в этих статьях: [1] (https://groups.google.com/forum/#!topic/mongodb-user/8R0UwurbbyE), [2] (http://www.askasya.com/post/largeembeddedarrays/), производительность может быть проблемой. Что, если размер массива равен 100? Это вызовет проблемы с производительностью? – Collin
Если ваше ограничение количества элементов возвращается клиенту для каждого запроса, то отдельные документы будут более эффективными, так как массив займет больше рабочего пространства, и вам также нужно будет получить мангу, чтобы нарезать его –
Но если вы используете отдельные документы, трудно ограничить количество документов пользователей определенным числом. В этом случае я должен настроить программу планирования и перебрать все документы, которые будут неэффективными, не так ли? – Collin