670 likes | 766 Views
分布式数据库系统概述. 分布式数据库系统的由来. 数据库应用需求的拓展 计算机硬件环境的改变 计算机网络与数字通信的飞速发展,卫星通信,蜂窝通信,计算机局域网,广域网,激增的 Intranet 及 Internet 得到了广泛应用. 分布式数据库系统的发展. 数据库系统与计算机网络系统相结合的产物 ★ 20 世纪 70 年代末进入成长阶段 例如:德国斯图加特大学研制的 POREL 系统等 ★ 20 世纪 90 年代进入商品化应用阶段
E N D
分布式数据库系统的由来 • 数据库应用需求的拓展 • 计算机硬件环境的改变 • 计算机网络与数字通信的飞速发展,卫星通信,蜂窝通信,计算机局域网,广域网,激增的Intranet及Internet得到了广泛应用
分布式数据库系统的发展 数据库系统与计算机网络系统相结合的产物 ★20世纪70年代末进入成长阶段 例如:德国斯图加特大学研制的POREL系统等 ★20世纪90年代进入商品化应用阶段 一些商品化数据库系统产品如:Oracle,Ingres,Sybase,Informix,IBM DB2 大都提供对分布式数据库的支持
银行的电子资金转移系统。假定一个分布式系统由三个节点组成,分别分布在北京,上海,成都 ,其中不同区域的帐户记录保存在各自地区的数据库中,它们通过通信网络连接在一起,构成 个统一的分布式数据库。在这样的系统中任意一个节点可以存取该节点的帐户,称做局部查询,同时也可以存取另一个节点的帐户,称做远程查询。 • 分布式数据库的一个主要的功能就是给用户提供进行复杂查询的操作,使用户就像在一个单一的数据库上操作一样。
什么是分布式数据库系统? • 物理上分散而逻辑上集中的数据库系统 • 使用计算机网络将物理位置分散而管理和控制又需要不同程度集中的多个逻辑单位连接起来,共同组成一个统一的数据库系统 站点,场地,结点
特点 ◆物理分布性 分散存储在多个站点,用户感觉不到分散 ◆逻辑整体性 分散的数据逻辑上构成一个整体,可被全局用户共享 ◆站点自治性 各个站点上的数据由本地DBMS管理,具有自治处理能力,完成本站点的应用。
其他特点 • 数据分布透明性 • 集中与自治相结合的控制机制 • 存在适当的数据冗余度 • 事务管理的分布性
分布式数据库系统分类 • 按局部数据库管理系统的数据模型分类 同构同质型 同构型DDBS 同构异质型 异构型DDBS
按分布式数据库系统的全局控制系统类型 全局控制集中型DDBS 全局控制分散型DDBS 全局控制可变型DDBS
分布式数据库系统的体系结构 • 数据库分为局部DB和全局DB • 数据库管理系统分为局部DBMS和全局DBMS • 数据库管理员分为局部DBA和全局DBA
组成成分 • 应用数据库:应用所需要的数据的集合 • 描述数据库:关于数据库中数据结构的定义及全局数据的分片,分布的描述(数据字典,数据目录,元数据)
数据分片 • 将全局数据库进行逻辑分割 • 分片方法 (1)水平分片 (2)垂直分片 (3)混合分片
关系S(S#,SNAME,AGE,SEX) 定义关系S的两个水平分片 DEFINE FRAGMENT SHF1 AS SELECT * FROM S WHERE SEX=’M’ DEFINE FRAGMENT SHF2 AS SELECT * FROM S WHERE SEX=’F’
关系S(S#,SNAME,AGE,SEX) 定义关系S的两个垂直分片 DEFINE FRAGMENT SVF1 AS SELECT S#,AGE,SEX FROM S DEFINE FRAGMENT SVF2 AS SELECT S#,SNAME FROM S 全局关系的每个属性至少影射到一个垂直片段中,且每个垂直片段都包含该全局关系的键
关系S(S#,SNAME,AGE,SEX) 定义关系S的两个混合分片 DEFINE FRAGMENT SF1 AS SELECT S#,SNAME FROM SHF1 DEFINE FRAGMENT SF2 AS SELECT * FROM SVF1 WHERESEX=‘M’
分片遵循规则 • 完备性条件 • 可重构条件 • 不相交条件
数据的分布 分布式数据库中的数据不是存储在一个站点的计算机存储设备上,而是根据需要将数据划分成逻辑片段,按某种策略将这些片段分散地存储在各个站点上。 数据分布的策略有: • 集中式 • 分割式 • 复制式 • 混合式
四层模式结构 • 全局外层:全局外模式 • 全局概念层:全局概念模式,分片模式,分配模式 • 局部概念层:局部概念模式 • 局部内层:局部内模式
全局外模式 • 是全局应用的用户视图,也称全局视图 • 是从一个由各局部数据库组成的逻辑集合中抽取,即全局外模式是全局概念模式的子集。
全局概念模式 • 描述分布式数据库中全局数据的逻辑结构 • 如果采用关系数据模型,则 • 包括一组全局关系的定义(如关系名、关系中的属性、每一属性的数据类型和长度等等) • 完整性定义(关系的主键、外键及完整性其他约束条件等)
分片模式 • 描述全局数据的逻辑划分 • 描述数据分片或定义片段,以及全局关系与片段之间的映象 • 这种映象是一对多的。即一个全局关系可对应多个片段,而一个片段只能来自一个全局关系。
分配模式 • 根据选定的数据分布策略,定义各片段的物理存放站点。即定义片段映象的类型,确定分布式数据库是冗余的还是非冗余的,以及冗余的程度。 • 如果一个片段分配在多个站点上,则片段的映象是一对多的,分布式数据库是冗余的。
局部概念模式 • 一个全局概念模式经逻辑划分成一个或多个逻辑片段,每个逻辑片段被分配在一个或多个站点上,称为该逻辑片段在某站点上的物理映象或称物理片段 • 对每个站点来说,在该站点上全部物理映象的集合称为该站点上的局部概念模式
局部内模式 • 分布式数据库中关于物理数据库的描述 • 描述的内容不仅包含只局部于本站点的数据的存储描述,还包括全局数据在本站点的存储描述
DDBMS的功能结构 除提供集中式DBMS提供的功能还有: • 数据跟踪 • 分布式查询处理 • 分布式事务管理 • 复制数据的管理 • 安全性 • 分布式目录管理
DDBMS的功能模块 • 查询处理模块 • 完整性处理模块 • 调度处理模块 • 可靠性处理模块
介绍DDBMS的一种参考模型 • 主要成分是处理器和模式 • 处理器 • 模式
用户处理器 • 它把数据操纵语言中的用户命令,翻译成为规范化命令 • 它把来自数据处理器的数据,翻译成用户理解的格式
用户处理器提供的功能 • 数据模型独立性 • 语义完整性约束
数据处理器 • 数据处理器负责存取数据库的数据,它主要包括规范化命令翻译器、规范化结果格式器和运行时支持处理器
数据处理器提供的功能 数据处理器支持集中式和分布式DBMS共同要求: • 程序与数据的独立性 • 并发独立性 • 事务的原子性 运行时支持处理器
模式层次 • 数据库的三级模式 • 一个或几个外部模式:每个外部模式包含了数据库的一部分的描述,供用户使用 • 概念模式:包含了整个数据库的逻辑描述,供数据库管理员和用户使用 • 内部模式:包含了物理数据结构的描述,表示物理数据的存放位置和格式 • 数据库管理员使用内部模式来调整数据库以提高其执行效率 • 这三个模式以及它们之间的映射,指导着各个处理器执行各自的任务
全局数据库控制及通信子系统 负责通信和控制分布式的执行 • 分解器(分布式执行策略) • 合并器 • 分布式执行监视器(事务原子性,复制独立性,分布式并发控制) • 通信子系统 • 本地执行监视器
本地模式 全局模式 • 要与其他站点共享数据的每个站点具有一个或几个本地模式。本地模式描述了站点中可由某类用户访问的数据子集,每个站点的DBA通过建立本地模式来控制谁可以访问本地的数据。不同类型的用户使用同一数据的不同子集可以用不同的本地模式来描述。 • 允许用户访问数据的每个站点包含一个或多个全局模式。全局模式描述了用户可从一个或多个站点访问的数据。在一个站点中,可以存在几个不同的全局模式,每个对应于一类用户 • 这种方法非常灵活,因为它可以允许一类用户访问全部数据,也可以允许几类用户访问数据的不同子集。 • 还提供了高度的可靠性,这就是说,如果某个站点出了故障.只有该站点的本地模式所描述的数据不可使用,不会影响其他站点的继续使用。
分布式数据库系统数据的独立性 • 用户或用户程序使用分布式数据库,不必关心全局数据的分布情况.包括全局数据的逻辑分片情况、逻辑片段的站点位置分配情况。也称为分布透明性。 • 分布透明性包括三个层次: • 分片透明性 • 位置透明性 • 局部数据模型透明性
分布式数据库简单查询与分布透明性 • 例子:全局关系SUPPLIER(SNO,SNAME,CITY)被划分为两个逻辑片段S1和S2,,S1存放在站点L1上。片断S2有一个副本,分别存放在站点L2和站点L3上。现编写一个名为SUPQUIRY的简单查询应用程序.它将从终端接受一个供应商号,查询该供应商号相应的供应商名,将它显示在屏幕上.
Read(teminal,$SNO); Select SNAME into $SNAME From SUPQUIRY Where SNO= $SNO; Write(terminal, $SNAME ); (a)分段透明性(级别1) SUPPLIER1 DDBMS SUPPLIER2 SUPPLIER2 分片透明性不同级别下的只读应用I 站点1 站点2 站点3
Read(teminal,$SNO); Select SNAME into $SNAME From SUPQUIRY1 Where SNO= $SNO; If not #FOUND then Select SNAME into $SNAME From SUPQUIRY2 Where SNO= $SNO; Write(terminal, $SNAME ); (b)位置透明性(级别2) SUPPLIER1 DDBMS SUPPLIER2 SUPPLIER2 分片透明性不同级别下的只读应用II 站点1 站点2 站点3
SUPPLIER1 DDBMS SUPPLIER2 分片透明性不同级别下的只读应用III • Read(teminal,$SNO); • Select SNAME into $SNAME From SUPQUIRY1 AT SITE1 Where SNO= $SNO; • If not #FOUND then • Select SNAME into $SNAME From SUPQUIRY2 AT SITE3 Where SNO= $SNO; • Write(terminal, $SNAME ); (c) 本地映射透明性(级别3) 站点1 站点3