ShardingSphere - 构建异构数据库上层的标准和生态

官方网站: https://shardingsphere.apache.org/

License GitHub release Build Status codecov snyk Maintainability CII Best Practices OpenTracing-1.0 Badge Skywalking Tracing

Twitter Slack Gitter

星评增长时间线贡献者增长时间线
Stargazers over timeContributor over time

概述

Apache ShardingSphere 产品定位为 Database Plus,旨在构建异构数据库上层的标准和生态。 它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。ShardingSphere 站在数据库的上层视角,关注他们之间的协作多于数据库自身。

连接增强可插拔 是 Apache ShardingSphere 的核心概念。

  • 连接:通过对数据库协议、SQL 方言以及数据库存储的灵活适配,快速的连接应用与多模式的异构数据库;
  • 增强:获取数据库的访问流量,并提供流量重定向(数据分片、读写分离、影子库)、流量变形(数据加密、数据脱敏)、流量鉴权(安全、审计、权限)、流量治理(熔断、限流)以及流量分析(服务质量分析、可观察性)等透明化增强功能;
  • 可插拔:项目采用微内核 + 三层可插拔模型,使内核、功能组件以及生态对接完全能够灵活的方式进行插拔式扩展,开发者能够像使用积木一样定制属于自己的独特系统。

ShardingSphere 已于 2020 年 4 月 16 日成为 Apache 软件基金会的顶级项目。

文档📜

EN d CN doc

更多信息请参考:https://shardingsphere.apache.org/document/current/cn/overview/

参与贡献🚀🧑‍💻

搭建开发环境和贡献者指南,请参考:https://shardingsphere.apache.org/community/cn/contribute/

团队成员

我们真挚感谢社区贡献者对 Apache ShardingSphere 的奉献。

社区和支持💝🖤

:link: Mailing List. 适合于 Apache 社区相关讨论和版本发布;

:link: GitHub Issues. 适合于设计问题、缺陷报告或者开发相关;

:link: GitHub Discussions. 适合于技术问题咨询和新功能讨论;

:link: Slack channel. 适合于在线交流和线上会议;

:link: Twitter. 随时了解 Apache ShardingSphere 信息。

状态👀

:white_check_mark: Version 5.1.2: 已发布 :tada:

🔗 请访问 发布说明 获得更详细的信息.

:soon: Version 5.1.3

我们目前正在开发 5.1.3 里程碑。 请访问里程碑 获取最新信息。

工作原理

Apache ShardingSphere 由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。

ShardingSphere-JDBC

Maven Status

定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。

:link: 更多信息请参考官方网站

ShardingSphere-Proxy

Nightly-Download Download Docker Pulls

定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供 MySQL 和 PostgreSQL 版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户端操作数据,对 DBA 更加友好。

:link: 更多信息请参考官方网站

ShardingSphere-JDBCShardingSphere-Proxy
数据库任意MySQL/PostgreSQL
连接消耗数
异构语言仅 Java任意
性能损耗低损耗略高
无中心化
静态入口

混合架构

ShardingSphere-JDBC 采用无中心化架构,与应用程序共享资源,适用于 Java 开发的高性能的轻量级 OLTP 应用; ShardingSphere-Proxy 提供静态入口以及异构语言的支持,独立于应用程序部署,适用于 OLAP 应用以及对分片数据库进行管理和运维的场景。

Apache ShardingSphere 是多接入端共同组成的生态圈。 通过混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统,使得架构师更加自由地调整适合于当前业务的最佳系统架构。

:link: 更多信息请参考官方网站

解决方案

解决方案/功能分布式数据库数据安全数据库网关全链路压测
数据分片数据加密异构数据库支持影子库
读写分离行级权限(TODO)SQL 方言转换(TODO)可观测性
分布式事务SQL 审计(TODO)
弹性伸缩SQL 防火墙(TODO)
高可用

线路规划

Roadmap

如何构建 Apache ShardingSphere

查看 Wiki 详细了解如何构建 Apache ShardingSphere。

全景图