分库分表原则

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分库分表原则

读完《分库分表基础》,对于分库分表有了一个概念性的认识,数据库表可以分成两大类:一类是公共表,另一类是业务表。

业务表定义

业务表很容易识别,随着业务开展,表的数据量会越来越大,一个数据库很难存放的下,我们需要对于数据库和表的分布进行管理控制,引入节点定位服务,以满足业务需求。

公共表的特点定义

在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性:•变动不频繁

•数据量总体变化不大

•数据规模不大,很少有超过数十万条记录。

鉴于此,系统需要定义了一种特殊的表,称之为“全局表”,全局表可通过小表广播同步到个系统,全局表具有以下特性:

•全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性

•全局表的查询操作,只从一个节点获取

•全局表可以跟任何一个表进行JOIN操作

公共表小表广播

公共表在初始化时,需要初始化到每个分库上面,以后的变化都需要把主库的数据同步到每一个分库上面去,形成小表广播机制。这样每分库上的表都可以有全量的公共表。

业务表分库分表原则

分库分表是对于业务表而言的,现阶段考虑的是纵向切分,分库分表是两个不同的概念。

分库原则

(1)租户间的数据,考虑通过分库的形式分开,将不同的租户的数据放到不同的库中。

(2)大的租户的客户数据可能涉及到一个库放不下,可以考虑通过组织结构进行分库,分库原则为单张表的数据能够承受。

(3)小租户可能数据太小,可能涉及到将多个租户的信息分到同一个数据库上面。

分表原则

按照我们的设计,纵向分库不存放较多的数据,数据两较大时,需要将数据进行导出。

我们说的分表一般在横向切片的时候会用的,一个库的一张表能够承受的数据量是有限的,时间久了一张表就不能承受,所以需要将该数据分布到不同的表中,在同一个库中进行保存。

案例

SAAS表结构案例

表结构和分库分表的内容如下:

反洗钱案例-客户风险

PS:取了客户风险等级部分表作为例子,没有将所有表结构全部纳入进来。

总结

基于以上原则,分库分表都是需要根据具体的业务情况来的,需要结合数据量,实际的系统场景来决定将表进行归类:

(1)数据量有多少,根据主要表的数据量,来划分是否将这部分功能相关的表进行分类;

(2)考虑功能内聚,尽量将功能相近的表,放到一起。

相关文档
最新文档