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

标签 ruby mongomapper mongoid

嵌入与链接

我正在寻找最快的方法来搜索通讯文档以查找连接的电子邮件。到目前为止,我已经将 MongoMapper 与一个文档用于时事通讯,另一个文档用于电子邮件。对于 +100k 的电子邮件,这变得非常慢。

我在想也许将电子邮件嵌入到 Newsletter 中的数组中会更快 因为我真的只对电子邮件感兴趣('someemail@email.com') 而不是围绕它的任何逻辑。

1) 是否有可能在一个文档中嵌入多达 10 万到 50 万封电子邮件? 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

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

这是它们的连接方式 类(class)通讯 包括 MongoMapper::文档 许多:电子邮件 ... 结束

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

希望对此有任何帮助:)

最佳答案

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

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

不过,嵌入式文档应该快得多,如果您可以在限制内容纳所有电子邮件,那可能会有点挤。

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

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

关于ruby - 在大型 mongoDB 集(ruby)上嵌入 vs 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3091981/

相关文章:

ruby-on-rails - MongoMapper和bson_ext问题

ruby-on-rails - 如何使用 Mongoid 更新 Rails 中嵌套的 Mongo 文档属性?

ruby-on-rails - 无需身份验证的安全 Rails 3 MultiStep Order Form 的最佳方法

ruby - 如何在 Win7-64 中修复 (OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed)

ruby-on-rails - update_attributes 无法在 after_save 回调中更新对象 (mongomapper+rails3)

ruby-on-rails - 使用 mongoid/mongodb/rails 访问引用字段

ruby-on-rails - 在 mongoid 关系上批量插入文档

ruby - 如何使用方法更改局部变量值?

ruby - ruby 中的运算符和方法链接

mongodb - 使用 MongoMapper 范围查询关联集合?