摘要:旨在為應用提供可擴展的高性能數據存儲解決方案。,是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。目前的最新版本為,最新版本的在我看來更像的數據庫,功能更是越發強大。一些主流的介紹。
簡述
工作中經常接觸MongoDB,學習上也有對它進行一些研究,感覺MongoDB這種Nosql類型的數據庫給我在開發上帶來很多便捷,同時也解決了很多程序開發過程中在性能上考慮優化的可行方案。然而最近我在思考MongoDB看起來很棒,用起來很舒服,但是我是否對其抱有過分自信和過分依靠它呢?我想聊聊MongoDB的一些我比較看重地方,還有它隱藏的一些缺陷(可能暫時不明顯,但是日后可能會成為你自己親手埋下的地雷)。
簡述MongoDB和NoSQL MongoDBMongoDB,是一個基于分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB,是一個介于關系數據庫(sql)和非關系數據庫(nosql)之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。它支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型(這一點是我很喜歡,因為我經常會把一些經常使用的數據預先生成存進MongoDB,,相當于緩存的做法)。
Mongo,最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引(MongoDB的索引很多,沒記錯應該有7種,功能完善且強大,有力支持了高效查詢)。
目前MongoDB的最新版本為3.0+,最新版本的MongoDB在我看來更像sql的nosql數據庫,功能更是越發強大。
NoSQLNoSQL,泛指那些支持非關系型、分布式數據存儲的數據庫,最常見的解釋是“non-relational”或“Not Only SQL”,而“NoSQL”一詞最早于1998年被用于一個輕量級的關系數據庫的名字。
NoSQL被我們用得最多的當數key-value存儲,當然還有其他的文檔型的(這個我用的比較多,其次是k-v存儲)、列存儲、圖型數據庫、xml數據庫等。
NoSQL有很多優勢:NoSQL數據庫非常易于擴展;NoSQL數據庫都具有非常高的讀寫性能,尤其在大數據量下,高性能更為突出;NoSQL在不太影響性能的情況,就可以方便的實現高可用的架構(這個觀點我不太懂,網上給的經驗,可能大平臺才會體驗到吧)。
一些主流的NoSQL介紹:MongoDB;SequoiaDB;Cassandra。這是目前生產線上主流的三大NoSQL數據庫,有興趣大家可以去了解一下。
小結通過簡述MongoDB和NoSQL,相信我們對非關系型數據庫的了解能有一定收獲了吧,了解一件事物,首先我們必須認識它,現在我們認識了,接下來就是了解它了。
我與MongoDB 我與MongoDB的接觸與感悟我對MongoDB的接觸經常是進行數據整理,數據加工的時候會用到它,一般面對一些復制的涉及多表聯合查詢的業務邏輯時,我想跳過多表聯合查詢尋找在頁面加載時程序獲取數據的最快捷最高效的處理方案,這時MongoDB給了我一個不錯的選擇(因為MongoDB存儲的是字符串文本而且是支持一對多關系結構),這給了我兩個思考點:
第一、我是否可以對復雜的數據進行預處理,放到MongoDB上面,頁面需要用到的時候直接拿來用,這樣我只需要讀一次MongoDB就可以了,從而避免多次查表給服務器帶來的壓力,再說MongoDB對于高并發的負載能力也是很強大的。
第二、面對一對多的映射關系我是否可以用MongoDB集合的一對多映射解決sql的多個關聯表的冗雜。
有的時候我甚至覺得MongoDB不再像是數據庫,它更像是緩存服務器,因為它更多的是把數據預先存儲以備日后使用,但是它跟sql數據庫的最新數據往往不全是同步的,有一些出現延時的數據就是我想說的視為緩存的數據,那么問題就來了,怎么更好的保證數據的時效性,我不相信有人希望程序使用舊的數據,所以保持數據的新鮮應該是產品的最優需求,因為一個數據同步更新機制的建立很有必要,到底是定時更新方案還是sql內容更新同步方案好呢(我想出來的兩個我認為可行的數據同步方案)?一切根據具體應用場景來具體操作。
有的時候面對一些頁面的數據是暫定不會變化,比如新聞內容,對象介紹信息等等一些內容數據,這些數據很少會更新,所以很多情況下會把它們放到MongoDB上,避免重復查表,也可以理解為緩存到MongoDB上面去了(我的理解),但是我們必須主要在程序上不能單單只依靠MongoDB或緩存上面的哪些數據,我們為了避免風險,應該在程序的最后加上原始數據的組裝處理,保證數據準確性,因為沒人能保證MongoDB永遠可靠(這里就提到MongoDB的可靠性,這個爭議比較大的,一些人說MongoDB的數據容易丟失,或者在數據遷移上出現問題等等),我的觀點的永遠不要相信數據庫,我們要做好一切問題出現的準備,有備無患。
還有一點就是我想分享一些MongoDB的使用經驗(這個日后等我整理好資料后再更新)
總結碼了這么多字,其實就是想說MongoDB很好用,但是不能對數據庫太依靠太放心,它能為我們提供一些很不錯的解決方案,但是我們必須在考慮使用它之前先做好任何它掛掉的準備,同樣面對其他情況下也要有這種危機意識,數據庫是不能盡信的,一場臺風可能你的機房就沒了,所以你要備份或者風險規避機制,應對突發的問題做好預案,保證程序系統安穩,這個才是重中之重!
最后歡迎大家指正我的錯誤觀點,分享你的觀點看法和經驗,大家一起學習一起進步吧。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61689.html
摘要:旨在為應用提供可擴展的高性能數據存儲解決方案。,是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。目前的最新版本為,最新版本的在我看來更像的數據庫,功能更是越發強大。一些主流的介紹。 簡述 工作中經常接觸MongoDB,學習上也有對它進行一些研究,感覺MongoDB這種Nosql類型的數據庫給我在開發上帶來很多便捷,同時也解決了很多程序開發過...
摘要:布爾類型,表示文檔是否按照有序或者無序插入,默認是返回參數返回了含有操作狀態的對象插入文檔成功返回如下對象字段指明了插入文檔的總數如果該操作遇到了錯誤對象將包含該錯誤信息例子四其它可以向集合中添加文檔的方法和選項一起使用的。 上一節介紹了MongoDB的基本的命令,以及結構的了解,這一節的主題是介紹一下MongoDB的插入文檔的操作的基礎命令的使用,MongoDB當中文檔的數據結構和j...
閱讀 1339·2021-11-11 16:54
閱讀 2385·2021-09-22 10:51
閱讀 2655·2019-08-30 15:44
閱讀 3206·2019-08-29 17:05
閱讀 1445·2019-08-29 17:01
閱讀 2898·2019-08-29 12:28
閱讀 2471·2019-08-26 13:50
閱讀 1731·2019-08-23 16:47