mongodb系列文章主要是本人自己在平時專案中使用mongodb的一些經驗小結,一方面為了留檔方便以後的檢視,另一方面也希望跟大家多多交流使用心得,一起進步。本文主要記錄在對mongodb資料庫進行資料更新的一些基本操作和方法,如有錯誤,煩請批評指正。
備註:所有測試都是在同一台機同樣的網路環境下進行。(由於專案環境原因,使用了vpn連線,可能有所影響,但不影響整體的測試結果)一開始沒考慮很多,滿以為mongodb的資料更新操作會很快,就直接使用了mongodb的update函式實現,實現**如下:(update的一些其他操作這裡就不在詳細敘述了,如有疑問可參考mongodb的官網)
//更新查詢條件
dbobject updatecondition = new basicdbobject();
//更新資料
dbobject updatedvalue = new basicdbobject();
updatedvalue.put("tags", tags);
//執行更新
dbobject updatesetvalue = new basicdbobject("$set",updatedvalue);
coll.update(updatecondition, updatesetvalue);
單條資料更新測試時間如下:
1000條資料更新時間為:6966ms
1000條資料更新時間為:6529ms
1000條資料更新時間為:6607ms
1000條資料更新時間為:6573ms
1000條資料更新時間為:10903ms
1000條資料更新時間為:6524ms
1000條資料更新時間為:6711ms
1000條資料更新時間為:6511ms
1000條資料更新時間為:6615ms
1000條資料更新時間為:6580ms
1000條資料更新時間為:7529ms
.....
做到這裡,其實大家可想而知,單條更新的速度其實是奇慢無比的,果不其然,慢的真的是令人髮指,160w+的資料更新,粗略算了一下,大概要3個小時。如果每一次更新一下資料都要3個多小時的話,我就只能呵呵噠了呀,此方法明顯不可取。
這種批量更新的需求是顯而易見的,我也相信mongodb肯定做過這樣的事情了,只不過是本人只是甚少的緣故而已。所以就開始搜尋各種部落格、官檔探尋資料的批量更新,終於功夫不負有心啊,在部落格[1]中看到了批量更新的影子,也就是標題中的bulk方法,於是就去查詢關於bulk的一些用法,終於實現了mongodb資料的批量更新,實現**如下:(關於bulk的詳細方法請參考mongodb的官檔。)
//迴圈新增更新資料
for(int i=0;;)
}
批量資料更新時間測試如下:
1000條資料更新時間為:450ms
1000條資料更新時間為:425ms
1000條資料更新時間為:413ms
1000條資料更新時間為:329ms
1000條資料更新時間為:419ms
1000條資料更新時間為:350ms
1000條資料更新時間為:719ms
1000條資料更新時間為:361ms
1000條資料更新時間為:349ms
1000條資料更新時間為:349ms
1000條資料更新時間為:382ms
1000條資料更新時間為:388ms
1000條資料更新時間為:382ms
1000條資料更新時間為:350ms
看到這裡,終於應該感到欣慰了,這個時間相對來說已經提高了將近20倍左右,更新的時間也大大縮減了,大功告成。
待解決的疑問:在批量更新的過程中,一開始整個更新的速度確實是挺快的,但是到了大約60w之後,速度開始有所降低,到底是何原因導致的,還有待進一步的測試和分析。但是總體來說,更新時間還是在可接受的範圍之內的。[1]
Nosql資料庫概述
nosql資料庫簡稱非關係型資料庫,not only sql 那麼nosql資料庫有什麼特點呢?1.易擴充套件 nosql資料庫種類很多,但是有乙個共同的特點是都去掉了關係型資料庫的關係型特性 資料之間無關係,這樣就很容易擴充套件,也在架構的層面帶來了可擴充套件的能力 2.大資料量高效能 nosql...
NoSQL資料庫筆談
序 思想篇cap 最終一致性 變體base 其他i o的五分鐘法則 不要刪除資料 ram是硬碟,硬碟是磁帶 amdahl定律和gustafson定律 萬兆乙太網 手段篇一致性雜湊 亞馬遜的現狀 演算法的選擇 quorum nrw vector clock virtual node gossip go...
NoSQL資料庫簡介
一 簡介 nosql not only sql 泛指非關係型的資料庫。隨著網際網路web2.0 的興起,傳統的關聯式資料庫在應付web2.0 特別是超大規模和高併發的sns型別的web2.0純動態 已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。...