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