首页 理论教育 分布式数据库的应用与发展介绍

分布式数据库的应用与发展介绍

时间:2023-06-29 理论教育 版权反馈
【摘要】:相对于中心数据库,分布式数据库具有以下特点:降低了传送代价。在分布式数据库系统中,有三类查询:局部查询、远程查询和全局查询。定义全局用户视图,是分布式数据库的全局用户对分布式数据库的最高层抽象。图3-5 分布式数据库架构局部概念层。

分布式数据库的应用与发展介绍

3.2.2.1 分布式数据库简介

1)分布式数据库特性

分布式数据库是指利用高速计算机网络物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库产生于20世纪70年代,经过80年代的成长阶段,到了90年代已实现商品化,在21世纪得到大规模应用。其基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。相对于中心数据库,分布式数据库具有以下特点:

(1)降低了传送代价。因为大多数对数据库的访问操作都是针对局部数据库的,而不对其他位置的数据库进行访问。

(2)数据独立性。除了数据的逻辑独立性和物理独立性之外,还有数据分布的透明性。即用户不用关心数据的逻辑分布、物理分布,在用户的应用程序中,如同操作一个集中式数据库。

(3)集中和结点自治相结合。每个局部结点都有一个完全的数据库系统,各个局部结点的数据库管理系统(database management system,DBMS)可独立地管理局部数据库,同时又服从集中控制机制,支持全局的应用。

(4)支持全局数据库的一致性和可恢复性。由于全局应用涉及多个局部结点上的数据,有全局事务的提交和回滚。

(5)位置透明性。用户和应用程序无须知道所使用的数据存储位置。简化了应用程序的复杂性,即使存储数据的位置发生改变,应用程序也无须改变。

(6)复制透明性。在分布式系统中,为了提高系统的性能和可用性,可把一个场地的数据复制到其他场地存放。应用程序执行时,如果使用复制到本地的数据,可以在本地数据库基础上运行,避免通过网络传输数据,提高了系统的运行和查询效率。但是,对于有复制数据的更新操作,涉及对所有复制数据库的更新。所谓复制透明性,是指用户不用关心数据库在网络中各个结点的复制情况,被复制数据的更新都由系统自动完成。

(7)易于扩展性。在大多数网络环境中,单个数据库服务器最终无法满足需求。如果服务器软件能支持透明的水平扩展,可以通过增加多个服务器或处理器(多处理器计算机)来进一步分布数据和分担处理任务。

2)分布式数据库系统结构

1986年C.J.Date提出了全功能分布式数据库系统的12条准则和目标,具体如下:

(1)局部结点自治性。网络中的每个结点是独立的DBMS,有高度的自治性。

(2)不依赖中心结点。每个结点有全局字典管理、查询处理、并发和恢复功能。

(3)可连续操作性。增加或撤销结点、动态地建立和消除片段,不中止服务。

(4)具有位置独立性(或称位置透明性)。位置独立性是指用户不必知道数据的物理存储地,可工作得像数据全部存储于局部场地一样。允许数据在不同的场地之间迁移,而不影响应用程序的执行和用户的操作。一般来说,位置独立性需要有分布式数据命名模式和数据字典子系统的支持。

(5)分片独立性(或称分片透明性)。大部分操作是局部的。分布式系统如果将给定的关系分成若干块或片段,每个片段存储在不同的结点上,可提高系统的处理性能。因为利用分片将数据存储在最频繁使用它的位置上,使大部分操作是局部操作,减少网络的信息流量。如果系统支持分片独立性,用户工作起来就像数据全然不是分片的一样。

(6)数据复制独立性。数据复制独立性是指将给定的关系(或片段)可在物理级用许多不同存储副本或复制品存储在许多不同场地上。支持数据复制的系统应当支持复制独立性,即数据复制透明性,使用户工作时就像它全然没有存储副本一样。这样,当增加或减少副本时,不影响终端用户和应用程序的操作。

