為什么用mycat

Leader-us,云計算和分布式架構領域專家,擁有超過15年的軟件研發經驗,精通Java編程,專注于電信軟件和云計算方面方面的軟件研發,參與過眾多分布式與云計算相關的大型項目的架構設計和Coding,具備豐富的大型項目架構設計經驗,是業界少有的具備很強Coding能力的S級資深架構師,曾經選拔和培養了大批優秀 Java工程師和架構師,Zeroc Ice唯一的紙質書《Zeroc Ice權威指南》的作者,《Kubernetes權威指南》的作者之一,國內知名的開源分布式數據庫中間件MyCAT的發起人

雖然云計算時代,傳統數據庫存在著先天性的弊端,但是NoSQL數據庫又無法將其替代。如果傳統數據易于擴展,可切分,就可以避免單機(單庫)的性能缺陷。
MyCat的目標就是:低成本地將現有的單機數據庫和應用平滑遷移到“云”端,解決數據存儲和業務規模迅速增長情況下的數據瓶頸問題。2014年MyCat首次在上海的《中華架構師》大會上對外宣講引發圍觀,更多的人參與進來,隨后越來越多的項目采用了MyCat。
MyCat截至到2015年4月,保守估計已經有超過60個項目在使用,主要應用在電信領域、互聯網項目,大部分是交易和管理系統,少量是信息系統。比較大的系統中,數據規模單表單月30億。
MyCat****是什么?
從定義和分類來看,它是一個開源的分布式數據庫系統,是一個實現了MySQL協議的服務器,前端用戶可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令行訪問,而其后端可以用MySQL原生協議與多個MySQL服務器通信,也可以用JDBC協議與大多數主流數據庫服務器通信,其核心功能是分表分庫,即將一個大表水平分割為N個小表,存儲在后端MySQL服務器里或者其他數據庫里。
MyCat發展到目前的版本,已經不是一個單純的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流數據庫,也支持MongoDB這種新型NoSQL方式的存儲,未來還會支持更多類型的存儲。而在最終用戶看來,無論是那種存儲方式,在MyCat里,都是一個傳統的數據庫表,支持標準的SQL語句進行數據的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度


圖1 MyCat架構設計圖
MyCat****解決了哪些問題
1. 連接過多問題,可以通過MyCat統一管理所有的數據源,后端數據庫集群對前端應用程序透明。使用MyCat之前系統結構如圖2。

圖2 MyCat早前系統架構
MyCat引入連接復用解決多應用競爭問題,通過MyCat改造后,如圖3所示。

圖3 改造后的MyCat
2. 獨創的ER關系分片,解決E-R分片難處理問題,存在關聯關系的父子表在數據插入的過程中,子表會被MyCat路由到其相關父表記錄的節點上,從而父子表的Join查詢可以下推到各個數據庫節點上完成,這是最高效的跨節點Join處理技術,也是MyCat首創。

圖4 獨創的ER關系分片,是MyCat首創
3. 采用全局分片技術,每個節點同時并發插入和更新數據,每個節點都可以讀取數據,提升讀性能的同時,也解決跨節點Join的效率。

圖5 采用全局分片技術

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,076評論 25 708
  • //我所經歷的大數據平臺發展史(三):互聯網時代 ? 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃囈語閱讀 51,295評論 10 200
  • 無名小島上有個破木屋,一對中年夫妻常年住著。自釀酒、小菜園以及門口一簇花叢。飄著濃霧的清晨,很重的濕氣讓人打冷戰。...
    皮特序閱讀 163評論 1 2
  • 梨花碎語,瓦楞溝渠,天淡銀風墜地。 鱗次櫛比,昨葉紛堆砌。 大抵孤寒難息,都應是,飛花舞雩。 畫雙鯢,一半非魚,一...
    靜水樓臺閱讀 501評論 0 1
  • 一場交響音樂會分為五個樂組。 交響樂隊是音樂王國里的器樂大家族,一般來說它分為五個器樂組:弦樂組、木管組、銅管組、...
    尋覓一路閱讀 1,030評論 0 0