NoSQL資料庫MongoDB的日常使用小結(一)

2021-07-07 08:20:14 字數 2126 閱讀 1899

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純動態 已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。...