(7)支持分布式查询处理。在分布式数据库系统中,有三类查询:局部查询、远程查询和全局查询。局部查询和远程查询仅涉及单个结点的数据(本地的或远程的),采用的是集中工作数据库的查询优化技术。而全局查询涉及多个结点上的数据,其查询处理和优化技术要复杂得多。

(8)支持分布式事务管理。支持分布式事务管理包括两个主要方面:恢复控制和并发控制,两者在分布式系统中都不同于集中式数据库系统。在分布式系统中,单个事务会涉及多个场地上的代码执行,会涉及多个场地上的更新。可以说,每个事务由多个“代理”组成,每个代理代表在给定场地上对给定事务的执行进程,属于同一个事务的两个代理之间不能发生死锁。在分布式系统中必须保证事务的所有代理,或者全部一致提交,或者全部一致撤销。

(9)具有硬件独立性。希望在不同硬件系统上运行同样的DBMS软件,使不同的计算机成为对等的合作者参与支持分布式的工作。

(10)具有操作系统独立性。希望在不同的操作系统上运行相同的DBMS软件。

(11)具有网络独立性。如果系统能够支持多个不同的场地,每个场地有不同的硬件和不同的操作系统,则要求该系统能支持各种不同的通信网络。

(12)具有DBMS独立性。实现对异构型分布式系统的支持。理想的分布式系统应该提供DBMS的独立性。

根据我国制定的《分布式数据库系统标准》,分布式数据库系统抽象为四层的结构模式,这种结构模式得到了国内外的支持和认同。四层模式划分为全局外层、全局概念层、局部概念层和局部内层,在各层间还有相应的层间映射。这种四层模式适用于同构型分布式数据库系统,也适用于异构型分布式数据库系统,如图3-5所示。

(1)全局外层。定义全局用户视图,是分布式数据库的全局用户对分布式数据库的最高层抽象。全局用户使用视图时,不必关心数据的分片和具体的物理分配细节。

(2)全局概念层。定义全局概念视图,是分布式数据库的整体抽象,包含了全部数据特征和逻辑结构。与集中式数据库中的概念模式一样,是对数据库全体的描述。全局概念模式经过分片模式和分配模式映射到局部模式。分片模式是描述全局数据的逻辑划分视图,即根据某种条件的划分,将全局数据逻辑结构划分为局部数据逻辑结构,每一个逻辑划分成一个分片,在关系数据库中,一个关系中的一个子关系称为该关系的一个分片。分配模式是描述局部数据逻辑的局部物理结构,即划分后的分片的物理分配视图。

图3-5 分布式数据库架构

(3)局部概念层。定义局部概念视图,是全局概念模式的子集。全局概念模式经逻辑划分后,被分配到各局部场地上,用于描述局部场地上的局部数据逻辑结构。当全局数据模型与局部数据模型不同时,还涉及数据模型转换等内容。

(4)局部内层。定义局部物理视图,是对物理数据库的描述,类似于集中数据库的内层。

分布式数据库的四层结构及模式定义描述了分布式数据库是一组用网络连接的局部数据库的逻辑集合。它将数据库分为全局数据库和局部数据库。全局数据库到局部数据库由映射(1∶N)模式描述。全局数据库是虚拟的,由全局概念层描述;局部数据库是全局数据库的内层,由局部概念层和局部内层描述。全局用户只关心全局外层定义的数据库用户视图,其内部数据模型的转换、场地分配等由系统自动实现。

基于分布式数据库的架构,分布式数据库的优点为:①具有灵活的体系结构;②适应分布式的管理和控制机构;③经济性能优越;④系统的可靠性高、可用性好;⑤局部应用的响应速度快;⑥可扩展性好,易于集成现有系统。其缺点为:①系统开销大,主要花在通信部分;②复杂的存取结构,原来在集中式系统中有效存取数据的技术,在分布式系统中都不再适用;③数据的安全性和保密性较难处理。

3.2.2.2 分布式数据库在能源系统中的应用

