Shardingsphere 简介

什么是 ShardingSphere?

Apache ShardingSphere 是一套开源的分布式数据库增强计算引擎,其通过可插拔架构构建基于数据库之上的生态系统,实现包括数据分片、弹性伸缩、加密脱敏等功能为代表的增强能力。

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

连接、增量 和 可插拔 是 Apache ShardingSphere 的核心概念。

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

ShardingSphere架构图

核心功能列表

数据分片 分布式事务 数据库治理
分库&分表 标准化事务接口 配置动态化
读写分离 XA强一致事务 编排&治理
分片策略定制化 柔性事务 数据脱敏
无中心化分布式主键 可视化链路追踪

ShardingSphere构成组件

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

ShardingSphere-JDBC

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

  • 适用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC;
  • 支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, HikariCP 等;
  • 支持任意实现 JDBC 规范的数据库,目前支持 MySQL,PostgreSQL,Oracle,SQLServer 以及任何可使用 JDBC 访问的数据库。

ShardingSphere-Proxy

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

  • 向应用程序完全透明,可直接当做 MySQL/PostgreSQL 使用;
  • 适用于任何兼容 MySQL/PostgreSQL 协议的的客户端。

ShardingSphere-Sidecar(TODO)

定位为 Kubernetes 的云原生数据库代理,以 Sidecar 的形式代理所有对数据库的访问。 通过无中心、零侵入的方案提供与数据库交互的啮合层,即 Database Mesh,又可称数据库网格。

Database Mesh 的关注重点在于如何将分布式的数据访问应用与数据库有机串联起来,它更加关注的是交互,是将杂乱无章的应用与数据库之间的交互进行有效地梳理。 使用 Database Mesh,访问数据库的应用和数据库终将形成一个巨大的网格体系,应用和数据库只需在网格体系中对号入座即可,它们都是被啮合层所治理的对象。

ShardingSpere核心概念

逻辑表

  • 水平拆分的数据库(表)的相同逻辑和数据结构表的总称。例:订单数据根据主键尾数
    拆分为10张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order。

真实表

  • 在分片的数据库中真实存在的物理表。即上个示例中的t_order_0到t_order_9。

数据节点

  • 数据分片的最小单元。由数据源名称和数据表组成,例:ds_0.t_order_0。

绑定表

  • 分片规则一致的主表和子表。例如:t_order表和t_order_item表,均按照order_id分
    片,则此两张表互为绑定表关系。绑定表之间的多表关联查询不会出现笛卡尔积关联,关联
    查询效率将大大提升。

广播表

  • 指所有的分片数据源中都存在的表,表结构和表中的数据在每个数据库中均完全一致。
    适用于数据量不大且需要与海量数据的表进行关联查询的场景。字典表就是典型的场景。

参考

ShardingSpere官网.

Shardingsphere 简介相关推荐

  1. ShardingSphere简介与分表使用

    一.ShardingSphere简介 1.简介 ShardingSphere 已于 2020 年 4 月 16 日成为 Apache 软件基金会的顶级项目. ShardingSphere 是一套开源的 ...

  2. 一、ShardingSphere简介(来自官方文档)

    官方中文文档地址https://shardingsphere.apache.org/document/current/cn/overview/ 简介(来自上面的官网) Apache ShardingS ...

  3. ShardingSphere 简介(一)

    Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 JDBC.Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产 ...

  4. ShardingSphere简介(一)

    概述 什么是Sharding Sphere ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sharding-Proxy和Shardin ...

  5. shardingJdbc专题系列(一)之shardingJdbc简介

    分库分表的概念已经炒了很久了,我也很久没有写博客了,这段确实有点忙,前段时间恰好在公司分享了一下关于shardingJdbc的用法,索性整理成文章,希望能对大家有帮助. 分库分表这种概念,个人认为应该 ...

  6. sharding-jdbc系列(一):概念

    前话 前段时间公司项目比较忙,天天都忙于码代码,最近好不容易项目上线了,后期就是试运行解决线上问题,要闲一些了,看了下公司以前的一些项目,发现其中居然有用到sharding-jdbc,想到以前自己也使 ...

  7. Java后端程序员技术栈

    Java后端程序员技术栈 它可以是知识提纲,便于快速复习与查阅 它也可以是你的学习规划,帮助小白快速了解学Java要走的路(当然你也可以选择搭配我的学习路线一起享用!) 相关链接: <gitee ...

  8. A103_数据库优化_多机优化

    目录 1.内容介绍 2. 分库分表 2.1. 分库分表分析 2.1.1.垂直分表-宽表拆分 2.1.2.垂直分库-按业务分库 2.1.3.水平分表-海量表拆分小表 2.1.4.水平分库-同一业务表拆分 ...

  9. 谷粒商城学习笔记——第一期:项目简介

    一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...

最新文章

  1. ContentResolver.query()—buildQueryString()
  2. JAVA实现长连接(含心跳检测)Demo
  3. CentOS 7.2 安装教程
  4. 在WinForm程序中嵌入ASP.NET
  5. u32转换bool类型_4.29.类型转换
  6. INPUT只能输入数字
  7. LINUX 查看系统信息的命令
  8. Spring-Cloud-Config消息总线和高可用
  9. React-Native入门指南——第七篇动手写组件
  10. django session过期设置
  11. cad线性标注命令_CAD中线性标注的快捷命令是什么
  12. Ubuntu 更改系统语言
  13. 【SQL】小CASE
  14. 小米手机linux驱动下载,小米手机驱动下载
  15. 性能服务器可以同时标注吗,关于服务器性能的一些思考
  16. 酷炫cmd命令行工具——windows terminal的详细配置
  17. 相亲婚恋网站哪个好!交友、约会、找对象都用靠谱的一伴网!
  18. 制造业ERP系统如何帮助企业做好生产物料管控?
  19. 操作系统实验(二):进程调度(c实现优先权调度和时间片轮转调度)
  20. 又修改了显示器和电源机箱的配置

热门文章

  1. 声智科技亮相小米新品发布会
  2. Android课程设计倒计时app,999倒计时计时器课程设计.docx
  3. 浏览器UA,浏览器标识检测
  4. 7-5 修理牧场 (25 分)
  5. 构成社群的五要素,你了解吗?
  6. spingboot报错I/O error on POST request for “9411/api/v2/spans“: connect timed out
  7. Python神器!只需一行代码,纯文本秒变Markdown!
  8. PowerPoint 2010去掉了宏录制器
  9. WebDay14 Linux高级+Nginx
  10. 【nlp学习】中文命名实体识别(待补充)