Если документ MongoDB представляет собой сообщение в блоге с комментариями, то он не будет масштабироваться, если комментарии превышают 4 МБ? - PullRequest
4 голосов
/ 11 сентября 2010

На странице MongoDB: http://www.mongodb.org/display/DOCS/Inserting

doc = { author: 'joe',
  created : new Date('03/28/2009'),
  title : 'Yet another blog post',  
  text : 'Here is the text...',  
  tags : [ 'example', 'joe' ],  
  comments : [ { author: 'jim', comment: 'I disagree' },              
               { author: 'nancy', comment: 'Good post' }  ]}

db.posts.insert(doc);
db.posts.find( { "comments.author" : "jim" } )

Правда ли, что если комментарии больше 4 МБ, этот документ не будет работать? Можно сказать, что для него трудно быть больше 4 МБ, но я думаю, что система будет немного ограничена, если она будет ограничена размером или количеством комментариев, подобных этому. Если это реляционная модель, то такого ограничения нет, за исключением, главным образом, дискового пространства.

Или есть другой способ обработки комментариев, чтобы он мог быть любого размера?

Ответы [ 2 ]

5 голосов
/ 11 сентября 2010

Я думаю, вы захотите разбить комментарии на 4 МБ.

В соответствии с документацией, вы должны рассчитывать на текущий предел 4 МБ.Итак, две идеи:

  • Разделить комментарии на документы (например, 1000 на документ)
  • Хранить каждый комментарий как отдельный документ в коллекции "комментариев"
1 голос
/ 15 сентября 2010

Да, это проблема, если объем комментариев превышает 4 МБ.Вы можете немного изменить свой дизайн с помощью mongo DbRef .

, разделив ваш документ на две части в виде блога и комментариев

var comment = { id:"xx",
                 comments : [ { author: 'jim', comment: 'I disagree' },              
                           { author: 'nancy', comment: 'Good post' }  ]}
               }

Этот документ с комментариями будет содержать все комментарии, связанные сконкретный пост. И вставьте этот комментарий в блог, используя Dbref, что-то вроде

   db.comments.save(comment)
   var doc = { author: 'joe',
               created : new Date('03/28/2009'),
               title : 'Yet another blog post',  
               text : 'Here is the text...',  
               tags : [ 'example', 'joe' ],  
               comments : [ new DBRef('comments', comment ._id) ] 
             }
   db.blog.save(doc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...