我正嘗試使用mongodb(Java編碼)創建大數據應用程序。我的收藏由普通文本文件組成。由於我不希望重複項和文檔的文本字段太大而無法創建唯一索引,因此我決定爲每個文檔的文本計算校驗和值(MessageDigest with MD5),將該字段保存在文檔中並在此處創建唯一索引領域。如何加快Mongodb插入?
大約在我的文檔具有類似的結構:
{ "_id": ObjectId('5336b4942c1a99c94275e1e6') "textval": "some long text" "checksum": "444066ed458746374238266cb9dcd20c" "some_other_field": "qwertyuıop" }
所以,當我加入一個新的文檔到我的收藏,第一次我試圖找到如果存在通過找到的文檔與校驗值。如果存在,我更新(其他字段),否則我插入新文檔。
此策略有效!但是,在收集了一百萬份文檔後,我開始得到不可接受的插入時間。 cheksum查找和插入都放慢了。我可以在近1小時內插入約30,000個文檔!我已經閱讀過有關批量插入的內容,但如果我朝這個方向前進,則無法決定如何處理重複記錄。任何關於加速戰略的建議?
你對'checksum'和'update_time'一個複合索引,並且你試圖做與更新upsert選項設置爲true? –
對不起,我給的信息是錯誤的。沒有update_time查詢。只是cheksum。我糾正了這個問題。但是有關於「textval」的索引。它能成爲緩慢的原因嗎? – salihcenap