首页 理论教育分布式数据库技术-P2P数据库系统

分布式数据库技术-P2P数据库系统

【摘要】:P2P数据库系统的典型特征:①从节点和分布来看具有可伸缩性;②可直接存取数据资源;③健壮性和恢复性;④部署简单。可以将P2P数据库系统看成是以P2P方式交互的一组自主本地存储库。大家熟知的P2P应用基本上是文件共享系统,不关心全局模式,但数据库界将其扩展到完全的基于端点的数据管理系统。图16.4简化后的多数据库系统和P2P数据库系统的差异分布性、自主性和异构性是非集中式数据库结构共有的特征。

P2P数据库系统的典型特征:①从节点和分布来看具有可伸缩性;②可直接存取数据资源;③健壮性和恢复性;④部署简单。

可以将P2P数据库系统(P2P database system,PDBS)看成是以P2P方式交互(如建立对应关系或交换查询和更新请求)的一组自主本地存储库。换言之,本地存储库是自主的端点,有同等权利,并只与少量邻居连接。

这里的存储库(repository)表示单个端点可能是一组文件,而不是建立了数据管理功能的羽翼丰满的DBS。这样的存储库不一定有公用接口,但可以提供类似于DBS的访问功能,就像Web数据库一样。

简单来说,数据库管理系统是一款管理一个或多个数据库的软件。分布式数据库管理系统是一款管理由横跨网络的与逻辑相关的本地数据库构成的数据库软件。联邦数据库系统(FDBS)和多数据库系统(MDBS)是已存在的DBS的组合,其上的操作通过协调方式应用在不同的成分DBS上。FDBS和MDBS的关键区别在于集成成分DBS的方式不同,共同点是假设成分都是自主性的。它们的成分DBS是异构的。

那么联邦数据库系统(FDBS)/多数据库系统(MDBS)与P2P数据库系统(PDBS)有何异同?

我们用图16.3来描述FDBS/MDBS与PDBS的基本形态。

图16.3 FDBS/MDBS与PDBS的基本形态

FDBS/MDBS如图16.3(a)所示,包括:①本地模式(local schema),用本地数据模型来表示;②本地成分模式(local component schema),可以将本地DBS的数据模型翻译成正则规范模型;③本地输出模式(local export schema),包含本地DBS希望和别人共享的成分模式里的那些元素,如访问控制策略定义;④联邦模式(federated schema),FDBS是全局联邦模式,MDBS是面向应用的联邦模式(application-oriented federated schema)。联邦模式是一种真正的全局模式,包含内部输出模式的分布和分配信息。MDBS可以由多种不同的联邦模式共存,支持不同应用间的数据共享。

大家熟知的P2P应用基本上是文件共享系统,不关心全局模式,但数据库界将其扩展到完全的基于端点的数据管理系统(peer-based data management systems)。在基于端点的数据管理系统中,主要的数据集成和互操作思想是在成对信息源之间提供映射,无需全局模式。所有偶对间的映射并非是必需的。有映射的端点间存在映射,从而构成一张图。图16.3(b)描述了P2P数据库系统。注意,图16.3(b)中不存在全局模式。基本上,输出模式(export schema)只包含端点愿意让外部世界分享的本地模式元素。我们也可假设根本不存在本地模式,只是实例的部分暴露给外部世界。在PDBS中,实例(instance)和模式(schema)可以交换使用。

重要的是,端点自主决定在数据集成场景里与其他端点互换,使用映射规则来进行说明。注意,映射不一定是对称的。这样,在图16.3(b)的顶部有一个映射图/全局索引(mapping graph/global index)。因此,全局索引可以是集中式的,也可以是分布式的。

16.4所示的是简化后的多数据库系统(MDBS)和P2P数据库系统(PDBS)的差异,其中图16.4(a)是多数据库系统的形态,图16.4(b)是P2P数据库系统的形态。

图16.4 简化后的多数据库系统(MDBS)和P2P数据库系统(PDBS)的差异

分布性、自主性和异构性是非集中式数据库结构共有的特征。但是,PDBS和MDBS的差异还是很明显的。

下面我们深入讨论以数据库为中心和以P2P为中心的两种形态。(www.chuimin.cn)

1.以数据库为中心

分布式数据库系统(DDBS)的主要目标是在利用分布式环境的同时还提供透明性。这包含分片和分配设计、数据独立性、事务支持、世界观点,以及召回和查询服务。

