前身是阿里的cobar,MyCat是一個開源的分布式數據庫系統,是一個實現了MySQL協議的服務器,前端用戶可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令行訪問,而其后端可以用MySQL原生協議與多個MySQL服務器通信,也可以用JDBC協議與大多數主流數據庫服務器通信,其核心功能是分表分庫,即將一個大表水平分割為N個小表,存儲在后端MySQL服務器里或者其他數據庫里。 目前雖然傳統關系數據庫存在一些列的先天弊端,但NoSQL數據庫又將其替代,但是如果傳統數據庫易于擴展和分拆就可以極大的避免單機單庫在數據增刪改查方面的缺陷。MyCat就是為了解決數據庫的分拆和擴展而生的開源分布式數據庫系統。其最終的目標就是低成本地將現有的單機數據庫和應用平滑遷移到“云”端,解決數據存儲和業務規模迅速增長情況下的數據瓶頸問題。
成都創新互聯專注于企業成都營銷網站建設、網站重做改版、武川網站定制設計、自適應品牌網站建設、HTML5、商城開發、集團公司官網建設、成都外貿網站建設公司、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為武川等各大城市提供網站開發制作服務。
Mycat和MySQL的區別:
可以把上層看作是對下層的抽象,例如操作系統是對各類計算機硬件的抽象。那么我們什么時候需要抽象?假如只有一種硬件的時候,我們需要開發一個操作系統嗎?
再比如一個項目只需要一個人完成的時候不需要leader,但是當需要幾十人完成時,就應該有一個管理者,發揮溝通協調等作用,而這個管理者對于他的上層來說就是對項目組的抽象。
同樣的,當我們的應用只需要一臺數據庫服務器的時候我們并不需要Mycat,而如果你需要分庫甚至分表,這時候應用要面對很多個數據庫的時候,這個時候就需要對數據庫層做一個抽象,來管理這些數據庫,而最上面的應用只需要面對一個數據庫層的抽象或者說數據庫中間件就好了,這就是Mycat的核心作用。
所以可以這樣理解:數據庫是對底層存儲文件的抽象,而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語句進行數據的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度
cat是怎樣實現分庫分表的?
mycat里面通過定義路由規則來實現分片表(路由規則里面會定義分片字段,以及分片算法)。分片算法有多種,你所說的hash是其中一種,還有取模、按范圍分片等等。在mycat里面,會對所有傳遞的sql語句做路由處理(路由處理的依據就是表是否分片,如果分片,那么需要依據分片字段和對應的分片算法來判斷sql應該傳遞到哪一個、或者哪幾個、又或者全部節點去執行)
2. mycat適用于哪些場景?相對于海量存儲的Nosql的適用場景又如何?
數據量大到單機hold不住,而
實習的時候,在一個項目當中,項目經理要求把原先的MySQL數據連接基于mycat來進行改造 。當時就在想MyCat是什么東西?為什么要用它呢?
*一、什么是MyCat: MyCat是一個開源的分布式數據庫系統,是一個實現了MySQL協議的服務器,前端用戶可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令行訪問,而其后端可以用MySQL原生協議與多個MySQL服務器通信,也可以用JDBC協議與大多數主流數據庫服務器通信,其核心功能是分表分庫,即將一個大表水平分割為N個小表,存儲在后端MySQL服務器里或者其他數據庫里。
MyCat發展到目前的版本,已經不是一個單純的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流數據庫,也支持MongoDB這種新型NoSQL方式的存儲,未來還會支持更多類型的存儲。而在最終用戶看來,無論是那種存儲方式,在MyCat里,都是一個傳統的數據庫表,支持標準的SQL語句進行數據的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度
二、那么為什么要用到MyCat呢?
*例如操作系統是對各類計算機硬件的抽象。那么我們什么時候需要抽象?假如只有一種硬件的時候,我們需要開發一個操作系統嗎? 再比如一個項目只需要一個人完成的時候不需要leader,但是當需要幾十人完成時,就應該有一個管理者,發揮溝通協調等作用,而這個管理者對于他的上層來說就是對項目組的抽象。 同樣的,當我們的應用只需要一臺數據庫服務器的時候我們并不需要Mycat,而如果你需要分庫甚至分表,這時候應用要面對很多個數據庫的時候,這個時候就需要對數據庫層做一個抽象,來管理這些數據庫,而最上面的應用只需要面對一個數據庫層的抽象或者說數據庫中間件就好了,這就是Mycat的核心作用。 所以可以這樣理解:數據庫是對底層存儲文件的抽象,而Mycat是對數據庫的抽象。*
注意事項:
(1)、原始表的自增主鍵{AUTO_INCREMENT=1446}值,就是之前用掉的值,要去掉。新庫按照新的來
(2)、{CREATE TABLE IF NOT EXISTS `edu_impoverish` } 改成 {CREATE TABLE `edu_impoverish` (}。mycat沒有判斷是否存在的功能
(3)、DROP TABLE IF EXISTS `onlinenum`; 這種格式是支持的。
(4)、全局表,字典表:可能會在其他表中存有其id字段的值。所以這些表id也要導過來。
(5)、業務表的id最好也導入過來,避免重新生成導致關聯對不上的情況。
(6)、全局表、跨庫分表都要用全局序列。單庫單業務,不和其他關聯的表;可以用數據庫自帶的自增主鍵。
很多新手在學習java的時候都比較迷茫,不知道從哪里開始學起,這里就給大家整理了一份java開發學習路線,比較系統全面,可參考這份大綱來安排學習計劃,希望可以幫到你~
最新java學習路線:第一階段:java業基礎課程
階段目標:
1、熟練掌握java的開發環境與編程核心知識;
2、熟練運用java面向對象知識進行程序開發;
3、對java的核心對象和組件有深入理解;
4、熟練運用javaAPI相關知識;
5、熟練應用java多線程技術;
6、能綜合運用所學知識完成一個項目。
知識點:
1、基本數據類型,運算符,數組,掌握基本數據類型轉換,運算符,流程控制;
2、數組,排序算法,java常用API,類和對象,了解類與對象,熟悉常用API;
3、面向對象特征,集合框架,熟悉面向對象三大特征,熟練使用集合框架;
4、IO流,多線程;
5、網絡協議,線程運用。
第二階段:javaWEB核心課程
階段目標:
1、熟練掌握數據庫和MySQL核心技術;
2、深入理解JDBC與DAO數據庫操作;
3、熟練運用JSP及Servlet技術完成網站后臺開發;
4、深入理解緩存、連繼池、注解、反射、泛型等知識;
5、能夠運用所學知識完成自定義框架。
知識點:
1、數據庫知識,范式,MySQL配置,命令,建庫建表,數據的增刪改查,約束,視圖,存儲過程,函數,觸發器,事務,游標,建模工具。
2、深入理解數據庫管理系統通用知識及MySQL數據庫的使用與管理。為Java后臺開發打下堅實基礎。Web頁面元素,布局,CSS樣式,盒模型,JavaScript,jQuery。
3、掌握前端開發技術,掌握jQuery。
4、Servlet,EL表達式,會話跟蹤技術,過濾器,FreeMarker。
5、掌握Servlet相關技術,利用Servlet,JSP相關應用技術和DAO完成B/S架構下的應用開發。
6、泛型,反射,注解。
7、掌握JAVA高級應用,利用泛型,注解,枚舉完成自己的CRUD框架開發為后續框架學習做鋪墊。
8、單點登錄,支付功能,項目整合,分頁封裝熟練運用JSP及Servlet核心知識完成項目實戰。
第三階段:JavaEE框架課程
階段目標:
1. 熟練運用Linux操作系統常見命令及完成環境部署和Nginx服務器的配置
2. 熟練運用JavaEE三大核心框架:Spring,SpringMVC,MyBatis
3. 熟練運用Maven,并使用SpringBoot進行快速框架搭建
4. 深入理解框架的實現原理,Java底層技術,企業級應用等
5. 使用Shiro,Ztree和Spring,SpringMVC,Mybaits完成企業項目
知識點:
1、Linux安裝配置,文件目錄操作,VI命令,管理,用戶與權限,環境部署,Struts2概述,hiberante概述。
2、Linux作為一個主流的服務器操作系統,是每一個開發工程師必須掌握的重點技術,并且能夠熟練運用。
3、SSH的整合,MyBatis,SpringMVC,Maven的使用。
4、了解AOP原理,了解中央控制器原理,掌握MyBatis框架,掌握SSM框架的整合。
5、Shiro,Ztree,項目文檔,項目規范,需求分析,原型圖設計,數據庫設計,工程構建,需求評審,配置管理,BUG修復,項目管理等。
6、獨立自主完成一個中小型的企業級綜合項目的設計和整體架構的原型和建模。獨立自主完成一個大型的企業級綜合項目,并具備商業價值。
第四階段:分布式與微服務課程
階段目標:
1.掌握前端框架VUE及Bootstrap的應用開發
2.基于SpringCloud完成微服務架構項目的開發
3.掌握NoSQL數據庫Redis的使用
4.掌握消息隊列RabbitMQ的使用
5.掌握Mycat數據庫中間件的使用
知識點:
1、Bootstrap前端框架、VUE前端框架、RabbitMQ消息隊列。
2、掌握Bootstrap前端框架開發、掌握VUE前端框架開發、掌握RabbitMQ消息隊列的應用、掌握SpringBoot集成RabbitMQ。
3、Redis緩存數據庫的應用、Java基于Redis的應用開發、基于SpringCloud微服務架構開發實戰。
4、掌握NOSQL數據庫Redis的安裝、使用,Redis客戶端的安裝使用,Java訪問操作Redis數據庫,Redis的持久化方案、主從復制、高可用。
5、掌握SpringCloud微服務架構的開發,注冊中心,網關配置,配置中心,微服務間通信及容器化部署。
6、項目文檔,項目規范,需求分析,數據庫設計,工程構建,需求評審,配置管理,BUG修復,項目管理等。
7、掌握數據庫中間件Mycat的應用,基于Mycat實現數據讀寫分離,高可用集群。
8、掌握項目開發的流程,按照項目開發流程完成基于微服務架構項目的需求分析,編碼開發。
PS:溫馨提示,光看不練假把式,跟著視頻教程練項目也是必不可少的!相關教程指路B站尚學堂官方號!都是免費滴!
當前標題:包含mycatnosql的詞條
文章網址:http://m.newbst.com/article8/dsseeip.html
成都網站建設公司_創新互聯,為您提供網站導航、搜索引擎優化、外貿建站、定制開發、關鍵詞優化、云服務器
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