基础

什么是ShardingSphere

开源分布式的关系型数据库中间件
组件

  1. Sharding-JDBC
  2. Sharding-Proxy
    1. 透明化的数据库代理端
    2. 支持MySQL,PgSQL
  3. Sharding-Sidecar(规划中)

当前版本4.x, https://shardingsphere.apache.org/document/legacy/4.x/document/cn/overview/

分表分库解析

解决数据量大,影响性能问题

    • 垂直分表
      • 把这张表一部分字段存在一张新表,另一部分拆到另一张表中存储 (课程主要信息 / 课程描述)
    • 水平分表
      • 按照一定字段hash分表
  • 数据库
    • 垂直分库(垂直切分)
      • 把单一的数据库,按照业务进行拆分(商品库 / 订单库)
    • 水平分库(水平切分)
      • 将一个数据库拆成两个相同数据库,

当数据量增大时,先考虑缓存处理和使用索引

带来的问题:

  1. 跨数据源连接查询问题(分页, 排序)
  2. 多数据源管理问题

    读写分离

    Sharding-JDBC

    代码: https://github.com/Macky-He/spring-boot—shardingsphere-examples
  • 轻量级java框架,以jar形式提供服务
  • 增强版jdbc驱动
  • 支持多种数据库和连接池

Sharding-JDBC并不是去做分库分表, 主要功能: **数据分片读写分离**,简化分库分表之后数据相关操作
简化分库分表之后对数据的操作
ShardingSphere - 图1

  1. 配置多个数据源
  2. 使用水平分表
  3. 水平分库
  4. 垂直分库
  5. 配置公共表 broadcast-tables (公共表每个数据源都会插入一次数据)