- 流行中间件
Mycat | sharding-JDBC | dble | tddl | cetus | kingshard | maxscale | proxysql | pgpool | |
后端节点支持 | 多种数据库 | 多种数据库 | mysql | mysql、oracle | mysql | mysql | mysql | mysql | postgresql |
水平拆分 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 | 不支持 |
读写分离、负载均衡 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
元数据管理方式 | xml文件 | yaml文件 | xml文件 | diamond配置中心 | json文件 | 配置文件 | 配置文件 | 配置文件 | 配置文件 |
支持协议 | 向上mysql协议,向下mysql、pg协议、jdbc协议 | jdbc | mysql协议 | jdbc | mysql协议 | mysql协议 | mysql协议 | mysql协议 | pg协议 |
备注 | 基于cobar开发 | 以jar包方式提供服务,严格意义上不等价于中间件 | 基于mycat做了部分功能增强,但是只支持mysql去掉了其他数据库的支持 | 开源版本7年前已不维护 | 读写分离和分库是两个版本。 | 原atlas成员使用Go开发 | mariadb发布的中间件 |
还有一些未开源商用中间件,如:网易DDB、阿里DRDS、京东CDS、平民软件oneproxy等未纳入对比中。
大多数中间件只支持MySQL,仅Mycat与sharding-JDBC后端支持连接多种数据库。
- 重点对比
Mycat | sharding-JDBC | |
开源 | 是 | 是 |
SQL 92标准 | 支持 | 80%的sql |
后端支持的数据库 | MySQL,Oracle,SQLServer,db2和PostgreSQL等支持jdbc的数据库 | 支持MySQL,Oracle,SQLServer和PostgreSQL等支持jdbc的数据库 |
NoSQL数据库 | 支持(mongodb) | 不支持 |
架构 | Proxy形式 | 基于 JDBC 的扩展 |
高可用性 | 支持,主从关系需要在数据库层面配置 | 不支持,主从切换以及主从数据同步为数据库范畴 |
读写分离 | 支持,通过配置文件 | 支持,通过配置文件 |
分库分表 | 支持,通过配置文件 | 支持,通过配置文件 |
分布式事务 | 支持 | 支持 |
扩容 | 支持修改路由规则,但不支持数据重分布 | 支持修改路由规则,但不支持数据重分布 |
子查询 | 不支持复杂子查询 | 不支持 |
分片策略 | 枚举法、固定分片hash算法、范围约定、求模法、日期列分区法、一致性hash等 | 等号、between、in、多分片键/Hash + Mod、Range、Tag |
不足 | Insert into、复杂子查询、3表及以上跨库join等不支持,不适合 OLAP 的场景 | 不适合 OLAP 的场景、不适合事务强一致的要求,仅支持java |
管理配置界面 | 有 | 无 |
支持语言 | Java、python等支持mysql协议的语言 | 仅java |