[MyCAT]于无声处听惊雷

说到分表分库,现在几乎已经是业内的标准了。
比如阿里的PolarDB-X,腾讯的TDSQL,华为的ddm等。
分表分库的好处是,在不入侵业务的前提下,解决大表导致的性能问题,目前分表分库还或多或少存在一些局限性,导致使用者在一开始就要考虑到这些问题,并进行合理规划。

shardingsphere

之前看过一段时间的shardingsphere,源码包的架构如下:
在这里插入图片描述
看过一些它的源码,源码写的较为层次分明,又合理利用了SPI技术解耦,但是缺点是太过复杂且底层存在很多bug难以简单修复,因为还在大迭代导致源码结构一变再变不太好维护,社区虽活跃但提出问题很难得到正反馈,笔者提过一些问题都被主创团队忽视掉了。

mycat

这个产品是接触过最早的开源的分表分库的组件,活跃于2016年,最近社区几乎死亡,只有偶尔还有一些小的更新,进群需要给钱,问问题也需要给钱,社区生态糟糕。源码包架构如下图所示:
在这里插入图片描述

看了它的部分源码,逻辑较为简单。以解析为例,shardingsphere用了antlr4插件进行构建语法树进行解析,每次sql进来都需要构建语法树,在测试过程中发现极大消耗CPU,而mycat这块的源码如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这就像是普通程序员写的普通逻辑代码:它的解析流程是,跳过无意义的字节,从第一个有意义的字节开始判断这是个什么语句,针对相应类型进入相应实现处理SQL。

于无声处听惊雷

尺有所短,寸有所长。

shardingsphere拥有更好的生态圈,而且现在已经是apache下面的顶级项目,活跃的社区,更好的代码结构决定了它会走的更远,但是由于其结构复杂并不一定便于各家公司掌控,在不使用预编译时有极大性能问题,使用预编译时有较多bug发现;

mycat基本已经宣布死亡,主创团队也已经分崩离析,但是其简单性导致其成为华为等公司二次开发的首选。

辩证的去看,如何结合两者的优势,成为下一步工作的重点。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
它是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的 Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信, 其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。 Mycat 发展到目前的版本,已经不是一个单纯的 MySQL 代理了,它的后端可以支持 MySQL、SQL Server、 Oracle、DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型 NoSQL 方式的存储,未来还会支持更 多类型的存储。而在最终用户看来,无论是那种存储方式,在 Mycat 里,都是一个传统的数据库表,支持标准的 SQL 语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度,在测试阶 段,可以将一个表定义为任何一种 Mycat 支持的存储方式,比如 MySQL 的 MyASIM 表、内存表、或者 MongoDB、LevelDB 以及号称是世界上最快的内存数据库 MemSQL 上。试想一下,用户表存放在 MemSQL 上, 32 大量读频率远超过写频率的数据如订单的快照数据存放于 InnoDB 中,一些日志数据存放于 MongoDB 中,而且 还能把 Oracle 的表跟 MySQL 的表做关联查询,你是否有一种不能呼吸的感觉?而未来,还能通过 Mycat 自动 将一些计算分析后的数据灌入到 Hadoop 中,并能用 Mycat+Storm/Spark Stream 引擎做大规模数据分析,看 到这里,你大概明白了,Mycat 是什么?Mycat 就是 BigSQL,Big Data On SQL Database。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值