gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:31 26 4
gpt4 key购买 nike

嵌入与链接

我正在寻找最快的方法来搜索通讯文档以查找连接的电子邮件。到目前为止,我已经将 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com