菜单

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

2019年9月8日 - 科技杂志
MyCat:开源分布式数据库中间件

图片 1

直到 二零一六 年 11 月,超越300 个类型接纳Mycat,包含银行、邮电通讯、电子唱务、物流、移动使用、 O2O

Mycat原理

MyCat是什么?

二零一六 年 10 月截止,Mycat 项目累计有 16 个 Committer。

图片 2

图1 MyCat架构划虚拟计图

叁个有意思有料的架构师分享平台

上述图片里,Orders表被分成多少个分片datanode(简称dn),那多个分片是布满在两台MySQL
Server上(DataHost),即
datanode=database@datahost形式,由此你能够用一台到N台服务器来分片,分片法规为(sharding
rule)规范的字符串枚举
分片准绳,一个法规的概念是分片字段(sharding column)+分片函数(rule
function),这里的分片字段为prov而分片函数为字
符串枚举方式。
当Mycat收到三个SQL时,会先解析那些SQL,查找涉及到的表,然后看此表的概念,借使有分片法则,则得到到SQL里分片字
段的值,并协作分片函数,获得该SQL对应的分片列表,然后将SQL发往这几个分片去实行,末了采撷和管理全数分片重返的结果
数量,并出口到客商端。以select * 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端的叁回拍卖,那部分的代码也相比复杂,而最复杂的则属八个表的Jion难点,为此,Mycat建议了立异性的E凯雷德分片、全
局表、HBT(Human Brain
Tech)人工智能的Catlet、以及重组Storm/斯Parker引擎等十八般武艺先生的化解办法,进而成为当前产业界
最强劲的方案,那就是开源的技能!

批量插入与ID自增进结合的支撑:

Mycat 官方网站:

 

图片 3

深化遍及式数据库中间件的面包车型客车成效,使之富有充分的插件、壮大的数据库智能优化功用、全面的系统监察和控制技艺、以及方便的多少运营工具,实现在线数据扩大体量、迁移、事物等高档成效。

 转载:

图片 4

(5)更加好地扶助数据库读写分离与高可用性,MyCat帮忙基于MySQL主从复制状态的高级读写分离调节机制(比如Slave_behind_master
<100则开启),而一旦检查评定到骨干同步出错只怕延时超过发展,则自动清除readHost,幸免程序读到非常久的旧数据。

应用场景
Mycat发展到这两天,适用的景色已经很丰富,何况不停有新客商给出新的立异性的方案,以下是多少个标准的采纳场景:
独自的读写分离,此时配备最为轻松,援助读写分离,主从切换
分表分库,对于当先一千万的表张开分片,最大辅助一千亿的单表分片
多租户应用,种种应用贰个库,但应用程序只连接Mycat,进而不改动程序本人,完成多租户化
报表系统,借助于Mycat的分表工夫,管理大面积报表的总计
取代Hbase,深入分析大数目
作为海量数据实时查询的一种简单实用方案,比如100亿条频仍查询的记录须求在3秒内查询出来结果,除了基于主键的查
询,还可能存在范围查询或任何品质查询,此时Mycat恐怕是最简易有效的选取
Mycat短期路径图
强化分布式数据库中间件的上面包车型客车成效,使之具有充分的插件、庞大的数据库智能优化作用、周到的系统监察和控制才能、以及方
便的数码运转为工人身份具,实现在线数据扩大容积、迁移等高等作用
一发挺进大额总括领域,深度整合斯ParkerStream和Storm等分布式实时代洋气引擎,能够不负众望高效的巨表关联、排序、分组
聚焦等
OLAP方向的力量,并集成一些吃香常用的实时深入分析算法,让程序猿以及DBA们更易于用Mycat完结部分高档数据分
析处理效果。
穿梭强化Mycat开源社区的技巧水平,吸引越来越多的IT才能专家,使得Mycat社区成为中华的Apache,并将Mycat推到Apache
基金会,成为国内一流开源项目,最后能够让有个别志愿者成为专职的Mycat开拓者,荣耀跟实力一齐进级。
依托Mycat社区,聚焦玖十多个CXO等第的质地,众筹建设亲亲山庄,Mycat社区+亲亲山庄=中国最大IT
O2O社区

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

从概念和归类来看,它是一个开源的布满式数据库系统,是一个兑现了MySQL公约的服务器,前端客户能够把它看成是叁个数据库代理,用MySQL顾客端工具和命令行访问,而其后端能够用MySQL原生合同与八个MySQL服务器通讯,也得以用JDBC合同与大好些个主流数据库服务器通讯,其主干效能是分表分库读写分离,将在贰个大表水平划分为N个小表,存款和储蓄在后端MySQL服务器里照旧另外数据Curry。也足以钦点多少个写库多少个读库。

Mycat的原理并不复杂,复杂的是代码,纵然代码也不复杂,那么早已产生贰个风传了。
Mycat的规律中最关键的二个动词是“拦截”,它阻挡了顾客发送过来的SQL语句,首先对SQL语句做了有些特定的深入分析:如分
片剖析、路由剖判、读写分离深入分析、缓存分析等,然后将此SQL发将来端的诚实数据库,并将赶回的结果做适度的管理,最终再
回去给客商。

图片 5

Mycat 吸引和聚焦了一大批判行业内部大数量和云总结方面包车型地铁有名程序员,Mycat
的发展庞大基于开源社区义工的屡次用力,感激社区志愿者的卖力让Mycat更狠抓劲,同不经常间大家也接待越来越多的志愿者插足Mycat的费用,一同推动社区的上进,为顺序世界提供越来越好的开源中间件。

图片 6

的众多世界和集团。

4.
透过人工智能的catlet援助跨分片复杂SQL实现以及存款和储蓄进度扶助等。使用方式根本透过MyCat注释的措施来实践,如下:

Mycat是依据开源cobar演化而来,大家对cobar的代码实行了绝望的重构,使用NIO重构了互联网模块,况且优化了Buffer内核,巩固了汇集,Join等主题特色,同一时候包容绝大比比较多数据库成为通用的数据库中间件。1.4
版本之后
完全的淡出基本cobar内核,结合Mycat集群处理、自动扩大容积、智能优化,成为高品质的中间件。咱们从事于付出高质量数据库中间而努力。永免费,永不闭源,持续拉动开源社区的腾飞。

图6 Mycat匡助基于MySQL主从复制状态的高级级读写分离调控机制

(1)跨分片同步查询声明帮助:

图7 Orders被分为多少个分片datanode

注:此情势表示收获MyCat_TEST表的一百个sequence值,比如当前MyCat_TEST表的最大sequence值为陆仟,则通过此措施赶回的是5001,同一时间立异数据库中的MyCat_TEST表的最大sequence值为5100。

积存进度证明帮忙:

1.
接连过多难题,能够透过MyCat统一保管全部的数据源,后端数据库集群对前面贰个应用程序透明。

火上加油布满式数据库中间件的面的功效,使之具备充裕的插件、强大的数据库智能优化职能、周全的系统监察和控制本领、以及便于的数码运行工具,达成在线数据扩大体量、迁移等高档功效。

为啥用Mycat?

跨分片同步查询评释支持:

图片 7

注:近日试行存款和储蓄进程通过MyCat表明的点子进行,注意需求把仓库储存进程中的sql写到注脚中。

关注微信公众号:架构划设想计者 查看更加的多干货

获取批量sequence值的帮忙:

by 落羽成霜

图片 8

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

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图