高级数据库技术
(一)引言
数据库系统的发展起始于19世纪60年代,从IBM的层次模型IMS、网状模型、关系模型,发展到多数模型共存的(同构和异构及其混合的形式共存的现状)。尤其是三位在数据库领域获得图灵奖的得主,查尔斯.巴赫曼,埃德加.科德和詹姆斯.格雷三人所对于数据库发展的贡献。尤其是科德在1970年发表的“大型共享数据库的关系数据模型”奠定了关系型数据库的基础。随着科学技术的发展,各个行业的需求对于数据库的要求产生了巨大的推动力,使得数据库和分布式技术、并行计算技术、人工智能等进行有效的结合,而产生很多新的数据库技术。而分布式数据库技术则起源于上世纪70年代中期。推动其发展的两个原因是:一,应用的需求;二硬件环境的发展。这种涉及到多个地域分布的企业和组织机构的业务不仅仅包含局部管理,同时对于全局的调度和管理也有很高的要求,而集中式数据库则不能满足企业的这种需要。同时在与硬件环境上,快速发展的互联网和计算机技术。正是由于这两方面的原因,一种对于可以分布于不同物理地址、符合现实需要、又具备计算机数据库要求的系统出现成为了人们的渴望。
于是从那时开始对于分布式数据库系统的研究和开发便纷纷开始。最早的系统有美国的SDD-1(CCA公司开发),IBM公司的R分布式数据库系统,伯克利分校的INGRES系统等等。同时随着技术的发展,商业数据库ORACKE、Sybase、DB2等也开始着手引入分布式数据库的技术,他们都支持基于组件和中间件的松散耦合事务管理机制来实现分布式数据库的管理,具有高灵活性和可扩展性的优点,并且将替代传统分布式中紧耦合性事务管理的机制。
近年来,随着Internet和WEB的蓬勃发展,WEB系统下的分布式系统已成为主流,并且随着云计算、物联网等新兴技术的发展,更加突出分布式数据库技术的重要地位。分布式数据处理是该系统中必不可少的重要组成部分,它涉及到数据的分布式存储管理、分布式数据的查询与优化、分布式事务管理、故障恢复,以及并发控制等内容。
这里主要介绍分布式数据库系统的概念和特性,以及分布式数据库系统的作用和特点。这是第一部分内容。第二部分讲述分布式数据库系统的结构。第三部分讲述分布式数据库系统的设计方法,其中包括分片和分配的设计(以下内容在第二篇文章中介绍)。第四部分讲解分布式查询优化技术,包括查询分解到查询局部化,再到全局的查询存储优化,最后是局部的查询优化等内容。第五部分则是分布式事务管理技术和分布式恢复及并发控制,事务管理包含事务的概念,事务的实现模型,执行管理的模型等。分布式恢复则是对于故障、恢复的方法、及可靠的协议的讲述,其中会结合到集中式数据库的内容。然后是并发控制,包含并发控制的概念,并发控制的方法,关于锁的讲解,及死锁的管理等等。
(二)关系数据库
科德在1970年发表的“大型共享数据库的关系数据模型”奠定了关系型数据库的基础。虽然当时科德在其公司发表的该论文没有引起重视,但随后当该论文在国际会议上引起共鸣时,关系数据库就已经奠定了其重要地位。Oracle则应势而起。
关于数据模型主要包括三部分:数据结构、数据操作、完整性约束。数据结构主要有:层次模型、网状模型、关系模型等。而关系模型我们又可以叫做二维表结构,或者是关系实体模型,其实他们都是等价的。现在的数据库好多都是这种多模型共存的异构网络。
此次在数据操作上则有关于关系代数,关系演算、SQL语言等。关系代数则是数据库系统的内部语言,SQL则是结构化查询语言,是数据库外部语言,即查询语句。关系演算则是一个类似于形式化的表达方式。
在数据完整性约束则有实体完整性、参照完整性、用户自定义完整性。实体完整性则是实体的主键不为空;参照完整性则是从表中外键引用主表中主键,主从表必须一致于主表属性;用户自定义完整性则是用户自己定义的约束,如默认属性值等。同时在设计数据库是还有一些范式需要进行考虑,有1NF,2NF,3NF,BCGA,5NF等等,1NF是实体完整性,不可再分。2NF消除实体内部分依赖。3NF则是消除依赖传递问题。当然设计一般满足3范式即可,同时也需要根据实际情况考虑,正所谓水无常态,火无常形,有些时候存在一些适当冗余也是可以的。当然随着设备性能和技术发展,未来也许会满足4范式、5范式的要求。这就是规范化的理论。
对于关系数据库,它的结构和分布式数据库架构有所不同,它是三层模式,两层映射。对应于图1,上层是多个子模式,可以对应与全局外模式,然后是子模式到模式的映像,接着是(全局)模式,在到内模式的映像,最后是(局部)内模式。当然这没有全局和局部之分,因为他们都是集中式数据库,分布于一个物理站点,当其发展到分布式数据库时,这就变成了四层模式三层映射。
关于对于数据库的设计我们一般都是遵循着从需求分析,到概要设计(得到ER模型),再到逻辑设计(构建数据模型),再到物理设计(生成对应于特定数据库中表),最后实施阶段。因此在这一过程中我们要灵活运用设计经验和规范化理论的内容,做到有的放矢。
同时对于集中式数据库当然也涉及到查询优化、故障恢复、并发控制等内容。集中式的这些内容对于分布式数据库的局部DB,也就是单个站点上的处理是类似的,同时也有一些分布式所特有的不同之处,这在分布式讲解中会谈到。
(三)分布式数据库系统
分布式数据库系统是应应用需求和硬件的环境发展而发展起来的。相对于集中式数据库系统有很大的不同,首先在其概念上,它是物理上分布于不同站点,逻辑上集中管理,通过计算机网络将其直接连接到一起的系统,屏蔽了物理分布的特性(分布透明性),感觉不到异地的差异,实现无缝连接。同时对于分布式数据库系统实行集中管理和局部控制分散管理相结合的方式。本地数据本地保存及维护,同时又可以存取异地的数据,异地数据有全局管理(协调者)全局控制。从定义我们可以看出,一个分布式数据库系统应该具有的特点是一下几个方面:
(1) 物理分布性,分散在多个场地,这是与集中式数据库的最大差别;
(2) 逻辑上的整体性,这边要求对于物理分布要透明,这与分散式数据库是一种巨大的差别,这其中有全局数据库GDB和局部数据库LDB,他们分别对应于GDBMS和LDBMS;
(3) 站点的自治性,这具有自治系统的特点,具有智能的,它与多处理及系统的调度安排是不同的。
跟对于物理分布性和逻辑整体性我们也可以得出关于分布式数据库的一些细微的特征:
(1) 数据对于各个站点是透明的,这包括数据分片透明、数据复制透明、数据位置的透明;
(2) 集中与自治的结合的策略;
(3) 适当的冗余,这虽然会容易造成数据的不一致性,但是对于分布式用户查询和检索速度会提高,提高系统性能和可靠性可用性,但不利于数据的更新;
(4) 事务管理上的分布性。
对于分布式数据库的类型,按照局部数据库管理系统的数据模型可以分为同构性和异构性,当然同构型又可以再分。这也是多种集中式数据库数据模型和不同厂商开发产品不同的一种结果。但按全局控制系统的类型又可以分为:全局集中控制型、全局控制分散型、全局控制可变型(又有主从之分)。这种分类主要是由于全局控制的分布不同而形成的。
当然分布式系统中关键技术如数据库的设计(分片和分配涉及等)、查询优化、事务和并发控制(故障恢复)、安全性等等都是其关键。这是由于这些,分布式展现出独特的优势:
(1) 适合分布式管理,有效提高系统性能;
(2) 经济灵活性好;
(3) 系统可靠和可用性强。
同时分布式系统也存在一些缺点:
(1) 系统设计复杂,分片和分配、系统性能、响应速度、可用性都会彼此受到影响。尤其分布式事务管理,故障恢复,并发控制仍然是复杂的;
(2) 系统处理和维护复杂,尤其是数据的一致性,这更需要事务和故障方面的处理;
(3) 数据库安全和保密性难于控制,因为分布式特性和自治性,不同场地的处理可能不同等等。
(四) 分布式数据库系统结构
4.1
体系结构是规范系统的指南。通常我们可以用三种不同的角度来描述一个系统的体系结构,分别是基于层次的结构、基于组件结构和基于数据模式结构的描述方法。基于层次的结构从系统不同层次上的功能对于系统进行描述;基于组件的描述则是从构成系统的组件及组件间的关系描述;基于数据模式的结构描述从定义不同的数据类型结构及其关系,定义不同视图提供给相应的组件使用。而基于数据模式的结构非常适用于数据库的架构。
基于层次的描述可以使客户端/服务器的描述,可以也是基于“中间件”的客户端/服务器结构,图2是基于客户端和服务器的描述形式图。
AP为应用处理器,完成客户端的用户查询处理和分布式数据处理的软件模块。DP为数据处理器,复杂进行数据管理的软件模块。CM为通信处理器,负责为AP和DP在多个场地间传递命令和数据。可以看出对于C/S结构可以分为单AP/DP,和多AP/DP,单AP/多DP,多AP/多DP等等结构。这是根据服务器和客户端的这种层次上的划分。中间件则是对于复用度进行优化,实现低耦合的情形,提供系统的利用率。
分布式数据库的数据模式我们可以看到与集中式数据库是截然不同的,四层模式三层映射。我国制定的分布式数据库系统标准草案中给出了这种抽象的四层模式具体如图3所示。最外面的是全局外层,GES为全局模式,可以分为外模式1、外模式2,外模式N。叫做全局用户视图,也就是用视图来定义全局外模式,这是对全局用户在分布式数据库系统的最高抽象,可以使用全局用户视图,同时并不需要对于底层的具体实现关心,这也是实现透明性。第二层是全局概念层,称为全局概念视图,这是对于分布式数据库的整体的抽象,包含了全部的数据特性和逻辑结构。而全局视图通过分片和分配模式映射到局部模式中。分片是描述全局数据的逻辑划分,数据分片或者定义片段,以及全局关系与片段之间的映像。分配则是根据选定的数据分布策略,定义各个片段的物理的有效站点,定义片段映射的类型、去顶DB是否冗余及其冗余的程度,最终实现一一或一多的逻辑和场地的映射。局部概念层LCS,又称为局部概念视图,它是全局概念模式的子集,描述局部场地上的局部数据的逻辑结构。一个站点上的局部概念模型是该站点上所有全局关系在该站点上的物理映像的集合。最后是局部内层LIS,包含若干个局部内模式,类似于集中数据库的内层。它不仅包含该局部站点上的数据存取描述,同时也包含有全局数据在该站点上的描述。这就是这种四层模式三层映射的数据模型结构。
关于DDBS的组件结构有应用处理器、数据处理器、局部调度管理器、局部恢复管理器、存储管理器等、用户处理器AP,定义一些用户接口、语义数据控制、分布式查询处理、分布式事务管理和全局字典等等。其重要功能有二,其中也就是用户翻译器的作用,就是将数据操纵语言中的用户命令翻译成规范的命令;再者就是把数据处理器的数据,翻译成用户理解的数据。而数据处理器作用则是读取数据库的数据,将规范化的命令翻译成为物理命令,负责选择通向物理数据结构的最有路径;再者也是将物理数据转化为规范化的数据。如图2和图4所示,关于组件结构的功能图所示。用户发出命令给用户处理器,该命令给用户命令翻译器翻译成规范化的命令,检查约束,无误后形成规范化的命令,将规范化的命令传递给数据处理器的规范化命令翻译器,翻译成为物理命令,在处理器支持下访问数据库得到物理数据,将结果规范化检查,转换为规范化数据,然后用用户处理器将该数据格式化成为用户理解的结果,最终返回给用户。其中外模式、概念模式、内模式分别对应着各个阶段的内容,具体如图4所示。
(就到这里,分布式数据库的分析设计下次再讲)