电网调度自动化系统兴起于20世纪60年代,是以计算机为基础的新型电网控制技术,已成为保证电力系统安全、稳定、经济运行的支柱和实现其管理现代化的基础。在维持电网正常运行、加强用电管理、提供事故处理和决策依据等方面,经过40多年的发展,电网调度自动化系统由最初的集中式电力系统监视控制与数据采集系统(SCADA)演变为分布式SCADA/EMS/DMS。SCADA系统是电力系统自动化的实时数据源,为EMS提供大量的实时数据。同时在调度员模拟培训系统(dispatcher training simulator,DTS)、管理信息系统(manage information system,MIS)等都需要用到电网实时数据,如果没有电网实时数据信息,所有其他系统都将无法运行。所以,SCADA系统如何与其他非实时系统(DTS、企业MIS系统、地理信息系统、水调度自动化系统、调度生产自动化系统以及办公自动化系统等)进行集成至关重要。

作为一个面向电力系统调度一体化的实时数据库,它除了应符合作为数据库的一般要求外,还需要满足电力系统的应用要求。因此,实时数据库应具备以下特点:

(1)数据访问快速,能满足系统的实时性要求。

(2)具备完备的数据处理和管理功能,有效的恢复和重载机制。

(3)满足电力系统网络分析的要求,确保数据的实时性和一致性。

(4)高效的数据分布性能,支持数据的分布存储和访问。

(5)多任务的并发处理机制。

(6)支持多个工程的数据库并存机制,数据库间的数据方便切换,以提高工程管理效率。(www.xing528.com)

(7)支持数据库的镜像功能机制,满足不同应用间的数据快速切换。

(8)提供数据库访问的规范接口,具有良好的数据安全性。

(9)开放性好,提供与其他系统数据交换机制。

综上所述,电力系统的数据库应用技术有其特殊的行业特点,电力系统中SCADA实时要求以及传统的MIS数据可用性问题,都要求其底层数据库技术的改进。分布式数据库可完成将数据转换为信息并及时提供给电力系统管理阶层用户以实现决策支持的任务。

3.2.2.3 主流分布式数据库

分布式数据库的分类很多。为全面、系统地对分布式数据库进行分类,可采用分布式数据库的三个特征(分布性、异构性、自治性)来描述分布式数据库的类型。

分布性是指系统的各组成单元是否位于同一场地上。分布式数据库系统是物理上分散、逻辑上统一的系统,即具有分布性。而集中式数据库系统集中在一个场地上,所以不具有分布性。

异构性是指系统的各组成单元是否相同,不同为异构,相同为同构,异构主要包括:数据异构性指数据在格式、语法和语义上存在不同;数据系统异构性指各个场地上的局部数据库系统是否相同,如均采用Oracle数据库系统的同构数据系统,或某些场地上采用Sybase数据库系统,某些场地采用Informix系统的异构数据库系统;平台异构性指计算机系统是否相同,如均为微机系统组成的同构平台系统或由VAX或Alpha系统等异构平台组成的系统。

自治性是指每个场地的独立自主能力。自治性通常由设计自治性、通信自治性和执行自治性三方面来描述。根据系统自治性,可分为集中式系统、联邦式系统和多库系统。集中式系统即传统的数据库;联邦式系统是指实现需要交互的所有数据库对之间的一对一连接;多库系统是指若干相关数据库的集合。各个数据库可以存在同一场地,也可分布于多个场地。对多数据库系统进行管理的软件称为多数据库管理系统,多数据库管理系统是对一组自治的数据库进行管理,并提供透明访问。

根据上述分布式数据库的特征可对其进行分类,见表3-2。

表3-2 分布式数据库分类

1)文档导向存储

