【问题标题】:Horizontal vs Vertical Fragmentation in Distributed Database Management Systems (DDBMS)分布式数据库管理系统 (DDBMS) 中的水平与垂直碎片
【发布时间】:2011-08-12 05:51:41
【问题描述】:

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

是不是关系的外延是垂直的碎片,内涵的碎片是水平的碎片?

【问题讨论】:

    标签: database distributed fragmentation


    【解决方案1】:

    原始表格-。


    图片评论:您完全可以选择如何在每个网站上组合列。


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

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



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

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


    【讨论】:

      【解决方案2】:

      简单地说,在水平碎片中,我们将表拆分为元组,这意味着在行中表的结构保持不变,只是我们拆分了一行或两行。 在垂直分片中,我们根据属性列拆分表,我们从原始表中制作了更多表

      【讨论】:

        【解决方案3】:

        数据碎片是分布式数据库管理系统 (DDBMS) 的一个重要特性 水平分片 将表水平拆分为元组或行。例如,一个有 1000 条记录的 COMPANY 表可以水平分成十个片段,每个片段有 100 条唯一记录。

        垂直分片是将表分片成称为集合或站点的列,其中每个站点必须至少有一个共同的列,例如主键属性列(这样当碎片站点时需要可以再次使用公共列形成整个(父)表)。 例如,EMPLOYEE 表具有 ENO (PRIMARY KEY)、ENAME、ADDRESS、EMAIL 和 SALARY 等属性。将该表垂直分割为两个站点,例如站点 1 和站点 2。 site1 中的列是 ENO、ENAME 和 ADDRESS。 site2 中的列是 ENO、EMAIL 和 SALARY。

        【讨论】:

          【解决方案4】:

          Horizo​​ntal Fragmentation 按行拆分表。它与 Vertical Fragmentation 的不同之处在于键列和非键列之间的关系保持不变。表的内容因键值而异。

          水平碎片例如: 公司希望每个部门都维护自己的数据。在此示例中,每个部门的 Department 表中只有一行,其他表仅包含部门员工的数据。

          【讨论】:

            【解决方案5】:

            基本上水平碎片按行拆分表格。 在垂直分片的情况下,按列拆分表格。

            在水平碎片表中保持与以前相同。只有行是拆分的。 在 Vertical Fragmentation 中,一张表拆分为两张或多张表。

            【讨论】:

              【解决方案6】:

              假设你有一个亲戚,学生。

              您将关系 Student 分为两组(称为 set1 和 set2),这样 Student 的一半属性在 set1 中,一半在 set2 中。这称为“垂直碎片”,因为关系沿列分散(类似于垂直撕裂页面)。原始关系是通过所有集合的自然连接获得的。对于自然连接,我们需要至少一个所有集合共有的属性(通常是主键)。

              但是,如果我们的关系划分为 site1 存在行的一个子集(参见此处,所有属性都存在于行中)(例如),另一个子集存在于 site2,依此类推,这称为“水平碎片” ',原始关系是通过对所有集合进行并集得到的。这就像水平撕裂一页。

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

              【讨论】:

              • 一个出色而清晰的解释。可惜我的讲师写得不如你……
              • 我的付费讲师无法解释我 2 小时的课程。你在一分钟内就做到了(免费呵呵)。谢谢
              【解决方案7】:

              假设我们有这种关系

              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        
              

              【讨论】:

                【解决方案8】:

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

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

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

                基于应用视图的碎片化程度和正确性规则

                【讨论】:

                  【解决方案9】:

                  只有分布式数据库才需要垂直分片。假设关系 R 之一有几个属性。其中一些属性存在于 R1 中,其他属性存在于 R2 中。然后我们垂直加入页面。这称为垂直碎片。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2014-11-07
                    • 2016-05-23
                    • 2016-05-31
                    • 1970-01-01
                    • 2020-11-11
                    • 1970-01-01
                    • 2016-05-01
                    • 2019-06-25
                    相关资源
                    最近更新 更多