mongo回顧(二)

上回提到,對比關(guān)系型數(shù)據(jù)庫的全部靡菇,非關(guān)系型數(shù)據(jù)庫就像偏科選手重归。但是非關(guān)系型數(shù)據(jù)庫也有全能型選手,那就是mongodb厦凤。今天簡單說下mongo的基本特征鼻吮,和它是如何存儲數(shù)據(jù)的。
首先mongodb是文檔型數(shù)據(jù)庫较鼓,所謂文檔型數(shù)據(jù)庫就是數(shù)據(jù)以json格式進(jìn)行存儲狈网,一個文檔數(shù)據(jù)對象中可以嵌套著另一個對象,可以包含數(shù)組(早期數(shù)組只允許嵌套兩層笨腥,后面解除了這個限制拓哺,但是還是不建議嵌套太多層,會影響解析數(shù)據(jù)的性能)脖母。
JSON 數(shù)據(jù)模型對于開發(fā)者來說是比較合適的士鸥,在適合用mongo開發(fā)的情況下,你會發(fā)現(xiàn)代碼量比關(guān)系型數(shù)據(jù)庫少了挺多谆级,JSON模式簡化了數(shù)據(jù)庫層面設(shè)計(jì)烤礁,orm編碼的工作


image.png

文檔格式類似于上面,對象里面既可以嵌套對象肥照,也可以嵌套數(shù)組脚仔。
有個說法是mongo是無模式,不需要模型設(shè)計(jì)的舆绎?這是什么意思鲤脏。
傳統(tǒng)模型設(shè)計(jì):從概念到邏輯到物理


image.png

即為從一個虛渺的概念->類圖->真正數(shù)據(jù)庫的存儲數(shù)據(jù)(包括外鍵索引等)
而在設(shè)計(jì)過程中有一個原則是在遵循三大范式的同時,允許適量的冗余。
在這個原則下吕朵,一個對象可能被拆成好幾張表來進(jìn)行存儲猎醇;
而mongo由于是文檔型數(shù)據(jù)庫,整個對象可以直接進(jìn)行存儲努溃,所以邏輯模型和物理模型通常是類似的硫嘶,導(dǎo)致讓人有一個錯覺。mongo是不需要模型設(shè)計(jì)的梧税。實(shí)際上概念模型到邏輯模型還是需要的沦疾。

mongo不要求絕對準(zhǔn)守范式,還鼓勵著數(shù)據(jù)的冗余第队,把大部分有關(guān)系的數(shù)據(jù)存儲在同一個文檔中哮塞,可以很大的提高mongo的性能(這個mongo的索引設(shè)計(jì)有關(guān))
但是不是所有有關(guān)聯(lián)的數(shù)據(jù)都可以冗余,mongo的一個文檔不能大于16M斥铺,而且有些數(shù)據(jù)需要經(jīng)常更改彻桃,冗余的話,牽一發(fā)而動全身晾蜘,這樣的設(shè)計(jì)是不合理的邻眷,因此有些情況還是需要抽取出來成兩個文檔眠屎,通過邏輯外鍵進(jìn)行管理(mongo沒有物理外鍵)
那冗余在一個文檔中mongo怎么來表現(xiàn)關(guān)系型數(shù)據(jù)庫的關(guān)聯(lián)關(guān)系:一對一,一對多肆饶,多對多改衩?
答案通過內(nèi)嵌對象或數(shù)組;一對一內(nèi)嵌對象驯镊,一對多葫督,多對多通過內(nèi)嵌數(shù)組都可以解決
mongo邏輯外鍵的話有關(guān)聯(lián)語句嗎?
mongo在聚合操作中有一個$lookup 可以來模仿關(guān)聯(lián)查詢板惑,但是它的功能相當(dāng)于left join而已橄镜,而且效率沒mysql的高,在分片情況下還會失效(可以想象分片相當(dāng)于mysql中的分表冯乘,分表后關(guān)聯(lián)查詢也不好查)洽胶。
所以本篇得出第一個優(yōu)缺點(diǎn):
優(yōu)點(diǎn):mongodb可以減少代碼的開發(fā)量,方便模型設(shè)計(jì)
缺點(diǎn):關(guān)聯(lián)關(guān)系比較多的業(yè)務(wù)裆馒,不適合使用mongodb做為應(yīng)用數(shù)據(jù)庫
為什么mongo建議數(shù)據(jù)盡可能放一個文檔姊氓,第一個原因是關(guān)聯(lián)不方便喷好,還有一個原因是查詢不方便翔横,下一篇就來聊聊mongo的索引

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市梗搅,隨后出現(xiàn)的幾起案子些膨,更是在濱河造成了極大的恐慌,老刑警劉巖洼哎,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沼本,居然都是意外死亡噩峦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門抽兆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來识补,“玉大人,你說我怎么就攤上這事辫红∑就浚” “怎么了祝辣?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長切油。 經(jīng)常有香客問我蝙斜,道長,這世上最難降的妖魔是什么澎胡? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任孕荠,我火速辦了婚禮,結(jié)果婚禮上攻谁,老公的妹妹穿的比我還像新娘稚伍。我一直安慰自己,他們只是感情好戚宦,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布槐瑞。 她就那樣靜靜地躺著,像睡著了一般阁苞。 火紅的嫁衣襯著肌膚如雪困檩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天那槽,我揣著相機(jī)與錄音悼沿,去河邊找鬼。 笑死骚灸,一個胖子當(dāng)著我的面吹牛糟趾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甚牲,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼义郑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丈钙?” 一聲冷哼從身側(cè)響起非驮,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雏赦,沒想到半個月后劫笙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡星岗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年填大,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俏橘。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡允华,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情靴寂,我是刑警寧澤磷蜀,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站榨汤,受9級特大地震影響蠕搜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜收壕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一妓灌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜜宪,春花似錦虫埂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至澳窑,卻和暖如春斧散,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摊聋。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工鸡捐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人麻裁。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓箍镜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親煎源。 傳聞我的和親對象是個殘疾皇子色迂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

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