当当的分布式数据库中间层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能为与数据分片苦苦奋斗的一线攻城狮们送上一份儿童节礼物,为你们提供清爽的解决方案,分担工作的压力。希望技术人员永远保持一颗快乐的童心。
本文转自d1net(转载)