導(dǎo)讀
日前,某電商用戶由于業(yè)務(wù)發(fā)展迅猛,訪問(wèn)量極速增長(zhǎng),導(dǎo)致數(shù)據(jù)庫(kù)容量及性能遭遇瓶頸。為降低數(shù)據(jù)庫(kù)大小,提升性能,用戶決定對(duì)架構(gòu)進(jìn)行垂直拆分。根據(jù)不同的表來(lái)進(jìn)行拆分,對(duì)應(yīng)用程序的影響也更小,拆分規(guī)則也會(huì)比較簡(jiǎn)單清晰。
該用戶按照會(huì)員、商品、訂單,將數(shù)據(jù)垂直拆分至三個(gè)數(shù)據(jù)庫(kù),分庫(kù)后數(shù)據(jù)分布到不同的數(shù)據(jù)庫(kù)實(shí)例,以達(dá)到降低數(shù)據(jù)量,增加實(shí)例數(shù)的擴(kuò)容目的。然而前途是美好的,道路是曲折的。
一旦涉及拆分,就逃不開(kāi)“原本在同一數(shù)據(jù)庫(kù)里的查詢,要變成跨兩個(gè)數(shù)據(jù)庫(kù)實(shí)例”的查詢問(wèn)題。
單庫(kù)時(shí),系統(tǒng)中很多列表和詳情頁(yè)所需數(shù)據(jù)可以簡(jiǎn)單通過(guò)SQL
join關(guān)聯(lián)表查詢;而拆庫(kù)后,拆分后的數(shù)據(jù)可能分布在不同的節(jié)點(diǎn)/實(shí)例上,不能跨庫(kù)使用join,此時(shí)join帶來(lái)的問(wèn)題就很棘手了。
例如:業(yè)務(wù)中需要展示某個(gè)品類商品的售賣(mài)訂單量,現(xiàn)在訂單數(shù)據(jù)和商品數(shù)據(jù)分布在兩個(gè)獨(dú)立的數(shù)據(jù)庫(kù)實(shí)
熱門(mén)工具 換一換
