首页 理论教育分布式数据库技术:垂直分片实例与规则分析

分布式数据库技术:垂直分片实例与规则分析

【摘要】:有数据水平分片,自然就有数据垂直分片。实际上,投影操作就是一种数据垂直分割操作。第一个垂直数据片由原关系的如下属性构成:sno,name,birthday,birthplace,sex第二个垂直数据片由原关系的如下属性构成:sno,dno,class,credit,entry_date下面分析这种分片是否满足我们要求的规则。

有数据水平分片,自然就有数据垂直分片。

如果把一个关系看成一张二维表格,那么可以把数据的水平分片看成是将这张表格垂直分割。实际上,投影操作就是一种数据垂直分割操作。

下面来看一个全局关系,即“学生”关系Student:

Student(#sno,name,birthday,birthplace,sex,dno,class,credit,entry_date)

这些属性的含义分别是:sno(学号)、name(姓名)、birthday(出生日期)、birthplace(出生地)、sex(性别)、dno(系别)、class(班级)、credit(累计学分)和entry_date(入学时间)。

所以,垂直分片就如下所示:

Student1sno,name,birthday,birthplace,sex Student和Student2sno,dno,class,credit,entry_date Student

这里使用投影操作,一个雇员Student分成以下两个数据片。

第一个垂直数据片由原关系的如下属性构成:

sno,name,birthday,birthplace,sex

第二个垂直数据片由原关系的如下属性构成:

sno,dno,class,credit,entry_date

下面分析这种分片是否满足我们要求的规则。

1.可重构性(www.chuimin.cn)

垂直数据片重构成全局关系,可以借助连接运算:

Student=Student1 JNsno=sno Student2

2.不相交性

值得注意的是,以上两个垂直数据片中有属性(sno)是重复的,这是为了重构时连接运算的需要,所以垂直水平分片时对不相交性的要求可稍弱些。

3.完整性

A 1∪A 2=A,这里:

A是Student的属性集;A 1是Student1的属性集;A 2是Student2的属性集。

下面再来看一个例子,如果把学生关系按如下方式分片:

Student1sno,name,birthday,birthplace,sex Student

Student2sno,name,dno,class,credit,entry_date Student

可以看出,除sno外,name也在这两个垂直数据片中重复,重复的原因是便于应用,因为应用中要求告诉我们学生的姓名,这样,若每个数据片中都有name属性的话,那么很多应用问题可以在一个数据片中解决。

其实,如果将垂直分片做到极致,一个列(属性)就是一个数据片,就变成NoSQL数据库中的列存储数据库。