1 mycat介绍
中间件:代理;
面向企业的开源的大的数据库集群,性能极高;淘宝正在使用;
1.1 数据库中间件历史:
amoeba:变形虫
缺点:分布式高可用结构不稳定
cobar:mycat前身
缺点:cobar容易出现后端物理服务器的假死现象
2 数据库中间件的原理
3 mycat特点:
1 )高性能的读写分离
2 )100亿级别的大表水平分片,集群并行计算
3 )整合多种数据源的输入和输出
4 mycat核心组件
4.1 逻辑库
逻辑库(对应物理库):mycat中间提供客户端传入sql,拦截sql根据配置解析翻译要到物理库执行的真正sql语句;客户端在链接mycat之后可以操作数据库语句,表格语句等等;客户端在连接mycat看到的数据库叫做逻辑库(并不是真正的数据库,数据可以来源一个物理库,也可以来源于多个物理库);
逻辑库在mycat中需要使用<shema>标签完成配置,在shcema.xml文件中配置
4.2 逻辑表
4.2.1 分片表
表格的整体数据量过大时,mycat将会使用多个物理库中的真实表格对应做逻辑分片表的数据分片存储,这种表格在mycat叫做分片表;
应用场景:数据量非常大,可以使用分片表;
4.2.2 非分片表
数据存储时,整体数据量不够海量,不足够大时,可以使用非分片表存储,相对来讲,非分片表比分片表配置相对简单;
4.2.3 全局表
企业中一些工具表格,字典表,他们的共同特点是:数据变动稳定,数据量不大(10万),这种表格需要和业务表做非常多的关联查询,为了底层数据查询时不做过多的夸库操作,global全局表示为每个物理库中都复制一份
工具表,字典表:
业务的很多逻辑,都不是用字符串表示的
通信成功:200状态码
通信异常:500
通信失败:400
数字代表特殊含义的情况,可以记录在数据库中某个工具表或者字典表中;
4.2.4 ER表
mycat独有:
分片表的一种特殊情况,多个分片表有关系的时候,经常做关联查询,如果多个分片表格中相关的数据,但是切分到的存储物理库不同,会导致关联查询/相关数据查询时造成底层的非常大量的夸库操作;
以订单和订单商品为例,一旦分片表格设置完成,很有可能2个表格相关的数据被切分到了不同的物理库,相关数据查询时,mycat底层夸库操作非常多,造成查询的效率非常低下;mycat就全球第一次提出ER表的概念;
ER表根据相关内容的设定主表(t_order)使用table标签配置,从表不能使用纯粹的分片表格设置,需要在table下指定(childtable),根据主表的切分逻辑完成从表的切分;