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

Dre*_*reX 14 database distributed fragmentation

在DDBMS的上下文中,垂直碎片水平碎片有什么区别?

对于垂直碎片而言,关系的扩展是否是碎片化的,而强度碎片是否是水平碎片?

San*_*pal 36

假设你有一个关系,学生.

您将关系Student分为两组(称为set1和set2),使得Student的一半属性在set1中,其中一半在set2中.这被称为"垂直碎片",因为关系沿着列分段(类似于垂直撕开页面).通过采用所有集合的自然连接来获得原始关系.对于自然连接,我们需要至少一个属性,这对于所有集合是通用的(通常它是主键).

但是,如果我们的关系被划分为使得行的子集(参见此处所有属性存在于行中)与site1(例如)一起出现,则另一个子集与site2一起出现,依此类推,这称为"水平分段",并且通过采用所有集合的联合来获得原始关系.这就像水平撕裂页面.

很明显,这是在分布式DBMS的上下文中.


Bik*_*net 18

说我们有这种关系

customer_id | Name | Area       | Payment Type  | Sex
      1     | Bob  | London     | Credit card   | Male
      2     | Mike | Manchester | Cash          | Male
      3     | Ruby | London     | Cash          | Female
Run Code Online (Sandbox Code Playgroud)

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

片段1

customer_id | Name | Area       | Payment Type  | Sex
      1     | Bob  | London     | Credit card   | Male
      2     | Mike | Manchester | Cash          | Male
Run Code Online (Sandbox Code Playgroud)

片段2

customer_id | Name | Area       | Payment Type  | Sex
      3     | Ruby | London     | Cash          | Female
Run Code Online (Sandbox Code Playgroud)

垂直碎片是属性的子集

片段1

customer_id | Name | Area       | Sex
      1     | Bob  | London     | Male
      2     | Mike | Manchester | Male
      3     | Ruby | London     Female
Run Code Online (Sandbox Code Playgroud)

片段2

customer_id | Payment Type
      1     | Credit card 
      2     | Cash        
      3     | Cash        
Run Code Online (Sandbox Code Playgroud)


Seb*_*sen 6

原表-. 在此输入图像描述


在此输入图像描述

图片评论:完全由您选择如何在每个站点组装柱子。


  1. 按属性(垂直)拆分原始表。
  2. 按照您喜欢的方式将这些片段分发到 DDBMS 的站点,然后重新组装它们。

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


在此输入图像描述


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

  2. 按照您喜欢的方式将这些片段分发到 DDBMS 的站点,然后重新组装它们。