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