开源数据库中间件对比

  • 流行中间件
 Mycatsharding-JDBCdbletddlcetuskingshardmaxscaleproxysqlpgpool
后端节点支持多种数据库多种数据库mysqlmysql、oraclemysqlmysqlmysqlmysqlpostgresql
水平拆分支持支持支持支持支持支持不支持不支持不支持
读写分离、负载均衡支持支持支持支持支持支持支持支持支持
元数据管理方式xml文件yaml文件xml文件diamond配置中心json文件配置文件配置文件配置文件配置文件
支持协议向上mysql协议,向下mysql、pg协议、jdbc协议jdbcmysql协议jdbcmysql协议mysql协议mysql协议mysql协议pg协议
备注基于cobar开发以jar包方式提供服务,严格意义上不等价于中间件基于mycat做了部分功能增强,但是只支持mysql去掉了其他数据库的支持开源版本7年前已不维护读写分离和分库是两个版本。原atlas成员使用Go开发mariadb发布的中间件  

还有一些未开源商用中间件,如:网易DDB、阿里DRDS、京东CDS、平民软件oneproxy等未纳入对比中。

大多数中间件只支持MySQL,仅Mycat与sharding-JDBC后端支持连接多种数据库。

  • 重点对比
 Mycatsharding-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