分库分表Sharding Sphere(一)

一、什么是Sharding Sphere

  1. 一套开源的分布式数据库中间件解决方案
  2. 有三个产品:Sharding-Jdbc和Shaeding-Proxy
  3. 定位为关系型数据库中间件,合理在分布式环境下使用关系型数据库操作。
    Sharding Sphere的中文官方文档
    分库分表Sharding Sphere(一)

二、分库分表

  1. 数据库数据量不可控,随着时间和业务发展,造成表里面的数据越来越多,如果再去数据库表进行crud操作的时候,就会造成行能问题。
  2. 解决方法
    1、从硬件上
    2、数据库进行分库分表(将单一库和单一表进行拆分)

三、分库分表的方式

  1. 垂直切分:垂直分表和垂直分库
  2. 水平切分:水平分表和水平分库

具体方式:

  1. 垂直分表:操作数据库中某张表,把这张表中一部分字段存到一张新的表中,再把这张表另一部分字段数据存到另外一张表中。
    例如:一张表中含有课程基础信息以及描述信息。将基础信息以及描述信息进拆分,分为课程基本表以及课程描述表,即可实现垂直拆分,如下图
    分库分表Sharding Sphere(一)

  2. 垂直分库:将单一数据库按照业务进行划分,专库专表。例如具有两种表,课程表以及订单表,可以将课程表以及订单表进行分库,专门设置两个数据库进行存放这两张表。
    分库分表Sharding Sphere(一)

  3. 水平分库:将多个数据库水平进行分库,分成一样的结构的数据库。
    注:向多个数据库进行插入数据的时候可以根据主键id进行分割,例如可都除以2,取余放入两个数据库中
    分库分表Sharding Sphere(一)

  4. 水平分表:与水平分库一样,将表结构完全进行复制成相同结构的几张表,之后按照规则进行分发数据。
    分库分表Sharding Sphere(一)

四、分库分表应用和问题

  1. 应用
    (1)在数据库设计的时候考虑垂直分库和垂直分表
    (2)随着数据库数据量增加,不要马上考虑做水平切分,首先考虑缓存处理,读写分离,使用索引等方式,如果这些方式不能根本解决问题了,再考虑做水平分库和水平分表。
  2. 分库分表问题
    (1)跨节点连接查询问题(分页、排序)
    (2)多数据源管理问题。