分布式数据库中间件概念
从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成了整个完整的数据库存储。面对分片集群,数据源切换,事务处理,数据聚合等,是否需要应用程序直接处理这些呢?答案肯定是否定的,这就是数据库中间件存在的原因,把这些统统都交给中间件,应用只专注于业务就行了。 那么应用程序怎么访问数据库中间件呢?和直接访问数据库有什么区别? 通常应用程序不需要知道中间件的存在,业务开发人员只需要知道数据库的概念,所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库。对应用来说,逻辑库中读写数据的表就是逻辑表。逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成。 分片表: 是指那些原有的很大数据的表,需要切分到多个数据库的表,这样,每个分片都有一部分数据,所有分片构成了完整的数据。 非分片表: 是对应于分片表而言的,某些表示可以不用进行切分的。 ER表: 关系型数据库是基于实体关系模型之上,通过其描述了真实世界中事物与关系,Mycat中ER表即使来源于此。根据这一思路,提出了基于ER关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据Join不会跨库操作。 表分组(Table Group)是解决跨分片数据join的一种很好的思路,也是数据切分规则的重要一条规则。