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