数据库中间件MyCat

MyCat是什么

数据库分库分表中间件。
详细参考mycat官网链接

分库分表无中间件模式

数据库中间件MyCat - 图1
在每个应用程序模块中配置管理自己需要的一个(或者多个)数据源,直接访问各个数据库,在模块内完成数据的整合;
优点:
相对简单,无性能损耗。
缺点:
不够通用,数据库连接的处理复杂,对业务不够透明,处理复杂

分库分表中间件Mycat模式

数据库中间件MyCat - 图2
通过中间代理层(Mycat)来统一管理所有的数据源,后端数据库集群对前端应用程序透明;
优点:
通用,对应用透明,改造少
缺点:
实现难度大,有二次转发性能损失。单机损失30% 左右

mycat中间件运行原理

数据库中间件MyCat - 图3

  1. application提交sql后, 经过sql解析, 优化, 路由, 解析为对应的sql指令, 交给具体的sql机器执行
  2. 各节点的计算结果进行结果集合并
  3. manager负责master的集群管理, 内存管理等

Mycat技术特点

  • 遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理
  • 基于心跳的自动故障切换,支持读写分离,支持MySQL一双主多从,以及一主多从
  • 有效管理数据源连接,基于数据分库,而不是分表的模式
  • 基于Nio实现,有效管理线程,高并发问题
  • 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数
  • 支持2表join,甚至基于caltlet的多表join
  • 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询
  • 支持多租户方案。-支持分布式事务(弱xa)
  • 支持全局序列号,解决分布式下的主键生成问题
  • 分片规则丰富,插件化开发,易于扩展
  • 强大的web,命令行监控
  • 支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server、mongodb、巨杉
  • 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)