System Design 關(guān)系型數(shù)據(jù)庫的擴(kuò)展 - 學(xué)習(xí)筆記

引用:
系統(tǒng)設(shè)計入門

主從復(fù)制

主從復(fù)制

主庫同時負(fù)責(zé)讀取和寫入操作缸逃,并復(fù)制寫入到一個或多個從庫中督禽,從庫只負(fù)責(zé)讀操作讲婚。
樹狀形式的從庫再將寫入復(fù)制到更多的從庫中去。如果主庫離線待德,系統(tǒng)可以以只讀模式運(yùn)行君丁,直到某個從庫被提升為主庫或有新的主庫出現(xiàn)。

缺點(diǎn):

  • 將從庫提升為主庫需要額外的邏輯将宪。

主主復(fù)制

主主復(fù)制

兩個主庫都負(fù)責(zé)讀操作和寫操作绘闷,寫入操作時互相協(xié)調(diào)橡庞。如果其中一個主庫掛機(jī),系統(tǒng)可以繼續(xù)讀取和寫入印蔗。

缺點(diǎn):

  • 你需要添加負(fù)載均衡器或者在應(yīng)用邏輯中做改動扒最,來確定寫入哪一個數(shù)據(jù)庫。
  • 多數(shù)主-主系統(tǒng)要么不能保證一致性(違反 ACID)华嘹,要么因?yàn)橥疆a(chǎn)生了寫入延遲吧趣。
  • 隨著更多寫入節(jié)點(diǎn)的加入和延遲的提高,如何解決沖突顯得越發(fā)重要耙厚。

主從復(fù)制和主主復(fù)制共同的問題

  • 如果主庫在將新寫入的數(shù)據(jù)復(fù)制到其他節(jié)點(diǎn)前掛掉强挫,則有數(shù)據(jù)丟失的可能。
  • 副本可能因?yàn)檫^多寫操作阻塞住颜曾,導(dǎo)致讀取功能異常纠拔。
  • 讀取從庫越多,需要復(fù)制的寫入數(shù)據(jù)就越多泛豪,導(dǎo)致更嚴(yán)重的復(fù)制延遲。
  • 在某些數(shù)據(jù)庫系統(tǒng)中侦鹏,寫入主庫的操作可以用多個線程并行寫入诡曙,但讀取副本只支持單線程順序地寫入。
  • 復(fù)制意味著更多的硬件和額外的復(fù)雜度略水。

聯(lián)合

聯(lián)合(或按功能劃分)將數(shù)據(jù)庫按對應(yīng)功能分割价卤。
例如,你可以有三個數(shù)據(jù)庫:論壇渊涝、用戶和產(chǎn)品慎璧,而不僅是一個單體數(shù)據(jù)庫,從而減少每個數(shù)據(jù)庫的讀取和寫入流量跨释,減少復(fù)制延遲胸私。
較小的數(shù)據(jù)庫意味著更多適合放入內(nèi)存的數(shù)據(jù),進(jìn)而意味著更高的緩存命中幾率鳖谈。沒有只能串行寫入的中心化主庫岁疼,你可以并行寫入,提高負(fù)載能力缆娃。

缺點(diǎn):

  • 如果你的數(shù)據(jù)庫模式需要大量的功能和數(shù)據(jù)表捷绒,聯(lián)合的效率并不好。
  • 你需要更新應(yīng)用程序的邏輯來確定要讀取和寫入哪個數(shù)據(jù)庫贯要。
  • 從兩個庫聯(lián)結(jié)數(shù)據(jù)更復(fù)雜暖侨。
  • 聯(lián)合需要更多的硬件和額外的復(fù)雜度。

分片

分片

分片將數(shù)據(jù)分配在不同的數(shù)據(jù)庫上崇渗,使得每個數(shù)據(jù)庫僅管理整個數(shù)據(jù)集的一個子集字逗。
以用戶數(shù)據(jù)庫為例函荣,隨著用戶數(shù)量的增加,越來越多的分片會被添加到集群中扳肛。

