您当前的位置:网站首页>战舰世界,MyCat:开源分布式数据库中间件,马油

战舰世界,MyCat:开源分布式数据库中间件,马油

2019-04-05 11:17:22 投稿作者:admin 围观人数:220 评论人数:0次
MyCat:开源散布式数据库中间件

为什么需求MyCat?

尽管云核算年代,传统数据库存在着先天性的坏处,可是NoSQLdns服务器数据库又无法将其代替。假如传统数据易于扩展,可切分,就可以避免单机(单库)的功用缺点。

MyCat的方针便是:低成本地将现有的单机数据库和运用滑润搬迁到“云”端,处理数据存储和事务规划迅速增加情况下的数据瓶颈问题。2014年MyCat初次在上海的《中华架构师》大会上对外宣讲引发围观,更多的人参加进来,随后越来越多的项目选用了MyCat。

MyCat到到2015年4月,保存估量现已有超越60个项目在运用,首要运用在电信范畴、互联网项目,大部分是买卖和办理体系,少数是信息体系。比较大的体系中,数据规划单表单月30亿。

MyCa4尺度at是什么?

从界说和分类来看,它是一个开源的散布式数据库体系,是一个完结了MySQL协议的服务器,前端用户可以把它看作是一个数据库署理,用MySQL客户端东西和命令行拜访,而其后端可以用MySQL原生协议与多个MySQL服务器通讯,也可以用JDBC协议与大多数干流数据库服务器通讯,其中心功用是分表分库,行将一个大表水平分割为N个小表,存储猕猴桃怎样吃在后端MySQL服务器里或许其他数据库里。

MyCat开展到现在的版别,现已不是一个单纯的MySQL署理了战舰国际,MyCat:开源散布式数据库中间件,马油,它的后端可以支撑MySQL、SQL Server、Oracle、DB2、PostgreSQL等干流数据库,也支撑MongoDB这种新式NoSQL办法的存储,未来还会支撑更多类型的存储。而在终究用户看来,无k12论是那种存储办法,在MyCat里,都是一个传统的数据库表,支撑规范的SQL句子进行数据的操作,这样一来,对前端事务体系来说,可以大幅下降开发难度,提高开发速度

MyCat:开源散布式数据库中间件

图1 MyCat架构设计图

MyCat处理了哪些问题

1. 衔接过多问题,可以经过MyCat一致办理一切的数据源,后端数据库集群对前端运用程序通明。运用MyCat之前体系结构如图2。

图2 MyCat早前体系架构

MyCat引进衔接复用处理多运用竞赛问题,经过战舰国际,MyCat:开源散布式数据库中间件,马油MyCat改造后,如图3所示。

图3 改造后的MyCat

2. 创始的ER联系分片,处理E-R分片难处理问题,存在相相关系的父子表在数据刺进的进程中,子表会被MyCat路由到其相关父表记载的节点上,然后父子表的Join查询可以下推到各个数据库节点上完结,这是最高效的跨节点Join处理技能,也是MyCat创始。

图4 创始的ER联系分片,是MyCat创始李婷

3. 选用大局分片技能,每个节点同战舰国际,MyCat:开源散布式数据库中间件,马油时并发刺进和更新数据,每个节点都可以读取数据,提高读功用的一起,也处理跨节点Join的功率。

图5 选用大局分片技能

4. 经过人工智能的catlet支撑跨分片杂乱SQL完结以及存储进程支撑等。运用办法首要经过MyCat注释的办法来履行,如下:

(1)跨分片战舰国际,MyCat:开源散布式数据库中间件,马油联合查询注解支撑:

/*!MyCat:catlet=demo.catlets.ShareJoin / select bu. ,sg.* from base_user bu,sam_glucose sg where bu.id_=sg.user_id;

注:sam_glucose是跨分片表。

(2)存储进程注解支撑:

/*!MyCat: sql=select * from base_user where id_=1;*/ CALL proc_test();

注:现在履行存储进程经过MyCat注解的办法履行,留意需求把存储进程中的sql写到注解中。

