数据库知识点iOS数据库相关大数据 爬虫Python AI Sql

数据库课程之分布式数据库设计(二)

2018-03-26  本文已影响121人  ZhengYaWei

前言

在第一篇文章中,笔者又做了一些补充。因为补充内容属于该课程第一章节的内容。此后笔者文章的更新主要会以完整章节为主,而不是上一次课更新一次。这篇文章将主要是记录分布式数据库系统的设计课程总结,也就是该门课程的第二章。该门课程主要分为三个部分,第一部分主要介绍一些基础概念(也就是第一篇文章),第二部分主要是讲分布式数据库系统的设计(也就是该篇文章,实际课程中只占据一个章节),第三部分主要讲数据库管理系统中的一些技术实现要点。第三部分是该门课程的重点,占到百分之八十左右。

一、分布式数据库系统创建方法

分布式数据库系统有两种创建方法,即自底向上的组合法和重构法。

二、分布式数据库系统设计目标

分布式数据库系统设计的目标除包括集中式数据库设计中的目标外,还要包括如下加点:

三、分布式数据系统设计内容

分布式数据库系统的设计主要包含两个方面:应用(功能)设计和数据库设计。基于应用需求的考虑(1、应用的原发站点;2、应用在站点被激活的频率;3、应用对数据对象的访问次数、类型和统计分布),其中数据库的设计主要包含两个方面。

四、自顶向下设计DDB

4.1 数据库的分片设计

4.1.1 分片设计的目的

片段是指数据在各站点上分配和存储的逻辑单位。分片设计的基本目的是产生一个对全局数据核实的划分方案。使用这种方案得到的片段,不但能够减少应用中的操作量,而且能够对于应用具有最大可能的本地性(即个片段位于其使用最多的站点上)。

4.1.2 分片原则
4.1.3 分片方式

在第一篇文章中就有简单讲到几种分片方式,这里再进一步说明,并补充诱导分片方式。

自然连接的个数为:R和S中公共属性做组合(c)的结果。如下图,R中有 2 个 c1 和 1 个 c2,S中有 1 个 c1 和一个 c2 ,所以2 x 1 + 1 x 1 = 3。

另外,还要知道下图中,∝:表示半连接 ∞:表示自然连接。πr表示取R表的映射,即取R表中包含的属性A、B、C。如果是πs则表示取S表的映射,即取S表中包含的属性C、D。


下面两个等式均是说明自然连接和半连接之间的关系。等式的左边都是半连接,等式的右边是对自然连接做了一些转化,转化成半连接。

4.2 数据库片段的位置分配设计

4.2.1 数据片段位置分配的方法

数据库片段的位置分配方法概括来说主要有两种非冗余分配法冗余分配法

4.2.2 分配的费用和收益的估算
在说估算之前,请先了解下列各个变量所代表的含义。下面的各种计算基本都是基于这些变量来建立的。 变量含义说明

(1)水平分片估算

五、DADAID-D方法


DADAID-D 是作为集中式数据库设计 DADAID-1 方法论的扩充而构造的,后者分成四个阶段: 需求分析、概念设计、逻辑设计和物理设计。DADAID-D 要求对其增加两个阶段:分布分析阶段和分布设计阶段。DADAID-D 方法的分布式数据库设计步骤如上图。

上图中的概念设计,是指在需求分析的基础上,用统一的方法或建模语言设计出来基本概念,进一步得到全局数据模式和全局操作模式,该步骤无需考虑计算机中相关实现细节。概念设计常用的工具是 E-R 图。另外还要知道,从需求分析到概念设计这个过程需要人的主观能动性。上图中的逻辑设计具体是指将概念设计得到的结果用计算机的形式实现。

分布要求分析的目的是收集以后用于推动分布设计所需要的信息。这一阶段的输入是对用户分布的要求和全局数据概念模式与操作模式。输入是三种类型的表:

DADAID-D 方法中分布设计分为四个阶段:分片设计、非冗余分配、冗余分配、局部模式重构。其中非冗余分配和冗余分配也可以统称为分配设计。关于分片设计和分配设计就不在重述,前文中已经写到。这里只简单说下局部模式重构。局部模式重构是指重新构造分配到各站点的片段的局部模式。比如:假设 f1 被分为 f11和 f12 ,分别放在 1 和 2 站点上。 其中 2 站点上还有 f2 ,f2 没有做分片处理,f2 和 f12 做关系重构的话,则 f11 和 f2 也要做关系匹配(f11 和 f2不在同一站点上,所以实现起相对比较麻烦)。

六、分布式数据库设计实际案例简单分析

下面将结合一个简化的飞机订票系统案例,按照DADAID-D 方法分析其大概实现过程以及相关细节实现方案原因。

6.1 案例介绍

假设订票系统维护在一个数据库,该数据库分布在三个站点(即三个机场1、2、3)。数据库存储机场规程、班机起降和旅客订票等数据。按照该案例额,可以很容易找到三个实体对象即机场、班机和旅客。他们分别带有的基本属性如下:

6.2 全局概念模式E-R图(概念设计)

按照三个实体对象和三个应用(订票、登记、起飞)可以得出如下全局概念模式 E-R 图。


6.3 全局操作模式(概念设计输出)

全局操作模式是指应用的全局操作的模式。这里针对三个应用即订票、登记、起飞具体操作模式将做进一步介绍。下图中的 k 表示属性,表示他们被用作访问数据的关键词;“o, w”中,o表示输出,w表示写入。

6.3.1 订票

用于旅客预订机票操作。


6.3.2 登记

