介绍
数据库分库分表中间件,常用的就是mycat和shardingsphere了,两者都是国人开源产品中的佼佼者。两者的定位也是不一样的,一个本地拦截处理(sharding-jdbc),一个是服务器端拦截处理(mycat)
个人理解
Mycat
MyCat 属于服务器端的数据库中间件,可以通过代码直连数据库,通过改写SQL分发,以保证数据的安全。它是基于Proxy,它复写了MyCat协议,将MyCat server伪装成一个 MyCat 数据库。它的这种操作,就会导致它的效率偏低,损耗略高。不过,无须修改代码,很方便!
ShardingSphere
首先,ShardingSphere是一个生态圈,主要是由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar这 3 款相互独立,却又能够混合部署配合使用的产品组成。它是一个本地数据库中间件框架,是以jar的形式,在本地应用层重写的jdbc原生的方法,实现数据库分片形式,主要是基于AOP原理,在webapp本地进行sql的拦截,解析,改写,路由和结果归集处理。效率高,可是使用Sharding-jdbc时需要修改代码,对应用入侵性比较强。
对比图
总结一下
mycat的生态还并不是很完善,很多内容都在开发中,而ShardingSphere相对就更加完善了,有人看好mycat的前景,但是也不得不为眼前考虑,不得已选择了ShardingSphere。ShardingSphere的社区活跃还是蛮高的,有问题可以询问。
此外,mycat的跨语言,跨平台,跨数据库的能力,不得不让人眼前一亮。而Sharding-JDBC只应用了Java语言。同时,ShardingSphere作为组件存在,需要集成在应用内,意味着作为使用方,必须要集成到代码里,使得开发成本相对较高。
ShardingSphere 是多接入端共同组成的生态圈。 通过混合使用 Sharding-JDBC 和 Sharding-Proxy,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统。