今年 1 月 18 日,当当的分布式数据库中间层 Sharding-JDBC 正式开源。经过近半年的潜心打磨,Sharding-JDBC 于六一前夕正式发布 1.3.0 里程碑版本。
Sharding-JDBC 源于当当应用框架 ddframe 的关系型数据库访问模块 dd-rdb,主要功能是使数据库分库分表访问透明化。项目定位为轻量级 Java 中间件,采用 JDBC 层协议封装,可以理解为增强版的 JDBC,适用于绝大部分 Java ORM 框架和使用标准 SQL 的数据库。
Sharding-JDBC 在当前开源数据库中间件百花齐放,但稳定易用产品不多的大环境下,有效弥补了关键功能缺失痛点。这里回顾一下 Sharding-JDBC 发布了 4 个里程碑版本:
- 1.0.0 分库分表:
- 提供灵活的函数式分片规则配置,可支持 =,BETWEEN,IN 等操作符分片;
- 完善的 SQL 支持,对 LIMIT,聚合,分组,排序,OR 等 SQL 均可解析和多结果集归并。
- 1.1.0 配置易用性:
- 提供 Spring 命名空间简化配置;
- 提供 Yaml 配置,为不使用 Spring 的开发者提供同样简便的配置方式。
- 1.2.0 最大努力送达型柔性事务
- 通过同步和异步尝试,在弱 XA 的基础上更近一步,提供最大努力送达型柔性事务保证数据的最终一致性;
- 更贴近于原生事务的 TCC 型柔性事务也将于不久之后发布。
- 1.3.0 读写分离
- 提供读写分离数据源,可简便的与分片数据源相结合,便于实现分片 + 主从的完美数据库配置方式;
- 最大限度提供数据一致性保障。如:
- 同一线程内如有写库操作,读取操作即路由至主库;
- 提供 Hint 方式强制主库路由。
Sharding-JDBC 将持续更新,完善分布式数据库中间层缺失的其他功能。目前已在计划中的功能包括分布式主键,TCC 柔性事务,数据迁移,HA,元数据注册管理等。同时也会在 SQL 解析的性能,SQL 的兼容性,配置的易用性等方面不断优化。
在六一来临之际,希望 Sharding-JDBC 能为与数据分片苦苦奋斗的一线攻城狮们送上一份儿童节礼物,为你们提供清爽的解决方案,分担工作的压力。希望技术人员永远保持一颗快乐的童心。
附:Sharding-JDBC github 地址。
评论