我正在尝试使用 mongodb(Java 编码)创建一个大数据应用程序。我的收藏包括普通的文本文档。由于我不希望重复并且文档的文本字段太大而无法创建唯一索引,因此我决定为每个文档的文本计算校验和值(带有 MD5 的 MessageDigest),将此字段保存在文档中并在此创建唯一索引场地。
大致我的文档具有如下结构:
{ "_id": ObjectId('5336b4942c1a99c94275e1e6') "textval": "some long text" "checksum": "444066ed458746374238266cb9dcd20c" "some_other_field": "qwertyuıop" }
因此,当我向我的集合中添加一个新文档时,首先我尝试通过查找具有该校验和值的文档来查找它是否存在。如果它存在,我更新它(其他字段),否则我插入新文档。
这个策略有效!但是在集合中的一百万个文档之后,我开始获得不可接受的插入持续时间。校验和查找和插入都变慢了。我可以在将近 1 小时内插入约 30,000 个文档!我已经阅读了有关批量插入的信息,但如果我朝那个方向前进,我无法决定如何处理重复记录。关于加快速度的策略有什么建议吗?