1. 程式人生 > >基於分散式關係型資料庫,實現輕鬆應對百億級資料分析場景解決方案

基於分散式關係型資料庫,實現輕鬆應對百億級資料分析場景解決方案

MyCat是什麼?

從定義和分類來看,它是一個開源的分散式資料庫系統,是一個實現了MySQL協議的伺服器,前端使用者可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令列訪問,而其後端可以用MySQL原生協議與多個MySQL伺服器通訊,也可以用JDBC協議與大多數主流資料庫伺服器通訊,其核心功能是分表分庫讀寫分離,即將一個大表水平分割為N個小表,儲存在後端MySQL伺服器裡或者其他資料庫裡。也可以指定多個寫庫多個讀庫。

MyCat發展到目前的版本,已經不是一個單純的MySQL代理了,它的後端可以支援MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流資料庫,也支援MongoDB這種新型NoSQL方式的儲存,未來還會支援更多型別的儲存。而在終端使用者看來,無論是那種儲存方式,在MyCat裡,都是一個傳統的資料庫表,支援標準的SQL語句進行資料的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度。

MyCat可以幹什麼?

單純的讀寫分離,此時配置最為簡單,支援讀寫分離,主從切換

分表分庫,對於超過 1000 萬的表進行分片,最大支援 1000 億的單表分片

多租戶應用,每個應用一個庫,但應用程式只連線 Mycat,從而不改造程式本身,實現多租戶化

報表系統,藉助於 Mycat 的分表能力,處理大規模報表的統計

替代 Hbase,分析大資料

作為海量資料實時查詢的一種簡單有效方案,比如 100 億條頻繁查詢的記錄需要在 3 秒內查詢出來結果 

MyCat分散式架構設計:

整體思路:

(1)利用mycat的分庫分表規則,將百億級資料橫向分攤到不同的節點上;

(2)每個節點上實現一主多備,實現資料備份與讀寫分離;

(3)所有的寫操作首先會在mycat中根據規則計算,路由到指定的節點上寫操作;

(4)聚合查詢mycat會分攤到各個節點上去計算之後,再基於節點的結果進行彙總處理;

(5)利用NBI大資料視覺化分析工具與Mycat無縫連線;

(6)通過NBI大資料視覺化分析工具提供的拖拽式分析,可以快速完成各類分析報告和百億級資料,秒級響應的使用者體驗。