README_ZH.md
构建异构数据库上层的标准与生态,赋能企业数据架构数字化转型
官方网站: https://shardingsphere.apache.org/
<table style="width:100%"> <tr> <th> <a href="https://next.ossinsight.io/widgets/official/analyze-repo-stars-map?activity=stars&repo_id=49876476" target="_blank" style="display: block" align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/analyze-repo-stars-map/thumbnail.png?activity=stars&repo_id=49876476&image_size=auto&color_scheme=dark" width="721" height="auto"> </picture>
</a>
</th>
<th>
<a href="https://next.ossinsight.io/widgets/official/analyze-repo-stars-map?activity=pull-request-creators&repo_id=49876476" target="_blank" style="display: block" align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/analyze-repo-stars-map/thumbnail.png?activity=pull-request-creators&repo_id=49876476&image_size=auto&color_scheme=dark" width="721" height="auto">
</picture>
</a>
</th>
<th>
<a href="https://next.ossinsight.io/widgets/official/analyze-repo-stars-map?activity=issue-creators&repo_id=49876476" target="_blank" style="display: block" align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/analyze-repo-stars-map/thumbnail.png?activity=issue-creators&repo_id=49876476&image_size=auto&color_scheme=dark" width="721" height="auto">
</picture>
</a>
</th>
</tr>
Apache ShardingSphere 定位为 Database Plus,是构建在异构数据库上层的标准与生态系统。作为数据库上层的操作系统,ShardingSphere 并非创造全新的数据库,而是专注于最大化现有数据库的计算能力,提供统一的数据访问入口和增强计算能力。
Database Plus 核心理念:通过在数据库上层构建标准化、可扩展的增强层,让异构数据库像单一数据库一样简单使用,为企业数据架构提供统一的治理能力和分布式计算能力。
连接、增强、可插拔 是 Apache ShardingSphere 的三大核心支柱:
连接: 构建数据库上层标准,通过灵活适配数据库协议、SQL 方言和存储格式,快速连接应用与多模式异构数据库,提供统一的数据访问体验;
增强: 作为数据库计算增强引擎,透明化提供分布式计算(数据分片、读写分离、联邦查询)、数据安全(加密、脱敏、审计)、流量控制(熔断、限流)以及可观测性(监控、追踪、分析)等企业级能力;
可插拔: 采用微内核 + 三层可插拔架构,实现内核、功能组件与生态对接的完全解耦,开发者可以像搭建积木一样,灵活定制符合企业需求的独特数据架构解决方案。
差异化优势:
ShardingSphere 于 2020 年 4 月 16 日成为 Apache 软件基金会 顶级项目,已在全球范围内被 19,000+ 项目采用。
ShardingSphere 采用独特的双接入端架构设计,提供 JDBC 和 Proxy 两种既可独立部署又可混合部署的接入端,满足不同场景下的多样化需求。
定位:轻量级 Java 框架,增强版 JDBC 驱动
核心特性:
适用场景:Java 高性能应用,与业务应用集成部署,追求极致性能
定位:透明化数据库代理,独立部署的服务端
核心特性:
适用场景:异构语言环境、数据库运维管理、需要统一访问入口的企业级应用
通过混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注册中心统一配置分片策略,能够灵活搭建适用于各种场景的应用系统:
更多信息请参考:https://shardingsphere.apache.org/document/current/cn/overview/
搭建开发环境和贡献者指南,请参考:https://shardingsphere.apache.org/community/cn/involved/
我们真挚感谢社区贡献者对 Apache ShardingSphere 的奉献。
:link: Mailing List. 适合于 Apache 社区相关讨论和版本发布;
:link: GitHub Issues. 适合于设计讨论、缺陷报告或者开发相关;
:link: Slack channel. 适合于在线交流和线上会议;
:link: X. 随时了解 Apache ShardingSphere 信息。
:white_check_mark: Version 5.5.4-SNAPSHOT: 正在积极开发中 :tada:
🔗 请访问 发布说明 获得更详细的信息。
:soon: Version 5.5.4
我们目前正在开发 5.5.4 版本,包含多项安全增强和性能优化。 请访问里程碑 获取最新开发进展。
Apache ShardingSphere 采用微内核 + 三层可插拔架构,实现了内核、功能组件与生态对接的完全解耦,为开发者提供了极致的灵活性和扩展能力。
核心层:
功能层:
生态层:
完全解耦架构:
Apache ShardingSphere 由 JDBC、Proxy 两个既可独立部署又可混合部署的接入端组成,为 Java 同构、异构语言、云原生等多样化应用场景提供统一的分布式数据库解决方案。
定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。
:link: 更多信息请参考官方网站。
注意:使用 ShardingSphere-JDBC 接入端时,需特别关注应用的内存配置。由于 Antlr 在 SQL 解析过程中,会使用内部缓存来提升性能,如果应用的 SQL 模板数量过多,则会导致缓存不断增长,占用大量堆内存。 根据 ANTLR 官方 issue#4232 的反馈,目前该问题尚未得到优化,应用接入 ShardingSphere-JDBC 时,建议通过
-Xmx参数设置合理的堆内存大小,避免因内存不足导致的 OOM。
定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供 MySQL 和 PostgreSQL 版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户端操作数据,对 DBA 更加友好。
:link: 更多信息请参考官方网站。
| ShardingSphere-JDBC | ShardingSphere-Proxy | |
|---|---|---|
| 数据库 | 任意 | MySQL/PostgreSQL |
| 连接消耗数 | 高 | 低 |
| 异构语言 | 仅 Java | 任意 |
| 性能 | 损耗低 | 损耗略高 |
| 无中心化 | 是 | 否 |
| 静态入口 | 无 | 有 |
ShardingSphere-JDBC 采用无中心化架构,与应用程序共享资源,适用于 Java 开发的高性能的轻量级 OLTP 应用; ShardingSphere-Proxy 提供静态入口以及异构语言的支持,独立于应用程序部署,适用于 OLAP 应用以及对分片数据库进行管理和运维的场景。
Apache ShardingSphere 是多接入端共同组成的生态圈。 通过混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统,使得架构师更加自由地调整适合于当前业务的最佳系统架构。
:link: 更多信息请参考官方网站。
查看 Wiki 详细了解如何构建 Apache ShardingSphere。
ShardingSphere 进入了<a href="https://landscape.cncf.io/?category=app-definition-and-development&grouping=category">CNCF 云原生全景图</a>。
</p>