title: 从零玩转ShardingSphere分库分表 (概括)
date: 2022-05-25 17:58:25.61
updated: 2022-08-22 22:59:02.624
url: https://www.yby6.com/archives/shardingsphere1
categories:
- 从零玩转系列
- 分库分表
tags:
- 从零玩转系列
- 分库分表

从零玩转ShardingSphere分库分表 (概括)

前言

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

站在数据库的上层视角,关注他们之间的协作多于数据库自身。

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

分库分表中间件

  • Mycat

    • https://mycat.org.cn/
    • Mycat是一个要部署在服务器上的软件,类似于上面的Proxy
    • 使用Mycat需要有一定的运维能力
  • ShardingSphere(重点)

    • http://shardingsphere.apache.org/index_zh.html
    • 简介
      • Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈
      • 由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成
      • 提供标准化的数据水平扩展、分布式事务和分布式治理等功能
      • ShardingSphere 定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力
    • Sharding-JDBC
      • Sharding-JDBC 定位为轻量级 Java 框架
      • 以 jar 包形式提供服务,无需额外部署和依赖
      • 核心功能 -数据分片
        • 读写分离
        • 结构图 ↓
        • 我们可以看到它的结构- JavaApplication是我们自己的程序引入 Sharding-JDBC 通过它来进行数据库交互-我们只需要定制策、算法即可
    • Sharding-Proxy
      • Sharding-Proxy 类似于mycat
      • 它定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。
      • 目前仅支持 MYSQL PstgreSQL
      • 结构图 ↓
    • Sharding-Sidecar
      • Sharding-Sidecar 目前正在规划中
      • 定位为 Kubernetes 的云原生数据库代理,以 Sidecar 的形式代理所有对数据库的访问。

核心概念 (重要)

  • 逻辑表

    • 水平拆分的数据库(表)的相同逻辑和数据结构表的总称。
    • 拆分之后的表,t_order_0,t_order_1 逻辑表名为t_order
  • 真实表

    • 在分片的数据库中真实存在的物理表
    • t_order_0具体的表
  • 讲解图

  • 数据节点

    • 数据分片的最小单元。由数据源名称和数据表组成
    • 自定义数据源配置名称是自己定义的哦
    • spring.shardingsphere.datasource.names=db0
    • 示例: ds0.t_order (数据源名称.表名)
  • 绑定表

    • 指分片规则一致的主表和子表
  • 广播表

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

    • 用于分片的数据库字段,是将数据库(表)水平拆分的关键字段。
  • 分片算法

    • 通过分片算法将数据分片,支持通过 =、>=、<=、>、<、BETWEEN 和 IN 分片
  • 分片策略

    • 真正可用于分片操作的是分片键 + 分片算法,也就是分片策略
  • 分片键与分片算法原理图

下一篇

从零玩转ShardingSphere分库分表 (建立JDBC环境)