1989年起,Lotus通过其群件产品Notes提出了数据库技术的全新概念——文档数据库,它主要用来管理文档。文档数据库仍属于数据库范畴,它可以共享相同的数据,并且具有数据的物理独立性和逻辑独立性,数据和程序分离。但是文档数据库又别于传统的其他数据库,在传统的数据库中,信息被分割成离散的数据段,而在文档数据库中,文档是处理信息的基本单位。同时,文档数据库也不同于关系数据库,关系数据库是高度结构化的,而Notes的文档数据库允许创建许多不同类型的非结构化的或任意格式的字段,一个文档可以很长、很复杂,可以无结构,与字处理文档类似,一个文档相当于关系数据库中的一条记录。与关系数据库的主要不同在于,它不提供对参数完整性和分布事务的支持,但和关系数据库也不是相互排斥的,它们之间可以相互交换数据,从而相互补充、扩展。以下以MongoDB为例,对文档导向存储做进一步介绍。

MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。它的特点是高性能、易部署、易使用,存储数据非常方便。MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。其内部结构由以下几部分组成:

(1)BSON。在MongoDB中,文档是对数据的抽象,其表现形式为BSON(binary JSON)。BSON是一个轻量级二进制数据格式。MongoDB能够使用BSON,并将BSON作为数据的存储存放在磁盘中。当客户端要执行写入文档、查询等操作时,需要先将文档编码为BSON格式,再发送给服务端。同样,服务端的返回结果也将编码为BSON格式再返回给客户端。使用BSON格式具有以下优点:

①效率高。BSON是为效率而设计的,它只需要使用很少的空间。即使在最坏的情况下,BSON格式也比JSON格式处于最好的情况下存储效率高。

②传输性高。某些情况下,BSON会牺牲额外的空间让数据的传输更加方便。

③性能高。BSON格式的编码和解码非常快速,而且它使用了C风格的数据表现形式,这样在各种语言中都可以高效地使用。

(2)写入协议。客户端访问服务端使用了轻量级的TCP/IP写入协议。此协议是在BSON数据上做了一层简单的包装,其在MongoDB Wire中进行了详细介绍。

(3)数据文件。在MongoDB的数据文件夹中(默认路径是/data/db)包含构成数据库的所有文件。每一个数据库都包含一个.ns文件和一些数据文件,其中数据文件会随着数据量的增加而变多。数据文件每新增一次,大小都会是上一个数据文件的2倍,每个数据文件最大2GB。这样的设计有利于防止数据量较小的数据库浪费过多的空间,同时又能保证数据量较大的数据库有相应的空间使用。

另外,MongoDB会使用预分配方式来保证写入性能的稳定。预分配在后台进行,并且每个预分配的文件都用0进行填充。这会让MongoDB始终保持额外的空间和空余的数据文件,从而避免了数据增长过快而带来的分配磁盘空间引起的阻塞。

(4)名字空间和盘区。每一个数据库都由多个名字空间组成,每一个名字空间存储了相应类型的数据。数据库中的每一个Collection都有各自对应的名字空间,索引文件同样也有名字空间。所有名字空间的元数据都存储在.ns文件中。

(5)内存映射存储引擎。MongoDB目前支持的存储引擎为内存映射引擎。当MongoDB启动的时候,会将所有的数据文件映射到内存中,然后操作系统会托管所有的磁盘操作。

2)列导向存储

列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。磁盘的每个Page仅仅存储来自单列的值,而不是整行的值。因此,压缩算法会更加高效。

列数据库按列存储的结构,便于在列上对数据进行轻量级的压缩,列上多个相同的值只需要存储一份。压缩能够大大地降低存储成本。按列存储和压缩的特点,也为列数据库在查询方面带来巨大优势,因为将更多的数据压缩在一起,每次读取时可以获得更多的数据。同时,因为列数据库各条记录在磁盘中是按照关键码值压缩顺序存放的,采用的是稀疏索引,即把连续的若干记录分成组(块),对一组(块)记录建立一个索引项,因此列数据库先进的索引技术也大大提高了数据库的管理水平。

