分片
- 通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库上面,以达到分散单台设备负载的效果,数据的切分根据切分规则的类型,可以分为两种切分模式
- 按照不同的表来切分到不同的数据库上,称为数据的垂直切分
- 根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库上面,称为 水平切分
逻辑库(schema)
MyCat是一个数据库中间件,对实际应用来说,并不需要知道中间件的存在,业务开发人员只需要知道数据库的概念,所以数据库中间件爱你可以被看做是一个或多个数据库集群构成的逻辑库。
逻辑表(table)
在分布式数据库环境下,对应用来说,读写数据的表就是逻辑表。逻辑表,可以是数据切分后分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成。
分片表
原有很大数据的表,需要切分到多个数据库的表,这样每个分片都有一部分数据,所有分片 构成了完成的数据。总而言之,就是需要进行分片的表。
非分片表
一个数据库中并不是所有的表都很大,某些表时可以不用进行切分的,非分片表是相对分片表来说的,就是那些不需要进行数据切分的表
ER表
关系型数据是基于实体关系模型(Entity Relationship Model)的,MyCat中的ER表来源于此,MyCat提出基于ER关系的数据分片策略,子表的记录与其所关联的主表的记录存放在同一个数据分片中,通过表分组保证数据关联查询不会跨库操作。
全局表
在一个大的项目中,会存在一部分字典表,在其中存储的是项目中的一些基础的数据,而这些基础数据,数据量都不大,在各个业务表中可能都存在关联,当业务表由于数据量大而分片后,业务表与复数的数据字典表之间的关联查询就变成了比较棘手的问题,在mycat中,可以通过数据冗余来解决这类表的关联查询,即当所有分片都复制这一份数据,因此可以把冗余数据的表定义为全局表
分片节点(dataNode)
数据切分后,一个大表被分到不同的分片数据库上面,每个表分片的数据库就是分片节点
节点主机(dataHost)
数据切分后,每个分片节点不一定都会独占一台机器,同一机器上可以有多个分片数据库,这样一个或多个分片节点所在机器就是节点主机,为了规避单节点主机并发数限制,尽量将读写压力高的分片节点均衡放在不同的节点主机
分片规则
一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是分片规则,数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难度。