Mycat总结

Mycat是一款基于Cobar发展起来的分布式数据库中间件,支持多种数据库,提供SQL92标准、分布式事务、读写分离、故障切换等功能。它适用于大型数据的分库分表、多租户场景,并且拥有丰富的分片规则和监控管理工具。Mycat 2.x规划包括完全分布式事务、可视化配置和监控、自动扩容等特性,使其在大数据处理和分布式系统中表现出色。
摘要由CSDN通过智能技术生成

mycat简介

基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。

MYCAT背后有一支强大的技术团队,其参与者都是5年以上资深软件工程师、架构师、DBA等,优秀的技术团队保证了MYCAT的产品质量。

MYCAT并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设

最新可下载的release版本是1.6-RELEASE
未来规划(mycat2.x)
* 完全实现分布式事务,完全的支持分布式。
* 通过Mycat web(eye)完成可视化配置,及智能监控,自动运维。
* 通过mysql 本地节点,完整的解决数据扩容难度,实现自动扩容机制,解决扩容难点。
* 支持基于zookeeper的主从切换及Mycat集群化管理。
* 通过Mycat Balance 替代第三方的Haproxy,LVS等第三方高可用,完整的兼容Mycat集群节点的动态上下线。
* 接入Spark等第三方工具,解决数据分析及大数据聚合的业务场景。
* 通过Mycat智能优化,分析分片热点,提供合理的分片建议,索引建议,及数据切分实时业务建议

关键特性

  • 支持SQL92标准
  • 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
  • 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
  • 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
  • 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
  • 基于Nio实现,有效管理线程,解决高并发问题。
  • 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。
  • 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
  • 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
  • 支持多租户方案。
  • 支持分布式事务(弱xa)。
  • 支持XA分布式事务(1.6.5)。
  • 支持全局序列号,解决分布式下的主键生成问题。
  • 分片规则丰富,插件化开发,易于扩展。
  • 强大的web,命令行监控。
  • 支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
  • 支持密码加密
  • 支持服务降级
  • 支持IP白名单
  • 支持SQL黑名单、sql注入攻击拦截
  • 支持prepare预编译指令(1.6)
  • 支持非堆内存(Direct Memory)聚合计算(1.6)
  • 支持PostgreSQL的native协议(1.6)
  • 支持mysql和oracle存储过程,out参数、多结果集返回(1.6)
  • 支持zookeeper协调主从切换、zk序列、配置zk化(1.6)
  • 支持库内分表(1.6)
  • 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

适用场景

  • 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换
  • 分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片
  • 多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化
  • 报表系统,借助于Mycat的分表能力,处理大规模报表的统计
  • 替代Hbase,分析大数据
  • 作为海量数据实时查询的一种简单有效方案,比如100亿条频繁查询的记录需要在3秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择

案例

这里写图片描述

竞品对比

属性 Mycat Sharding-jdbc
所属公司 基于阿里Cobar二次开发,社区维护 当当
活跃度 社区活跃度很高,一些公司已在使用 未找到相关社区、Q群
资料 资料多,github、官网、Q群、书籍 资料少,github、官网
数据库支持 Oracle、 SQL Server、 Mysql、PG,DB2、mongodb 任意
ORM支持 任意 任意
事务 完全支持 XA 分布式强事务 自带弱XA,最大努力送达型柔性事务
读写分离 支持 支持
分库 支持 支持
分表 支持 支持
开发 开发成本小,代码入侵极小 开发成本高,代码入侵大
运维 维护成本高 维护成本低
监控
限制 SQL语句限制 部分JDBC方法不支持、SQL语句限制

mycat入门

核心概念
  1. 逻辑库(schema)
    在云计算时代,数据库中间件可以当做一个或多个数据库集群构成的逻辑库
  2. 逻辑表(table)
    在分布式数据库中,对于应用来说,读写数据的表就是逻辑表.
    1. 分片表
      分片表是将数据量很大的表切分到多个数据库实例中
    2. 非分片表
      并非所有表在数据量很大时都需要进行分片,某些表可以不用分片
    3. ER表
      关系型数据库是基于实体关系模型的,Mycat中的ER表便来源于此,Mycat提出了基于E-R关系的数据分片策略,子表的记录与其所关联的父表的记录存放在同一个数据分片上,即字表依赖于父表,通过表分组保证数据关联查询不会垮库操作.
    4. 全局表
      在一个真实的业务场景中往往存在大量类似的字典表,这些字典表中的数据变动不频繁,而且数据规模不大,很少超过数十万条的记录,全局表会保证所有分片都复制一份相同的数据.
  3. 分片节点
    将数据切分后,一个大表被分到不同的分片数据库上,每个分片所在的数据库就是分片节点
  4. 节点主机
    将数据切分后,每个分片节点不一定会独占一台机器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值