Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何加速Mongodb插入?_Java_Mongodb_Real Time Strategy - Fatal编程技术网

Java 如何加速Mongodb插入?

Java 如何加速Mongodb插入?,java,mongodb,real-time-strategy,Java,Mongodb,Real Time Strategy,我正在尝试使用mongodb(Java编码)创建一个大数据应用程序。我的收藏包括普通的文本文档。由于我不希望重复,而且文档的文本字段太大,无法在其上创建唯一索引,因此我决定为每个文档的文本计算校验和值(MessageDigest with MD5),将此字段保存在文档中,并在此字段上创建唯一索引 我的文档的结构大致如下: 因此,当我将新文档添加到我的集合中时,首先我尝试通过查找具有该校验和值的文档来查找它是否存在。如果它存在,我将更新它的(其他字段),否则我将插入新文档 这个策略有效!但在收集了

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

我的文档的结构大致如下:

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


这个策略有效!但在收集了一百万份文件后,我开始得到无法接受的插入持续时间。cheksum查找和插入都变慢了。我可以在近1小时内插入约30000个文档!我已经读过有关批量插入的内容,但如果我这样做,我无法决定如何处理重复记录。有没有加快发展的策略建议

我认为如果使用另一个只包含校验和和和更新时间文件的集合,速度会快得多。当您插入普通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)
}

您是否在
校验和
更新时间
上有一个复合索引,并且您是否试图在upsert选项设置为true的情况下进行更新?很抱歉,我提供的信息是错误的。没有更新时间查询。只是切克萨姆。我纠正了这个问题。但“textval”上有索引。这可能是缓慢的原因吗?
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)
}