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

写在前面
本文主要介绍关系型数据库分库分表的中间件,主要包含中间件介绍、选项及其对比。虽然市面上很多分库分表中间件,但是大多数都是不友好或者社区活跃度不高的项目,当然还是有很多淘汰的中间件。目前,在实际业务场景中我们绝大多数情况都是选用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-JDBC Mycat
社区环境
bug修复 及时 极差
架构设计 增强版的 JDBC 驱动 实现了 MySQL 协议的 Server。客户端所有的 jdbc 请求都必须要先交给 Mycat,再由 Mycat 转发到具本的真实服务器中。

sharding与mycat功能比较

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

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

猜你喜欢

转载自blog.csdn.net/weixin_39970883/article/details/129030317