如图3-6所示,BigTable由主服务器和分服务器构成。如果把数据库看成一张大表,那么可将其划分为许多基本的小表,这些小表就称为Tablet,是BigTable中最小的处理单位。主服务器负责将Tablet分配到Tablet服务器、检测新增和过期的Tablet服务器、平衡Tablet服务器之间的负载、GFS垃圾文件的回收、数据模式的改变(例如创建表)等。Tablet服务器负责处理数据的读写,并在Tablet规模过大时进行拆分。

图3-6 BigTable结构

3)行列混合导向存储

行列混合导向存储数据库结合了行存储和列存储的优点,其典型的代表为Oracle Exadata。Oracle Exadata的核心是由Database Machine(数据库服务器)与Exadata Storage Server(存储服务器)组成的一体机硬件平台。运行在Exadata上的软件核心为Oracle数据库和Exadata Cell存储管理软件。其架构如图3-7所示。

图3-7 Oracle Exadata架构

(1)ASM。Database Machine通过使用Exadata Storage Server技术为Oracle数据库的单实例实现和RAC实现提供了智能的高性能共享存储。通过使用Oracle数据库的自动存储管理(automatic storage management,ASM)功能可将Exadata Storage Server提供的存储用于Oracle数据库。

(2)存储网络。Database Machine包含一个基于InfiniBand技术的存储网络。该网络可提供对Exadata Storage Server的高带宽低延迟访问。通过使用多台冗余的网络交换机以及网络接口接合,该网络体系结构中内置了容错功能。

(3)Oracle RAC。Database Machine中的数据库服务器设计为功能强大且平衡性良好的服务器,因而在服务器体系结构内不存在瓶颈。它们均配备有Oracle RAC所需的所有组件,这使得客户可以轻松地在单台Database Machine中部署Oracle RAC。

(4)RAC互联网络。InfiniBand的高带宽低延迟特征最适合群集互连的要求。因此, Database Machine还默认配置为使用InfiniBand存储网络作为群集互连。

4)图形数据库

图形数据库将地图与其他类型平面图中的图形描述为点、线、面等基本元素,并将这些图形元素按一定数据结构(通常为拓扑数据结构)建立起数据集合。包括两个层次:第一层次为拓扑编码数据集合,由描述点、线、面等图形元素间关系的数据文件组成,包括多边形文件、线段文件、结点文件等,文件间通过关联数据项相互联系;第二层次为坐标编码数据集合,由描述各图形元素空间位置的坐标文件组成。图形数据库是地理信息系统中对矢量结构地图数字化数据进行组织的主要形式。

例如Neo4j,它是一个用Java实现、完全兼容ACID的图形数据库。数据以一种针对图形网络进行过优化的格式保存在磁盘上。Neo4j的内核是一种极快的图形引擎,具有数据库产品期望的所有特性,如恢复、两阶段提交等。Neo4j既可作为无须任何管理开销的内嵌数据库使用,也可以作为单独的服务器使用。另外,Neo4j提供了广泛使用的REST接口,能够方便地集成到基于PHP、.NET和JavaScript的环境中。

5)Key Value数据库

Key Value数据库的查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,其思想主要来自散列表(hash table,也称哈希表),在哈希表中有一个特定的key和一个value指针,指针指向特定的数据。如Dynamo,它是一个典型的Key-Value模式的数据库,在可用性、扩展性等方面具有很大优越性,读写访问中99.9%的响应时间都在300ms内。Dynamo按分布式系统常用的哈希算法切分数据,分放在不同的结点上。在进行Read操作时,根据key的哈希值寻找对应的结点。但是Dynamo使用了Consistent Hashing算法,结点对应的不再是一个确定的哈希值,而是一个哈希值范围,key的哈希值落在这个范围内,则顺时针沿ring查找,搜索到的第一个结点即为所需。另外,Dynamo对Consistent Hashing算法进行了改进,环上的一个结点代表的是一组机器(而不是把一台机器作为结点),这一组机器是通过同步机制保证数据一致的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