在大型mongoDB集上嵌入vs链接(ruby)

时间:2010-06-22 09:49:53

标签: ruby mongomapper mongoid

嵌入式与链接

我正在寻找以最快的方式搜索新闻稿文档以获取已连接的电子邮件。到目前为止,我已经使用MongoMapper将一个文档用于Newsletter,另一个用于Email。 + 100k电子邮件变得非常慢。

我想也许将电子邮件嵌入Newsletter中的数组可能会更快 因为我真的只对这封电子邮件感兴趣('someemail@email.com') 并没有任何逻辑。

1)是否有可能在一个文档中嵌入多达100k-500k的电子邮件? 2)Mongoid是否更好/更快?

如果通过询问

,我正在添加电子邮件
email = newsletter.emails.first(:email => 'someemail@email.com')
unless email
    email = Email.new(:email => 'someemail@email.com', :newsletter_id => self.id)
    email.save
end

我认为这是一切都开始受到伤害的地方。

以下是他们的联系方式     班级通讯        包括MongoMapper :: Document        很多:电子邮件        ...      端

Class Email
   include MongoMapper::Document
   key :email, String
   key :newsletter_id, ObjectId
   belongs_to :newsletter
end

希望得到任何帮助:)

1 个答案:

答案 0 :(得分:0)

目前MongoDB的最大文档大小为16mb,MongoMapper或Mongoid对此没有任何影响。

请参阅http://www.mongodb.org/display/DOCS/Documents

嵌入式文档应该相当快,如果你能够在限制范围内容纳所有电子邮件,那么可能会很紧张。

如果要存储整个电子邮件,为什么不只是存储一个数组,或者只是嵌入电子邮件地址和电子邮件地址,并参考完整的电子邮件。

然后,您可以获得所需的速度优势,并在简报之外保持可以访问的电子邮件。