gpt4 book ai didi

java - 如何加速 Mongodb 插入?

转载 作者:可可西里 更新时间:2023-11-01 09:52:15 25 4
gpt4 key购买 nike

我正在尝试使用 mongodb(用 Java 编码)创建一个大数据应用程序。我的 Collection 包括普通的文本文件。由于我不希望重复且文档的文本字段太大而无法创建唯一索引,我决定计算每个文档文本的校验和值(MessageDigest with MD5),将此字段保存在文档中并在此创建唯一索引 field 。

我的文档大致有这样的结构:

{
"_id": ObjectId('5336b4942c1a99c94275e1e6')
"textval": "some long text"
"checksum": "444066ed458746374238266cb9dcd20c"
"some_other_field": "qwertyuıop"
}

因此,当我向我的集合中添加一个新文档时,我首先尝试通过查找具有该校验和值的文档来确定它是否存在。如果它存在,我更新它(的其他字段),否则我插入新文档。

这个策略奏效了!但是在集合中的一百万个文档之后,我开始获得无法接受的插入持续时间。校验和查找和插入都变慢了。我可以在将近 1 小时内插入约 30,000 个文档!我已经阅读了有关批量插入的信息,但如果我朝那个方向前进,则无法决定如何处理重复记录。关于加快速度的策略有什么建议吗?

最佳答案

我认为如果您使用另一个仅包含校验和和 update_time filelds 的集合会快得多。当您插入普通的 JSON 文档时,您还应该插入这个简短的 JSON 文档:

Your normal JSON document:
{
"_id": ObjectId('5336b4942c1a99c94275e1e6')
"textval": "some long text"
"checksum": "444066ed458746374238266cb9dcd20c"
"update_time": new Date(1396220136948)
"some_other_field": "qwertyuıop"
}

The short JSON document:
{
"_id": ...
"checksum": "444066ed458746374238266cb9dcd20c"
"update_time": new Date(1396220136948)
}

关于java - 如何加速 Mongodb 插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22784291/

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