什么是 ShardingSphere

Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。

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

ShardingSphere的设计哲学

ShardingSphere 采用 Database Plus 设计哲学,该理念致力于构建数据库上层的标准和生态,在生态中补充数据库所缺失的能力。

ShardingSphere的设计哲学:Database Plus

连接:打造数据库上层标准

通过对数据库协议、SQL 方言以及数据库存储的灵活适配,快速构建多模异构数据库上层的标准,同时通过内置 DistSQL 为应用提供标准化的连接方式。

增强:数据库计算增强引擎

在原生数据库基础能力之上,提供分布式及流量增强方面的能力。前者可突破底层数据库在计算与存储上的瓶颈,后者通过对流量的变形、重定向、治理、鉴权及分析能力提供更为丰富的数据应用增强能力。

可插拔:构建数据库功能生态

ShardingSphere架构分层图

Apache ShardingSphere 的可插拔架构划分为 3 层,它们是:L1 内核层、L2 功能层、L3 生态层。

L1 内核层

是数据库基本能力的抽象,其所有组件均必须存在,但具体实现方式可通过可插拔的方式更换。 主要包括查询优化器、分布式事务引擎、分布式执行引擎、权限引擎和调度引擎等。

L2 功能层

用于提供增量能力,其所有组件均是可选的,可以包含零至多个组件。 组件之间完全隔离,互无感知,多组件可通过叠加的方式相互配合使用。 主要包括数据分片、读写分离、数据库高可用、数据加密、影子库等。 用户自定义功能可完全面向 Apache ShardingSphere 定义的顶层接口进行定制化扩展,而无需改动内核代码。

L3 生态层

用于对接和融入现有数据库生态,包括数据库协议、SQL 解析器和存储适配器,分别对应于 Apache ShardingSphere 以数据库协议提供服务的方式、SQL 方言操作数据的方式以及对接存储节点的数据库类型。

ShardingSphere的产品功能

特性 定义
数据分片 数据分片,是应对海量数据存储与计算的有效手段。ShardingSphere 基于底层数据库提供分布式数据库解决方案,可以水平扩展计算和存储。
分布式事务 事务能力,是保障数据库完整、安全的关键技术,也是数据库的核心技术。基于 XA 和 BASE 的混合事务引擎,ShardingSphere 提供在独立数据库上的分布式事务功能,保证跨数据源的数据安全。
读写分离 读写分离,是应对高压力业务访问的手段。基于对 SQL 语义理解及对底层数据库拓扑感知能力,ShardingSphere 提供灵活的读写流量拆分和读流量负载均衡。
高可用 高可用,是对数据存储计算平台的基本要求。ShardingSphere 提供基于原生或 Kubernetes 环境下数据库集群的分布式高可用能力。
数据迁移 数据迁移,是打通数据生态的关键能力。ShardingSphere 提供跨数据源的数据迁移能力,并可支持重分片扩展。
联邦查询 联邦查询,是面对复杂数据环境下利用数据的有效手段。ShardingSphere 提供跨数据源的复杂查询分析能力,实现跨源的数据关联与聚合。
数据加密 数据加密,是保证数据安全的基本手段。ShardingSphere 提供完整、透明、安全、低成本的数据加密解决方案。
影子库 在全链路压测场景下,ShardingSphere 支持不同工作负载下的数据隔离,避免测试数据污染生产环境。

ShardingSphere的产品优势

  • 极致性能

驱动程序端历经长年打磨,效率接近原生 JDBC,性能极致。

  • 生态兼容

代理端支持任何通过 MySQL/PostgreSQL 协议的应用访问,驱动程序端可对接任意实现 JDBC 规范的数据库。

  • 业务零侵入

面对数据库替换场景,ShardingSphere 可满足业务无需改造,实现平滑业务迁移。

  • 运维低成本

在保留原技术栈不变前提下,对 DBA 学习、管理成本低,交互友好。

  • 安全稳定

基于成熟数据库底座之上提供增量能力,兼顾安全性及稳定性。

  • 弹性扩展

具备计算、存储平滑在线扩展能力,可满足业务多变的需求。

  • 开放生态

通过多层次(内核、功能、生态)插件化能力,为用户提供可定制满足自身特殊需求的独有系统。