分布式数据库管理系统(DDBMS)中的水平分割与垂直分割

20

在DDBMS的背景下,垂直分片水平分片有什么区别?

是这样吗,对于垂直分片,关系扩展被分片,而对于水平分片,关系内涵被分片?

9个回答

47
假设你有一个关系,名为“学生”(Student)。
你将关系“学生”分成两个集合(称之为set1和set2),使得“学生”的一半属性位于set1中,另一半属性位于set2中。这被称为“垂直分片”,因为关系是沿着列分裂的(类似于垂直地撕开一页)。原始关系是通过对所有集合进行自然连接而获得的。对于自然连接,我们需要至少一个属性是所有集合共有的(通常是主键)。
但是,如果我们的关系被分成若干子集(在这里所有属性都存在于行中),其中site1有一个子集,site2有另一个子集,以此类推,则称为“水平分片”,原始关系是通过取所有集合的并集来获得的。就像水平地撕开一页一样。
显然,这是在分布式数据库管理系统的背景下。

1
一个优秀而清晰的解释。只可惜我的讲师写作能力远不如你... - Frederik
1
我的付费讲师无法在两个小时的课程中向我解释清楚。你只用了一分钟(免费的呵呵),谢谢。 - Umair Ayub

24

假设我们有这个关系:

customer_id | Name | Area       | Payment Type  | Sex
      1     | Bob  | London     | Credit card   | Male
      2     | Mike | Manchester | Cash          | Male
      3     | Ruby | London     | Cash          | Female

水平分片是元组(行)的子集

片段1

customer_id | Name | Area       | Payment Type  | Sex
      1     | Bob  | London     | Credit card   | Male
      2     | Mike | Manchester | Cash          | Male

片段2

customer_id | Name | Area       | Payment Type  | Sex
      3     | Ruby | London     | Cash          | Female

垂直分片是属性的子集

片段1

customer_id | Name | Area       | Sex
      1     | Bob  | London     | Male
      2     | Mike | Manchester | Male
      3     | Ruby | London     Female

片段 2

customer_id | Payment Type
      1     | Credit card 
      2     | Cash        
      3     | Cash        

6

原始表格-. enter image description here


enter image description here

图像说明: 每个网站如何组装列完全由您决定。


  1. 按属性(垂直)拆分原始表格。
  2. 将这些部分分配到你的分布式数据库管理系统的不同站点,然后重新组装它们。

    (通常希望将主键列包含在每个片段中,以便在需要时可以获得原始表格)。


enter image description here


  1. 按行(水平)拆分原始表格。

  2. 将这些部分分配到你的分布式数据库管理系统的不同站点,然后重新组装它们。



2
数据分片是分布式数据库管理系统(DDBMS)的重要特性。 水平分片是将表水平分割成元组或行。例如,一个包含1000个记录的公司表可以被水平分割成十个碎片,每个碎片有100个唯一的记录。 垂直分片是将表分割成列,称为集合或站点,其中每个站点必须至少有一个共同的列,如主键属性列(以便在需要时可以使用共同的列重新形成碎片化的站点到整个(父)表)。例如,员工表具有ENO(主键)、ENAME、ADDRESS、EMAIL和SALARY等属性。将此表垂直分割成两个站点,如site1和site2。Site1中的列是ENO、ENAME和ADDRESS。Site2中的列是ENO、EMAIL和SALARY。

2

垂直分片仅适用于分布式数据库。假设关系R有多个属性,其中一些属性包含在R1中,其他属性包含在R2中。然后我们进行垂直分片。这被称为垂直分片。


1

水平分割将关系划分为称为行的元组。

垂直分割将关系划分为称为列的属性。

根据我们的应用程序视图要求,我们可以将关系分解为水平或垂直。

分解程度和正确性规则基于应用程序视图。


1
基本上,水平分割按行拆分表格。 在垂直分割的情况下,表格按列拆分。
在水平分割中,表格保持与之前相同。只有行被拆分。 在垂直分割中,一个表格拆分成两个或更多的表格。

0

水平分片按行拆分表格。它与垂直分片不同之处在于关键列和非关键列之间的关系保持不变。表格的内容根据关键值而异。

例如,水平分片: 公司希望每个部门都维护自己的数据。在这个例子中,每个部门的“部门”表中只有一行,其他表格仅包含该部门员工的数据。


0

简单来说,在水平分片中,我们将表格拆分成元组,也就是按行拆分,表格的结构保持不变,只是拆分了一行或两行。 在垂直分片中,我们根据属性列拆分表格,从原始表格中创建更多的表格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接