軟件系統(tǒng)數(shù)據(jù)庫的分庫分表設(shè)計(jì)
系統(tǒng)讀寫分離、分庫分表技術(shù)實(shí)現(xiàn)采用MyCat中間件,MyCat 是一款開源(遵循 Apache License 2.0 協(xié)議)的大數(shù)據(jù)庫集群中間件,用于搭建數(shù)據(jù)庫的分布式集群,實(shí)現(xiàn)分庫分表功能,解決數(shù)據(jù)庫中海量數(shù)據(jù)存儲(chǔ)和查詢性能的問題。MyCat 還是一個(gè)數(shù)據(jù)庫的集群中間件,主要實(shí)現(xiàn) RDBMS 數(shù)據(jù)庫集群的故障轉(zhuǎn)移、負(fù)載均衡、讀寫分離等功能。
MyCat 的關(guān)鍵技術(shù)是分庫分表,它通過將數(shù)據(jù)庫中物理表中的數(shù)據(jù)切分成多個(gè)表分片,并將表分片存儲(chǔ)在多個(gè)數(shù)據(jù)庫節(jié)點(diǎn)上,從而構(gòu)建分布式存儲(chǔ)架構(gòu),提升巨表關(guān)聯(lián)、排序、分組聚合等 OLAP 的能力。
分庫分表的工作原理:攔截客戶端提交的SQL語句并進(jìn)行分析(如:分片分析、路由分析、讀寫分離分析、緩存分析等),然后將此SQL發(fā)往后端的真實(shí)數(shù)據(jù)庫,并將返回的結(jié)果處理(如:數(shù)據(jù)合并)后再返回給客戶端。如下圖:
分庫分表單規(guī)則匹配1
分庫分表單規(guī)則匹配2
MyCat 還是一個(gè)位于數(shù)據(jù)庫和客戶端之間,主要實(shí)現(xiàn)讀寫分離功能的集群中間件。主要解決在業(yè)務(wù)系統(tǒng)存在大量的讀并發(fā)時(shí),通過負(fù)載均衡提高查詢請(qǐng)求吞吐量,并將多個(gè)數(shù)據(jù)庫節(jié)點(diǎn)集群化管理,在多主集群中單點(diǎn)數(shù)據(jù)庫故障時(shí)候選主節(jié)點(diǎn)切換。
圖90MyCat數(shù)據(jù)庫集群
MyCat組件適用于的場(chǎng)景如下:
1)適用于 MySQL 、Oracle等主流數(shù)據(jù)庫集群的讀寫分離、候選主節(jié)點(diǎn)切換、負(fù)載均衡等高可用模式;
2)適用于 MySQL 、Oracle等主流數(shù)據(jù)庫集群的分表分庫,對(duì)于單表數(shù)據(jù)超過1000 萬的物理表進(jìn)行分片,最大支持1000億數(shù)據(jù)的單表分片;
3)適用于多租戶應(yīng)用,通過分庫分表實(shí)現(xiàn)應(yīng)用數(shù)據(jù)按照租戶劃分物理數(shù)據(jù)庫存儲(chǔ)。從租戶的角度來看,個(gè)人應(yīng)用的數(shù)據(jù)集約存儲(chǔ)在獨(dú)立的空間,從應(yīng)用角度看,分布式數(shù)據(jù)庫有利于海量數(shù)據(jù)的分析和查詢;
4)適用于海量數(shù)據(jù)的統(tǒng)計(jì)、分析、研判等 OLAP 能力的支撐數(shù)據(jù)庫,分庫分表能夠快速完成巨表關(guān)聯(lián)、排序、分組聚合等數(shù)據(jù)計(jì)算功能;
5) 適用于海量數(shù)據(jù)的實(shí)時(shí)查詢,如:百億數(shù)據(jù)頻繁查詢的記錄需要在3秒內(nèi)反饋結(jié)果,包括主鍵查詢、范圍查詢或其他屬性查詢的情況;
?數(shù)據(jù)庫集群部署拓?fù)鋱D
審核編輯 黃宇
-
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3794瀏覽量
64360 -
軟件系統(tǒng)
+關(guān)注
關(guān)注
0文章
62瀏覽量
9501
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論