mongodb主要用來干嘛吭产,什么時(shí)候用,存什么樣的數(shù)據(jù)鸭轮?

一年多一直在使用mongodb臣淤,基本上從對(duì)mongodb不懂的小白,到現(xiàn)在操作mongodb無任何壓力窃爷,最近的一個(gè)項(xiàng)目在做mongodb副本集的管理邑蒋,三組機(jī)器做一個(gè)副本集,大概要管幾十臺(tái)上百臺(tái)副本集按厘,主要用來自動(dòng)化發(fā)布医吊,構(gòu)建副本集(我們的mongo副本集部署在docker中),所以在寫各種mongo shell的代碼實(shí)現(xiàn)逮京,說白了就是調(diào)用mongo的commands卿堂。看到這個(gè)問題特來回答一下懒棉。

mongodb眾所周知不支持事務(wù)草描,所以需要強(qiáng)事務(wù)的業(yè)務(wù)根本不能考慮mongodb。

mongodb的優(yōu)勢就是文檔存儲(chǔ):

1. 業(yè)務(wù)經(jīng)常變動(dòng)策严,需要不時(shí)的添加字段陶珠,那么mongodb比較適合,關(guān)系型數(shù)據(jù)庫添加字段的復(fù)雜度也還好

2. 嵌套文檔享钞,業(yè)務(wù)數(shù)據(jù)比較復(fù)雜揍诽,適合嵌套文檔式存儲(chǔ),那么mongodb非常合適栗竖,這個(gè)關(guān)系型數(shù)據(jù)庫比較難搞暑脆,雖然MySQL和pg也有文檔存儲(chǔ),但MySQL的不成熟狐肢,pg畢竟現(xiàn)在生產(chǎn)中使用還是偏少添吗,個(gè)人也不了解,這里不談份名。但這不僅僅這一點(diǎn)優(yōu)勢碟联,具體下面會(huì)細(xì)說。

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

4. 高可用的副本集支持

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

下面說說一個(gè)具體的使用事例:

項(xiàng)目的一條數(shù)據(jù)在10kb左右辰如,如果使用關(guān)系型數(shù)據(jù)庫那么需要將這條數(shù)據(jù)拆分成大概幾百條左右普监,建造多個(gè)表,設(shè)計(jì)較復(fù)雜,這種數(shù)據(jù)大概在一百萬條左右凯正,想想拆分后在十幾億的數(shù)據(jù)量就可怕毙玻。打平后的數(shù)據(jù)什么DB也都可以拿下,只是一百萬變十幾億比較恐怖而已廊散。

如果采用MySQL存儲(chǔ)桑滩,每次查詢需要使用外鍵查詢多個(gè)表,從這些表中拉取數(shù)據(jù)允睹,性能肯定要下降很多运准,比不上只在一個(gè)表查詢,而且只拉取少兩個(gè)數(shù)量級(jí)的數(shù)據(jù)擂找。查詢也還好,業(yè)務(wù)允許可以對(duì)結(jié)果做緩存浩销,放到redis里去贯涎。

但是重點(diǎn)來了,需求要增量更新部分?jǐn)?shù)據(jù)慢洋,這時(shí)候需要更新多個(gè)表塘雳,根本沒法做到原子性(注意事務(wù)不是原子操作),當(dāng)然也可以使用cas等技術(shù)補(bǔ)償普筹,達(dá)到最終一致性败明。但使用mongodb存儲(chǔ)只需要update一條數(shù)據(jù),對(duì)相應(yīng)的嵌套文檔中內(nèi)容更新太防,可以做到原子性妻顶,是不是很方便?

具體說說該項(xiàng)目的難點(diǎn)蜒车,查詢無法使用緩存讳嘱,可能會(huì)很吃驚,但是業(yè)務(wù)決定了確實(shí)做不了酿愧,而且增量更新的量達(dá)到上萬的QPS沥潭,如果不能保證原子性想想多么可怕!

所以mongodb在這里幫了大忙嬉挡,關(guān)系型數(shù)據(jù)庫解決不了這個(gè)難題钝鸽。

有人可能要問,mongodb沒有事務(wù)庞钢,上游數(shù)據(jù)寫入也會(huì)有問題拔恰,你不可能所有數(shù)據(jù)都存一個(gè)表吧?

當(dāng)然不是的基括,我們mongodb里的數(shù)據(jù)是從MySQL中清洗出來存到mongodb中的仁连,mongodb只做單點(diǎn)的業(yè)務(wù)需求,綜合的數(shù)據(jù)還是在MySQL中。

此項(xiàng)目我們用了上百個(gè)副本集饭冬,保證系統(tǒng)的高可用使鹅,這些副本集配置只要一條shell就搞定,如果用MySQL的主從不知道怎么配(我自己不懂)昌抠,估計(jì)DBA得忙死患朱,而該項(xiàng)目完全不需要也沒用到DBA。

說了這么多mongo的優(yōu)點(diǎn)炊苫,也說說他的缺點(diǎn):

1. 查詢優(yōu)化器和MySQL沒法比

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

3. 沒有事務(wù)侨艾,不敢存儲(chǔ)第一手?jǐn)?shù)據(jù)执虹,多用來做備份數(shù)據(jù)的存儲(chǔ)

mongodb可以做很多事情,取決于你腦洞唠梨,性能不差袋励,存一些相對(duì)不重要的數(shù)據(jù),mongodb嵌套文檔功能強(qiáng)大当叭,多看看官方文檔挖掘挖掘有用信息茬故,每次都能發(fā)現(xiàn)驚喜。

希望對(duì)你有用蚁鳖!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末磺芭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子醉箕,更是在濱河造成了極大的恐慌钾腺,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讥裤,死亡現(xiàn)場離奇詭異垮庐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坞琴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門哨查,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人剧辐,你說我怎么就攤上這事寒亥。” “怎么了荧关?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵溉奕,是天一觀的道長。 經(jīng)常有香客問我忍啤,道長加勤,這世上最難降的妖魔是什么仙辟? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮鳄梅,結(jié)果婚禮上叠国,老公的妹妹穿的比我還像新娘。我一直安慰自己戴尸,他們只是感情好粟焊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孙蒙,像睡著了一般项棠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挎峦,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天香追,我揣著相機(jī)與錄音,去河邊找鬼坦胶。 笑死透典,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的迁央。 我是一名探鬼主播掷匠,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼滥崩,長吁一口氣:“原來是場噩夢啊……” “哼岖圈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钙皮,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蜂科,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后短条,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體导匣,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年茸时,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贡定。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡可都,死狀恐怖缓待,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渠牲,我是刑警寧澤旋炒,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站签杈,受9級(jí)特大地震影響瘫镇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一铣除、第九天 我趴在偏房一處隱蔽的房頂上張望谚咬。 院中可真熱鬧,春花似錦通孽、人聲如沸序宦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽互捌。三九已至,卻和暖如春行剂,著一層夾襖步出監(jiān)牢的瞬間秕噪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工厚宰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腌巾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓铲觉,卻偏偏與公主長得像澈蝙,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撵幽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容