Mongodb使用總結


學習Mongodb已經有半年多了,為啥學習它,工作需要啊。好了,廢話不說,總結在實際項目應用中的幾點問題。

 

學習總結

首先,mongodb基本上既照顧到了sql某些語法,又有nosql的許多優點。入門簡單,上手快,所以很多人開始探索nosql及雲計算時,基本上都是從mongodb開始。但有幾點需要注意:

1、mongodb不支持事務,所以,在你的項目中應用時,要注意這點。無論什么設計,都不要要求mongodb保證數據的完整性。但是mongodb提供了許多原子操作,比如文檔的保存,修改,刪除等,都是原子操作。所謂原子操作就是要么這個文檔保存到Mongodb,要么沒有保存到Mongodb,不會出現查詢到的文檔沒有保存完整的情況。

2、mongodb的優勢不是在於他能很快進行排序和檢索,而是他支持一些nosql的特性,比如,高可用性,面向文檔,支持子文檔,文檔內數組,松散的文檔結構定義(這個使用的時候要注意哦,特別是某些字段不是必須的時候)等許多特性。當你像利用他來代替常規數據庫以提高排序性能或者復雜檢索時,你會死的很慘。

3、Mongodb自帶的學習資料(MongoDB-manual-master.pdf)很重要,基本上所有的問題,都能在上面找到答案,而且文檔很豐富。因此學習起來比較輕松,但是文檔大部分是英語,如果英語有困難,那就無能為力了。不過里面的英語也很簡單。

4、其Java API基本上沒有文檔,如何怎么使用JAVA API呢?這個其實用的多了,基本上也不用看client API了,mongodb里面操作的都是json。json也可以理解成java中的map,key就是你要執行的操作,比如你想set一個列的值,key就是$set,value可能是一個字符串,也可能還是一個json。mongodb的BasicDBObject就是一個繼承自map的類。

 

 

 

使用經驗

1、Mongodb在內存夠用的時候,性能特別高,但是當你的數據超過內存限制時,性能急劇下降(通常會下降10倍)。如果你使用mongodb,一定要配盡量大的內存,足以保留你業務的熱數據。

2、Mongodb跟mysql一樣,對於常用的查詢條件,該建索引的建索引。不要認為內存夠用,數據就會在內存,有時,內存夠用,數據也不一定在內存。不知道mongodb怎么處理這些數據的。

3、一定要使用副本集,一個主庫,進行更新等操作,一個replicaset,用於檢索查詢。如果使用一個實例的話,更新等操作會鎖定整個庫,從而影響到查詢檢索的速度。項目中經過測試,有副本集的庫,速度要比沒有副本的庫快至少5倍。

4、Mongodb對兩個及以上的數組列,不能建立復合索引。也就是說,一個復合索引中,不能包含兩列都是數組的列。

 

由於個人對mongodb的使用時間較短,使用的特性有限,總結難免出現差錯,歡迎大家拍磚。

 

 

 

 

 

對這類話題感興趣?歡迎發送郵件至 donlianli@126.com
關於我:邯鄲人,擅長Java,Javascript,Extjs,oracle sql。
更多我之前的文章,可以訪問  我的空間


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM