68
回答
高手问答第 144 期 — 轻量级数据库中间层 Sharding-JDBC 深度解析

OSCHINA 本期高手问答(2017 年 3 月 7 日 — 3 月 13 日)我们请来了 @terrymanu (张亮) 和大家探讨分布式数据库中间层的适用场景和自研的选型过程。

@terrymanu  张亮,目前是当当架构部负责人。主要负责分布式中间件以及私有云平台的搭建。致力于开源,目前主导两个开源项目 Elastic-JobSharding-JDBC

基于关系型数据库的水平扩展方案有很多开源的解决方案,但成熟稳定的产品凤毛麟角。

当当自研的数据库中间层 Sharding-JDBC 在公司内部已广泛使用,并在开源社区推广且初见成果,获得 2016 年开源中国评选的最受欢迎国产开源软件第 17 名。目前的 Sharding-JDBC 已经历从初出茅庐到稳定运行,再到变革的关键点。

Sharding-JDBC 采用在 JDBC 协议层扩展分库分表,是一个以 jar 形式提供服务的轻量级组件,其核心思路是小而美的完成最核心的事情。

最初的 Sharding-JDBC 采用 Druid 做的 SQL 解析,而为了进一步提升性能,并做出更加出色的产品,新一代 Sharding-JDBC 采用自研 SQL 解析,将原有的 AST 语法树 + Vistor 模式,转变为更加轻量级的解析上下文 + Original SQL。

高手嘉宾将与大家探讨分布式数据库中间层的适用场景和自研的选型过程,并深度解析当当的开源产品 Sharding-JDBC 的整体架构、设计思路以及关键技术点。

本次问答包含以下内容:

  • Sharding-JDBC 解决了哪些问题
  • Sharding-JDBC 技术原理
  • 为什么需要使用 Sharding-JDBC
  • Sharding-JDBC 下一步规划

如果还有其他相关问题,不妨带着问题进入本期的高手问答 —— 轻量级数据库中间层 Sharding-JDBC 深度解析。

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就分布式数据库中间层相关的问题向 @terrymanu  提问,请直接回帖提问,提问的时候请描述清楚具体的场景,以方便回答。

举报
局长
发帖于2年前 68回/12K+阅
共有68个答案 最后回答: 1年前

引用来自“steven7”的评论

@terrymanu    Sharding-JDBC 下一步规划是什么

您好。

Sharding-JDBC目前正在进行SQL Parser部分的重写。之前的Sharding-JDBC使用Duird作为SQL解析的基础工具,但基于各方面的考虑,我们决定采用自研的方式解析SQL,能进一步的提升性能和Sharding的准确性以及兼容性。

New SQL Parser完成之后,我们会着重处理之前没有完成的柔性事务TCC部分,更多类型SQL的支持以及配置动态化。

这些做完之后会考虑将Sharding-JDBC分为Sharding-Driver以及Sharding-JDBC-Server两个版本,用于满足不同用户的需要。Sharding-JDBC-Driver会更加轻量级,而Sharding-JDBC-Server会以Proxy的形式提供服务,能更好的处理数据迁移,事务以及OLAP等需求。

引用来自“zhao_gang”的评论

@terrymanu sharding-JDBC是否有完善的管理配置界面? 

您好。目前Sharding-JDBC还没来得及做配置界面。目前主要集中于以jar包的形式提供服务,和业务应用一起发布,旨在简化开发,对dba无影响,因此dba看到的还是分库后的零散的数据库。未来会做配置中心,用于动态的修改分片数据源,也会配套的提供管理界面。未来还会将数据库的Metadata统一管理起来,为dba提供更加友好的服务。

引用来自“sca7”的评论

@terrymanu  Sharding-JDBC和其他有啥区别?能不能集成到sparksql? hive? 

您好。

目前和Sharding-JDBC这种基于JDBC层架构类似的,据我所知只有TDDL,而TDDL并未将分库分表这块开源。基于JDBC层进行分片的好处是轻量、简单、兼容性好以及无需额外的运维工作。缺点是无法跨语言,目前仅Java。

现在暂时未考虑集成SparkSQL或者HIVE。因为Sharding-JDBC的定位还是关系型数据库中间层,为了稳定性的考虑,不会改变数据库的存储引擎。未来我们会做基于Proxy版本的Sharding-JDBC-Server,会渐渐的考虑将Spark等大数据的查询方式引入进来。

顶部