从零玩转ShardingSphere分库分表 (概括)-shardingsphere1的更多相关文章

  1. 分库分表利器之Sharding Sphere(深度好文,看过的人都说好)

    Sharding-Sphere Sharding-JDBC 最早是当当网内部使用的一款分库分表框架,到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已更名为 S ...

  2. 分库分表利器——sharding-sphere

    背景 得不到的东西让你彻夜难眠,没有尝试过的技术让我跃跃欲试. 本着杀鸡焉用牛刀的准则,我们倡导够用就行,不跟风,不盲从. 所以,结果就是我们一直没有真正使用分库分表.曾经好几次,感觉没有分库分表(起 ...

  3. 【ShardingSphere技术专题】「ShardingJDBC」SpringBoot之整合ShardingJDBC实现分库分表(JavaConfig方式)

    前提介绍 ShardingSphere介绍 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sharding-Proxy和Shardin ...

  4. mysql 分库分表 ~ ShardingSphere生态圈

    一  简介   Apache ShardingSphere是一款开源的分布式数据库中间件组成的生态圈二 成员包含   Sharding-JDBC是一款轻量级的Java框架,在JDBC层提供上述核心功能 ...

  5. 分库分表(2) --- ShardingSphere(理论)

    ShardingSphere---理论 ShardingSphere在中小企业需要分库分表的时候用的会比较多,因为它维护成本低,不需要额外增派人手;而且目前社区也还一直在开发和维护,还算是比较活跃. ...

  6. 分库分表(3) ---SpringBoot + ShardingSphere 实现读写分离

    分库分表(3)---ShardingSphere实现读写分离 有关ShardingSphere概念前面写了两篇博客: 1.分库分表(1) --- 理论 2. 分库分表(2) --- ShardingS ...

  7. 分库分表(4) ---SpringBoot + ShardingSphere 实现分表

    分库分表(4)--- ShardingSphere实现分表 有关分库分表前面写了三篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论) 3.分库 ...

  8. 分库分表(5) ---SpringBoot + ShardingSphere 实现分库分表

    分库分表(5)--- ShardingSphere实现分库分表 有关分库分表前面写了四篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论) 3. ...

  9. 分库分表(6)--- SpringBoot+ShardingSphere实现分表+ 读写分离

    分库分表(6)--- ShardingSphere实现分表+ 读写分离 有关分库分表前面写了五篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论 ...

  10. Springboot2.x + ShardingSphere 实现分库分表

    之前一篇文章中我们讲了基于Mysql8的读写分离(文末有链接),这次来说说分库分表的实现过程. 概念解析 垂直分片 按照业务拆分的方式称为垂直分片,又称为纵向拆分,它的核心理念是专库专用. 在拆分之前 ...

随机推荐

  1. Solution Set -「CF 1534」

    这 1+2? 「CF1534 A」Colour the Flag Link. 把 W / R 拉出来广搜,注意判断全空的情况. #include <bits/stdc++.h> using ...

  2. HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒

    本文转载自支付宝体验科技,作者是蚂蚁集团客户端工程师博欢,介绍了支付宝如何基于 HarmonyOS 4.0 实况窗实现医疗场景履约智能提醒. 1.话题背景 8 月 4 日,华为在 HDC(华为 202 ...

  3. c语言代码练习4(改进)

    #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> #include <wi ...

  4. Python网络编程——TCP套接字通信、通信循环、链接循环、UDP通信

    文章目录 基于TCP的套接字通信 加上通信循环 加上链接循环 基于UDP协议的套接字通信 基于TCP的套接字通信 以买手机的过程为例 服务端代码 import socket # 1.买手机 phone ...

  5. 教育法学第七章单元测试MOOC

    第七章单元测试 返回 本次得分为:100.00/100.00, 本次测试的提交时间为:2020-09-06, 如果你认为本次测试成绩不理想,你可以选择 再做一次 . 1 单选(5分) 父母对未成年子女 ...

  6. Java11配置maven

    这里假设Java11和maven都正确安装,使用的版本为Java11.maven3.6.1 测试环境变量 Java win + r 打开运行,输入 cmd,打开命令行提示符,输入java --vers ...

  7. SonarQube系列-通过配置扫描分析范围,聚焦关键问题

    在许多情况下,你可能不希望分析项目中每个源文件的各个方面.例如,项目可能包含生成的代码.库中的源代码或有意复制的代码.在这种情况下,跳过这些文件分析的部分或全部方面是有意义的,从而消除干扰并将焦点缩小 ...

  8. HDU4841 AHOI1999 圆桌问题 题解

    朴素的约瑟夫问题,用vector处理即可 #include <iostream> #include <vector> using namespace std; //AHOI19 ...

  9. 实验四报告: 熟悉Python字典、集合、字符串的使用

    实验目标 本实验的主要目标是熟悉Python中字典.集合.字符串的创建和操作,包括字典的创建.访问.修改和合并,集合的创建.访问以及各种集合运算,以及字符串的创建.格式化和常用操作. 实验要求 通过编 ...

  10. Spring Cloud OpenFeign系列:简介和使用

    目录 一.简介 二.使用 1.创建父工程 2.创建order-service模块 3.创建order-client模块 三.效果 四.配置说明 1.超时配置 全局超时配置 局部超时配置 2.Gzip压 ...