2

嵌入式与链接

我正在寻找最快的方法来搜索通讯文档以查找连接的电子邮件。到目前为止,我已经将 MongoMapper 与一个用于 Newsletter 的文档和另一个用于电子邮件的文档一起使用。+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 many :emails ... end

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

希望对此有任何帮助:)

4

1 回答 1

0

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

http://www.mongodb.org/display/DOCS/Documents

但是,如果您可以在限制范围内容纳所有电子邮件,嵌入式文档应该会快得多。

如果存储整个电子邮件太多了,为什么不存储一个数组或者只是将电子邮件地址嵌入到时事通讯中,并引用完整的电子邮件。

然后,您可以获得所需的速度优势,并使电子邮件在时事通讯之外可访问。

于 2011-09-14T20:10:07.660 回答