(1)分片和分配设计(fragmentation and allocation design):DDBS允许以top-down方式在不同的节点灵活设计关系分片和分配。相比之下,FDBS和MDBS这样的数据集成系统是通过bottom-up实现的,集成数据保持原始节点不变。在基于DHT的系统里,数据的定位由系统的哈希函数决定,即负责给定数据项的节点是通过系统“计算”的。虽然DHT维护动态分配,以处理节点的离开和加入,但是分配还是由系统定义的。相比较而言,在DDBS中,分配作为数据库设计步骤的一部分,由用户决定。非结构化的PDBS以其纯粹的形式(没有利用结构化索引)处理数据集成,每个节点保留自己数据的权限,自主决定分配。

(2)数据独立性:DDBS实现了数据独立性的观念,即逻辑模型和物理实现是分离的。在PDBS里,数据独立性观念是期待的,因为数据需要独立于网络里物理分配的独立性。

(3)事务支持:许多数据库应用要求强一致性,基础需求是支持ACID事务的功能。然而,DDBS是靠特定协议来强化的。在FDBS和PDBS里有人建议支持延迟一致性要求,但基本上还在争论中。节点自主的弱耦合系统是否需要ACID,或者如何实现ACID,是开放性课题。

(4)世界观点:经典数据库系统的典型假设是封闭世界假设,即所有相关的东西都存放在数据库里,按查询请求返回给用户。这在PDBS中是难以认可的,因为任何时刻的节点可以加入也可离开。于是就有了开放世界的假设需求。换言之,假设数据和返回结果是不完整的。

(5)召回和查询服务(recall and query services):在DDBS里,查询功能多姿多彩,分片和分配透明性蕴含在查询语言里。在PDBS里,查询功能有限,高度依赖承载网络。特别是非结构化网络支持基于关键词的查询,而结构化网络使用查找(lookups)和范围查询(range queries)。在两类网络里,查询语言表达功能均可扩展。这两类网络的差别在于依赖完美和非完美召回(perfect/non-perfect recall)。从这方面看,结构化网络类似于传统的分布式体系结构,可以实现完美召回(即100%召回),而非结构化网络的召回率小于等于1。

2.以P2P为中心

以P2P为中心的数据库系统主要包含以下几个方面的特点。

(1)耦合度(degree of coupling):耦合度指的是获知其他端点存在的感知程度。在DDBS里,任何时候,所有节点都知道其他节点的存在(至少通过协调节点获知),实现了紧耦合。在PDBS里,端点可以动态加入或退出网络。这里,耦合度是松散的,端点只知道少数邻居的存在,而且随时会变化。耦合度也决定了自组织的程度。结构化的PDBS里,系统控制数据分配。而非结构化的PDBS里,端点可以时时刻刻自组织到一个集群或一个分层结构里。

(2)覆盖网络拓扑(overlay network topology):P2P覆盖网络不同类别的主要区别在于拓扑结构。非结构化的PDBS类似于传统的DDBS:不存在固定拓扑结构,覆盖网络是实现节点连接的结果。结构化的PDBS是基于固定拓扑结构的,如hy-percube、环(ring)、树、二叉树或B树。

(3)路由策略:路由策略与网络拓扑结构密切相关。在没有固定拓扑结构的系统里,信息存储在相邻节点里,回答请求的唯一方式是泛洪(flooding)。也有一些建议是要维护路由信息,以便直接借助于语义路由。相比之下,结构化的PDBS依赖于邻居的信息,以实现某种贪心路由(greedy routing)。例如,建议在每个端点维护一个指纹表,用于前向搜索路由,找到标识接近于搜索键的邻居。

(4)可伸缩性:非结构化网络基于泛洪,因此,可伸缩性较差,消息要快速流通网络。假设一个超级端点维护一些必要信息可以部分解决这个问题。从超级端点查到某些信息可以有选择地泛洪。随机溜达(random walks)也会有效,因为查询一次只会前行到一个端点,减少了网络拥挤。结构化网络的可伸缩性优于非结构化网络的,因为查询只会路由到扇出的端点,保证了完美召回。

(5)匿名性和安全性:匿名性是PDBS的重要特征。路由请求通过许多端点,会复制内容,参与者的标识是隐藏的。PDBS的另一个抽象级别是安全性量度,只有授权用户才能存取有权访问的数据。

参考文献[9]中给出了PDBS的样例和分类,限于篇幅,这里不再赘述。