用于旅客登机登记任务。依旅客姓名、班机号、日期确定旅客和班机,找出票 的种类、座位图,更新座位图,创建“登记”实例( 座位号、行李号)。


6.3.3 起飞

显示即将从一个机场起飞的 30 个班机信息。


6.4 创建逻辑访问表

基于上述全局操作模式分析,对每个实体,估算应用的定量数据,建立逻辑访问表。表中的列对应于操作,行对应于书体属性。

6.5 全局关系数据模式(概念设计输出)

针对上述分析这里可以得出七个对象(三个实物和三个操作),其中登记操作又进一步细化得到两个操作。

  1. 机场(符号,区域,城市,安全规则)
  2. 班机(机号,日期,可用座位,座位图,登机口
    延期)
  3. 旅客(名字,电话)
  4. 从(机号,日期,符号,起飞时间)
  5. 到(机号,日期,符号,到达时间)
  6. 订票(名字,机号,日期,种类)
  7. 登记(名字,机号,日期,座位号,行李)

6.6 分布要求分析

6.6.1 频率表

频率表给出各个应用在三个站点上使用的频 37 率(激活的次数)。


6.6.2 划分表

划分表给出各个实体的各种可能分片的方式。

6.6.3 极化表

极化表给出从一个站点发出的一个应用访问分布式数据库某片段的概率。


极化表

6.7 分布设计

6.7.1 分片设计

这里的分片设计主要是为各个实体选择合适的分片原则。

垂直划分对本案例无用。这是因为三个站点的业务都是完全一样的,所以所需要的数据也都是一致的。如果三个站点的应用不一样,所需要的数据也不一样,各个应用可能会使用到实体对象的不同属性,此种情况下应该考虑使用垂直分片方式。

基于上述的分布要求分析,可以得到各个实体(机场、班机、旅客)的水平分片方式:

• “机场”基于所在区域做水平分片(片段:机场1,机场2,机场3)
• “班机”基于起飞机场所在区域做诱导分片(片段:班机1,班机2,班机3)
• “旅客”基于旅客订票涉及的所有班机起飞 区域做诱导分(片段:旅客1,旅客2,旅客 3,......,旅客7)

6.7.2 非冗余分配

参照上述 6.6.1 的频率表和 6.6.3 的极化表,分配 “旅客4”,“旅客5”,“旅客6”,“旅客7”。至于为何要如此分配做一个简单的计算便可清晰看出。可以结合 4.2.2 节中的最佳适应法做收益计算,下面的计算就拿机场片段 P1 分别在三个站点上的收益比较来计算分析。
P1分布在站点 1 的收益为:

B1 = 10000 * 80  + 8000 * 0 + 100 * 100 = 810000

P1分布在站点 2 的收益为:

B2 = 20000 * 20  + 12000 * 0 + 120 * 0 = 400000 

P1分布在站点 3 的收益为

B3 = 10000 * 10  + 8000 * 0 + 100 * 0 = 100000 

结合上述计算,显而易见,机场片段 P1 分布在站点 1 上收益最大、最为合理。同理,无论是班机片段,还是旅客片段都是按照上述同样的方式计算得出。

另外,从 6.6.1 的频率表可以看出,站点 2 的客流量明显比站点 1 和 3 大,所以多数旅客片段(旅客4,旅客6,旅客)分配在站点 2 上,这一点也是合情合理的。

6.7.3 冗余分配(对旅客实施)

许多情形中,与冗余有关的代价超出了同一实体所有片段的效益,机场和班机就是此种情况,所以机场、班机不做冗余分配,都只存储在一个站点上;旅客 4、5、6 分别有两个副本,分配到起飞机场所在的站点上; 旅客 7 有三个副本,分配到所有站点。

6.7.4 局部模式重构

重构分配到各站点的片段的局部模式,重点解决 “联 系”的分配。


七、自底向上设计DDB

通常把现有数据库继承起来构成分布式数据库时,可采用自底向上的方法。该方法重点是把现有的各种不同的数据库模式集成为全局模式。模式集成过程中主要是应用继承的思想,抽离出公共部分。然后针对不同数据库分别创建子类。

注意,自底向上的设计方法不宜于水平关系的设计。同一个全局关系的各个水平分片必须具有相同的关系模式,这一要求在自顶向下的设计方法中很容易实现。但是,自底向上的设计方法是先独立地设计各个数据库,然后再把他们集成起来,这种情况下很难发现这个特点。因为水平分片是分布式数据库设计中一个重要且很有用的特点,所以在继承过程中应该设法下盖本地关系的定义,这样就可以把这些本地关系看成是一公共全局关系的水平分片。

把现有数据库继承为一个分布式数据库时,原有的数据库很可能用不同的 DBMS ,这将构成易购系统,增加数据集成的复杂性。在集成时可以在每对不同的DBMS之间进行一对一的翻译,但通常情况下并不是如此做。而是选择一公共数据模型,然后再把设计这个 DBMS 的所有不同模式都翻译成这种唯一的表示方法。

综上所述,自底向上的设计方法中需重点解决三个问题:

小结

本文介绍了数据库系统设计中的基本概念、方法、目标和设计内容。设计方法有自顶向下和自底向上,其中重点讲了自顶向下的DADAID-D方法。并结合简化版的飞机订票系统案例说明分布式数据库自顶向下的DADAID-D设计方法。另外,在第四节(自顶向下设计DDB)中,重点分析了数据库片段分配的费用和收益的估算,该部分内容在数据库设计中比较重要,应结合飞机订票系统案例重点理解。

上一篇 下一篇

猜你喜欢

热点阅读