中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mongodb數據庫的優缺點是什么

發布時間:2020-08-03 14:54:55 來源:億速云 閱讀:460 作者:清晨 欄目:編程語言

小編給大家分享一下mongodb數據庫的優缺點是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家學習,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去學習方法吧!

一年多一直在使用mongodb,基本上從對mongodb不懂的小白,到現在操作mongodb無任何壓力,最近的一個項目在做mongodb副本集的管理,三組機器做一個副本集,大概要管幾十臺上百臺副本集,主要用來自動化發布,構建副本集(我們的mongo副本集部署在docker中),所以在寫各種mongo shell的代碼實現,說白了就是調用mongo的commands。看到這個問題特來回答一下。

mongodb眾所周知不支持事務,所以需要強事務的業務根本不能考慮mongodb。

mongodb的優勢就是文檔存儲:

1. 業務經常變動,需要不時的添加字段,那么mongodb比較適合,關系型數據庫添加字段的復雜度也還好

2. 嵌套文檔,業務數據比較復雜,適合嵌套文檔式存儲,那么mongodb非常合適,這個關系型數據庫比較難搞,雖然MySQL和pg也有文檔存儲,但MySQL的不成熟,pg畢竟現在生產中使用還是偏少,個人也不了解,這里不談。但這不僅僅這一點優勢,具體下面會細說。

3. upsert支持,查詢速度也不慢

4. 高可用的副本集支持

5. 查詢語法非常豐富,嵌套文檔查詢功能非常強大,不是重度用戶可能不能理解

下面說說一個具體的使用事例:

項目的一條數據在10kb左右,如果使用關系型數據庫那么需要將這條數據拆分成大概幾百條左右,建造多個表,設計較復雜,這種數據大概在一百萬條左右,想想拆分后在十幾億的數據量就可怕。打平后的數據什么DB也都可以拿下,只是一百萬變十幾億比較恐怖而已。

如果采用MySQL存儲,每次查詢需要使用外鍵查詢多個表,從這些表中拉取數據,性能肯定要下降很多,比不上只在一個表查詢,而且只拉取少兩個數量級的數據。查詢也還好,業務允許可以對結果做緩存,放到redis里去。

但是重點來了,需求要增量更新部分數據,這時候需要更新多個表,根本沒法做到原子性(注意事務不是原子操作),當然也可以使用cas等技術補償,達到最終一致性。但使用mongodb存儲只需要update一條數據,對相應的嵌套文檔中內容更新,可以做到原子性,是不是很方便?

具體說說該項目的難點,查詢無法使用緩存,可能會很吃驚,但是業務決定了確實做不了,而且增量更新的量達到上萬的QPS,如果不能保證原子性想想多么可怕!

所以mongodb在這里幫了大忙,關系型數據庫解決不了這個難題。

有人可能要問,mongodb沒有事務,上游數據寫入也會有問題,你不可能所有數據都存一個表吧?

當然不是的,我們mongodb里的數據是從MySQL中清洗出來存到mongodb中的,mongodb只做單點的業務需求,綜合的數據還是在MySQL中。

此項目我們用了上百個副本集,保證系統的高可用,這些副本集配置只要一條shell就搞定,如果用MySQL的主從不知道怎么配(我自己不懂),估計DBA得忙死,而該項目完全不需要也沒用到DBA。

說了這么多mongo的優點,也說說他的缺點:

1. 查詢優化器和MySQL沒法比

2. 不支持reload,只能冷重啟,初始化配置的時候比較麻煩

3. 沒有事務,不敢存儲第一手數據,多用來做備份數據的存儲

mongodb可以做很多事情,取決于你腦洞,性能不差,存一些相對不重要的數據,mongodb嵌套文檔功能強大,多看看官方文檔挖掘挖掘有用信息,每次都能發現驚喜。

以上是mongodb數據庫的優缺點是什么的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临潭县| 临武县| 西城区| 宁都县| 仙桃市| 池州市| 乐东| 苍溪县| 常熟市| 沙湾县| 安阳县| 榆树市| 巫溪县| 沽源县| 南雄市| 普安县| 宁晋县| 虹口区| 凌云县| 南丹县| 射洪县| 稻城县| 南华县| 凭祥市| 龙门县| 修武县| 和龙市| 潮安县| 丹江口市| 金昌市| 湖州市| 九龙坡区| 和龙市| 游戏| 黑河市| 陇南市| 恩施市| 阜南县| 鸡泽县| 古丈县| 正定县|