(3)批量刺进与ID自增加结合的支撑:

/*!MyCat:catlet=demo.catlets.BatchInse哪吒闹海rtSequence */ insert into sam_test(name_) values(‘战舰国际,MyCat:开源散布式数据库中间件,马油t1’),(‘t2’);

注:此办法不需求在sql句子中显现的设置主键字段,程序在后台依据primaryKey装备的主键列,主动生成主键的sequence值并替换原sql中相关的列和值;

(4)获取批量sequence值的支撑:

/*!MyCat:catlet=demo.catlets.BatchGetSe晨quence */SELECT MyCat_get_seq(‘MyCat_TEST’,100);

注:此办法表明获取MyCat_TEST表的100个sequence值,例春联有哪些如当时MyCat_TEST表的最大sequence值为5000,则经过此办法回来的是5001,一起更新南山南歌词数据库中的MyCat_TEST表的最大sequence值为5100。

(5)更好地支撑数据库读写别离与高可用性,MyCat支秦桧持基忽必烈改制于MySQL主从复制状况的高档读写别离操控机制(比方Slave_behind_master <100则敞开),而一旦检测到主从同步犯错或许延时超越开展,则主动扫除readHost,避免程序读到好久的旧数据。

图6 Mycat支撑根据MySQL主从复制状况的高档读写别离操控机制

MyCat技能原理

MyCat技能原理中最重要的一个动词是“阻拦”,它阻拦了用户发送过来的SQL句子,首要对SQL句子做了一些特定的剖析:如分片剖析、路由剖析、读写别离剖析、缓存剖析等,然后将此SQL发往后端的实在数据库,卡罗尔并将回来的成果做恰当的处理,终究再回来给用户。

图7 Orders被分为三个分片datanode

如图7所示,Orders表被分为三个分片datanode(简称dn),这三个分片是散布在两台MySQL Server上(布兰妮DataHost),即datanode=database@datahost办法,因而你可以用一台到N台服务器来分片,分片规矩为(sharding rule)典型的字符串枚举分片规矩,一个规矩的界说是分片字段(sharding column)+分片函数(rule function克霉唑),这儿的分片字段为prov而分片函数为字符串枚举办法。当Mylol新英豪放纵炮手Cat收到一个SQL时,会先解析这个SQL,查宜搜找涉及到的表,然后看此表的界说,假如有分片规矩,则获取到SQL里分片字段的值,并匹配分片函数,得到该SQL对应的分片列表,然后将SQL发往这些分片去履行,最终搜集和处理一切分片上海大学排名回来的成果数据,并输出到客户端。以selec战舰国际,MyCat:开源散布式数据库中间件,马油t * from Orders where prov=?句子为例,查到prov=wuhan,依照分片函数,wuhan回来dn1,所以SQL就发给了MySQL1,去取DB1上的查询成果,并回来给用户。假如上述SQL改为select * from Orders where prov in (‘wuhan’,‘beijing’),那么,SQL就会发给MySQL1与MySQL2去履行,然后成果集兼并后输出给用户。但一般事务中咱们的SQL会有Order By以及Limit翻页语战舰国际,MyCat:开源散布式数据库中间件,马油法,此刻就涉及到结广西旅行果集在MyCat端的二次处理,这部分的代码也比较杂乱,而最杂乱的则属两个表的Jion问题,为此,MyCat提出了立异性的ER分片、大局表、HBT(Human Brain Tech)人工智能的Cat蒙城天气预报let等。

MyCat下一步规划

强化散布式数据库中间件的面的功用,使之具有丰厚的插件、强壮的数据库智能优化功用、全面的体系监控才能、以及便利的数据运维东西,完结在线数据扩容、搬迁等高档功用。

进一步前进大数据核算范畴,深度结合Spark Stream和Storm等散布式实时流引擎,可以完结快速的巨表相关、排序、分组聚合等OLAP方向的才能,并集成一些抢手常用的实时剖析算法,让工程师以及DBA们更容易用MyCat完结一些高档数据剖析处理功用。

the end
SIM卡别了,无卡更自由,手机发展