MongoDB數(shù)據(jù)庫(kù)設(shè)計(jì)中6條重要的經(jīng)驗(yàn)法則,part 3(每日一譯:2014-07-25)

原文:6 Rules of Thumb for MongoDB Schema Design: Part 3

By William Zola, Lead Technical Support Engineer at MongoDB

這篇文章是系列的最后一篇败明。在第一篇文章里什猖,我介紹了三種針對(duì)“一對(duì)多?”關(guān)系建模的基礎(chǔ)方案。在第二篇文章中彰亥,我介紹了對(duì)基礎(chǔ)方案的擴(kuò)展:雙向關(guān)聯(lián)和反范式化。

反范式可以讓你避免一些應(yīng)用層級(jí)別的join衰齐,但是這也會(huì)讓更新變的更復(fù)雜任斋,開銷更大。不過冗余那些讀取頻率遠(yuǎn)遠(yuǎn)大于更新頻率的字段還是值得的耻涛。

如果你還沒有讀過前兩篇文章废酷,歡迎一覽。

讓我們回顧下這些方案

你可以采取內(nèi)嵌抹缕,或者建立one端或者N端的引用澈蟆,也可以三者兼而有之。

你可以在one端或者N端冗余多個(gè)字段

下面這些是你需要謹(jǐn)記的:

1卓研、優(yōu)先考慮內(nèi)嵌趴俘,除非有什么迫不得已的原因。

2奏赘、需要單獨(dú)訪問一個(gè)對(duì)象寥闪,那這個(gè)對(duì)象就不適合被內(nèi)嵌到其他對(duì)象中。

3磨淌、數(shù)組不應(yīng)該無限制增長(zhǎng)疲憋。如果many端有數(shù)百個(gè)文檔對(duì)象就不要去內(nèi)嵌他們可以采用引用ObjectID的方案;如果有數(shù)千個(gè)文檔對(duì)象梁只,那么就不要內(nèi)嵌ObjectID的數(shù)組缚柳。該采取哪些方案取決于數(shù)組的大小埃脏。

4、不要害怕應(yīng)用層級(jí)別的join:如果索引建的正確并且通過投影條件(第二章提及)限制返回的結(jié)果秋忙,那么應(yīng)用層級(jí)別的join并不會(huì)比關(guān)系數(shù)據(jù)庫(kù)中join開銷大多少彩掐。

5、在進(jìn)行反范式設(shè)計(jì)時(shí)請(qǐng)先確認(rèn)讀寫比灰追。一個(gè)幾乎不更改只是讀取的字段才適合冗余到其他對(duì)象中佩谷。

6、在mongodb中如何對(duì)你的數(shù)據(jù)建模监嗜,取決于你的應(yīng)用程序如何去訪問它們。數(shù)據(jù)的結(jié)構(gòu)要去適應(yīng)你的程序的讀寫場(chǎng)景抡谐。

設(shè)計(jì)指南

當(dāng)你在MongoDB中對(duì)“一對(duì)多”關(guān)系進(jìn)行建模裁奇,你有很多的方案可供選擇,所以你必須很謹(jǐn)慎的去考慮數(shù)據(jù)的結(jié)構(gòu)麦撵。下面這些問題是你必須認(rèn)真思考的:

關(guān)系中集合的規(guī)模有多大:是一對(duì)很少刽肠,很多,還是非常多免胃?

對(duì)于一對(duì)多中”多“的那一端音五,是否需要單獨(dú)的訪問它們,還是說它們只會(huì)在父對(duì)象的上下文中被訪問羔沙。

被冗余的字段的讀寫的比例是多少躺涝?

數(shù)據(jù)建模設(shè)計(jì)指南

在一對(duì)很少的情況下,你可以在父文檔中內(nèi)嵌數(shù)組扼雏。

在一對(duì)很多或者需要單獨(dú)訪問“N”端的數(shù)據(jù)時(shí)坚嗜,你可以采用數(shù)組引用ObjectID的方式。如果可以加速你的訪問也可以在“N”端使用父引用诗充。

在一對(duì)非常多的情況下苍蔬,可以在“N”端使用父引用。

如果你打算在你的設(shè)計(jì)中引入冗余等反范式設(shè)計(jì)蝴蜓,那么你必須確保那些冗余的數(shù)據(jù)讀取的頻率遠(yuǎn)遠(yuǎn)大于更新的頻率碟绑。而且你也不需要很強(qiáng)的一致性。因?yàn)榉捶妒交脑O(shè)計(jì)會(huì)讓你在更新冗余字段時(shí)付出一定的代價(jià)(更慢茎匠,非原子化)

相關(guān)文章:

MongoDB數(shù)據(jù)庫(kù)設(shè)計(jì)中6條重要的經(jīng)驗(yàn)法則格仲,part 1(每日一譯:2014-07-23)

MongoDB數(shù)據(jù)庫(kù)設(shè)計(jì)中6條重要的經(jīng)驗(yàn)法則,part 2(每日一譯:2014-07-24)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诵冒,一起剝皮案震驚了整個(gè)濱河市抓狭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌造烁,老刑警劉巖否过,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件午笛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡苗桂,警方通過查閱死者的電腦和手機(jī)药磺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來煤伟,“玉大人癌佩,你說我怎么就攤上這事”阆牵” “怎么了围辙?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)放案。 經(jīng)常有香客問我姚建,道長(zhǎng),這世上最難降的妖魔是什么吱殉? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任掸冤,我火速辦了婚禮,結(jié)果婚禮上友雳,老公的妹妹穿的比我還像新娘稿湿。我一直安慰自己,他們只是感情好押赊,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布饺藤。 她就那樣靜靜地躺著,像睡著了一般流礁。 火紅的嫁衣襯著肌膚如雪策精。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天崇棠,我揣著相機(jī)與錄音咽袜,去河邊找鬼。 笑死枕稀,一個(gè)胖子當(dāng)著我的面吹牛询刹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播萎坷,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼凹联,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了哆档?” 一聲冷哼從身側(cè)響起蔽挠,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后澳淑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體比原,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年杠巡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了量窘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡氢拥,死狀恐怖蚌铜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嫩海,我是刑警寧澤冬殃,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站叁怪,受9級(jí)特大地震影響审葬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜骂束,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望成箫。 院中可真熱鬧展箱,春花似錦、人聲如沸蹬昌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽皂贩。三九已至栖榨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間明刷,已是汗流浹背婴栽。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辈末,地道東北人愚争。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像挤聘,于是被迫代替她去往敵國(guó)和親轰枝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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