類似聯(lián)合的優(yōu)點(diǎn)傻挂,分片可以減少讀取和寫入流量,減少復(fù)制并提高緩存命中率挖息。也減少了索引金拒,通常意味著查詢更快,性能更好套腹。如果一個分片出問題绪抛,其他的仍能運(yùn)行,你可以使用某種形式的冗余來防止數(shù)據(jù)丟失电禀。類似聯(lián)合幢码,沒有只能串行寫入的中心化主庫,你可以并行寫入尖飞,提高負(fù)載能力症副。

常見的做法是用戶姓氏的首字母或者用戶的地理位置來分隔用戶表。

缺點(diǎn):

  • 你需要修改應(yīng)用程序的邏輯來實(shí)現(xiàn)分片政基,這會帶來復(fù)雜的 SQL 查詢贞铣。
  • 分片不合理可能導(dǎo)致數(shù)據(jù)負(fù)載不均衡。例如沮明,被頻繁訪問的用戶數(shù)據(jù)會導(dǎo)致其所在分片的負(fù)載相對其他分片高辕坝。
  • 再平衡會引入額外的復(fù)雜度〖鼋。基于一致性哈希的分片算法可以減少這種情況酱畅。
  • 聯(lián)結(jié)多個分片的數(shù)據(jù)操作更復(fù)雜。
  • 分片需要更多的硬件和額外的復(fù)雜度江场。

非規(guī)范化

非規(guī)范化試圖以寫入性能為代價來換取讀取性能纺酸。在多個表中冗余數(shù)據(jù)副本,以避免高成本的聯(lián)結(jié)操作扛稽。

在多數(shù)系統(tǒng)中吁峻,讀取操作的頻率遠(yuǎn)高于寫入操作,比例可達(dá)到 100:1在张,甚至 1000:1用含。需要復(fù)雜的數(shù)據(jù)庫聯(lián)結(jié)的讀取操作成本非常高,在磁盤操作上消耗了大量時間帮匾。

參見 細(xì)聊冗余表數(shù)據(jù)一致性 學(xué)習(xí)筆記

SQL調(diào)優(yōu)

參見 MySQL 性能優(yōu)化學(xué)習(xí)筆記
參見 MySQL 索引學(xué)習(xí)筆記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啄骇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瘟斜,更是在濱河造成了極大的恐慌谣殊,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腥椒,死亡現(xiàn)場離奇詭異,居然都是意外死亡橡类,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門芽唇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來顾画,“玉大人,你說我怎么就攤上這事匆笤⊙新拢” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵炮捧,是天一觀的道長庶诡。 經(jīng)常有香客問我,道長咆课,這世上最難降的妖魔是什么末誓? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮傀蚌,結(jié)果婚禮上基显,老公的妹妹穿的比我還像新娘。我一直安慰自己善炫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布库继。 她就那樣靜靜地躺著箩艺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宪萄。 梳的紋絲不亂的頭發(fā)上艺谆,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音拜英,去河邊找鬼静汤。 笑死,一個胖子當(dāng)著我的面吹牛居凶,可吹牛的內(nèi)容都是我干的虫给。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼侠碧,長吁一口氣:“原來是場噩夢啊……” “哼抹估!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弄兜,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤药蜻,失蹤者是張志新(化名)和其女友劉穎瓷式,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體语泽,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贸典,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了踱卵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廊驼。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖颊埃,靈堂內(nèi)的尸體忽然破棺而出蔬充,到底是詐尸還是另有隱情,我是刑警寧澤班利,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布饥漫,位于F島的核電站,受9級特大地震影響罗标,放射性物質(zhì)發(fā)生泄漏庸队。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一闯割、第九天 我趴在偏房一處隱蔽的房頂上張望彻消。 院中可真熱鬧,春花似錦宙拉、人聲如沸宾尚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽煌贴。三九已至,卻和暖如春锥忿,著一層夾襖步出監(jiān)牢的瞬間牛郑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工敬鬓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淹朋,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓钉答,卻偏偏與公主長得像础芍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子希痴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

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