关系型数据库分库分表中间件之选型

本文介绍了Sharding-JDBC和Mycat这两个常用的关系型数据库分库分表中间件,强调了它们的架构设计、功能特性以及社区支持情况。Sharding-JDBC作为一个加强版的JDBC驱动,无需额外的Proxy,而Mycat则是一个实现了MySQL协议的Server,需要独立部署。两者在功能上都支持分库分表、读写分离,但在性能损耗、代码入侵、社区活跃度和事务处理上存在差异。

写在前面
本文主要介绍关系型数据库分库分表的中间件,主要包含中间件介绍、选项及其对比。虽然市面上很多分库分表中间件,但是大多数都是不友好或者社区活跃度不高的项目,当然还是有很多淘汰的中间件。目前,在实际业务场景中我们绝大多数情况都是选用sharding、mycat,以下文章重点介绍sharding与mycat的对比。

中间件介绍

较多使用
sharding-jdbc(当当)
基于jdbc驱动,不用额外的proxy,支持任意实现JDBC规范的数据库,它使用客户端直连数据库,以jar包形式提供服务,无需额外的部署和依赖。可以理解为加强版的JDBC驱动,兼容JDBC和各类ORM框架。
MyCAT(基于Cobar)
Java语言编写的Mysql数据网络协议开源的中间件,它的前身是Cobar,遵守Mysql原生的协议,跨语言,跨平台,跨数据库的通用中间件代理。Mycat是基于Proxy,它覆写了MySQL协议,将Mycat Server伪装成一个MySQL数据库,它和ShardingShere下的Sharding-proxy作用类似,需要单独的部署。

较少使用
TSharding(蘑菇街)
Atlas(奇虎360)
Cobar(阿里巴巴)
Oceanus(58同城)
Vitess(谷歌)

sharding与mycat选型比较

项目Sharding-JDBCMycat
社区环境
bug修复及时极差
架构设计增强版的 JDBC 驱动实现了 MySQL 协议的 Server。客户端所有的 jdbc 请求都必须要先交给 Mycat,再由 Mycat 转发到具本的真实服务器中。

sharding与mycat功能比较

功能项Sharding-JDBCMycatSharding-ProxySharding-Sidecar
官方网站官方网站官方网站官方网站官方网站
源码地址GitHubGitHubGitHubGitHub
官方文档官方文档Mycat 权威指南官方文档官方文档
开发语言JavaJavaJavaJava
应用语言仅Java任意任意任意
开源协议Apache-2.0GPL-2.0/GPL-3.0Apache-2.0Apache-2.0
数据库任何遵循 SQL92 标准的数据库任何遵循 SQL92 标准的数据库MySQL/PostgreSQLMySQL/PostgreSQL
连接数
代码入侵需要修改代码
性能损耗低损耗略高损耗略高损耗低
无中心化
静态入口
管理控制台Sharding-UIMycat-webSharding-UISharding-UI
分库分表支持单库多表/多库单表支持支持
多租户方案支持
读写分离支持支持支持支持
分片策略定制化支持支持支持支持
分布式主键支持支持支持支持
标准化事务接口支持支持支持支持
XA强一致事务支持支持支持支持
柔性事务支持支持支持
配置动态化支持开发中支持支持
编排治理支持开发中支持支持
数据脱敏支持支持支持
可视化链路追踪支持支持支持
弹性伸缩开发中开发中开发中开发中
多节点操作分页去重排序分组聚合分页去重排序分组聚合分页去重排序分组聚合分页去重排序分组聚合
跨库关联跨库 2 表 JoinER Join基于 caltlet 的多表 Join
IP 白名单支持
SQL 黑名单支持
存储过程支持

参考博文:数据库–分库分表中间件–选型/对比/框架_IT利刃出鞘的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小沈同学呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值