中间件名称 | 介绍 | 优点 | 缺点 |
---|---|---|---|
sharding-JDBC | 当当应用框架ddframe中,从关系型数据库模块dd-rdb中分离出来的数据库水平分片框架,实现透明化数据库分库分表访问 | (1)旧代码迁移成本几乎为零 (2)可适用于任何基于Java的ORM框架,如JPA、Hibernate、Mybatis、Spring JDBC Template或直接使用JDBC。 (3)可基于任何第三方的数据库连接池,如DBCP、C3P0、 BoneCP、Druid等。 (4)适用于任何基于Java的ORM框架,如: Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。 |
(1)理论上可支持任意实现JDBC规范的数据库。虽然目前仅支持MySQL,但已有支持Oracle、SQLServer等数据库的计划 |
DBProxy | 美团点评DBA团队针对公司内部需求,在奇虎360公司开源的Atlas做了很多改进工作,形成了新的高可靠、高可用企业级数据库中间件 | 其特性主要有:读写分离、负载均衡、支持分表、IP过滤、sql语句黑名单、DBA平滑下线DB、从库流量配置、动态加载配置项 | |
Atlas | 不能实现分布式分表,所有的字表必须在同一台DB的同一个DataBase里且所有的字表必须实现建好,Altas没有自动建表的功能。 | ||
TDDL | TDDL并非独立的中间件,只能算作中间层,处于业务层和JDBC层中间,是以Jar包方式提供给应用调用,属于JDBC Shard的思想。 | TDDL复杂度相对较高。当前公布的文档较少,只开源动态数据源,分表分库部分还未开源,还需要依赖diamond,不推荐使用。 | |
MyCAT | |||
Cobar | Cobar属于中间层方案,在应用程序和MySQL之间搭建一层Proxy。中间层介于应用程序与数据库间,需要做一次转发,而基于JDBC协议并无额外转发,直接由应用程序连接数据库, 性能上有些许优势。这里并非说明中间层一定不如客户端直连,除了性能,需要考虑的因素还有很多,中间层更便于实现监控、数据迁移、连接管理等功能。 |
Cobar停止维护了 | |
DRDS | 项目不开源 | ||
关于sharding-jdbc的实例参考:
https://www.jianshu.com/p/03bb0e11dae4
https://www.cnblogs.com/lyosaki88/p/springboot_shardingjdbc_druid_mybatis.html (参考这个)