目录
5 . 6 分布式数据库系统
5.6.1分布式数据库槪述
0. 分布式数据库特点
1 . 分布式数据库的体系结构
2 . 分布式数据库的优点
5.6.2 数据切片
1 . 数据分片方法的分类
2 . 数据分片的原则
3 . 分布透明性
5.6.3分布式数据库查询优化
2 . 副本的选择与多副本的更新策略
分布式数据库系统是数据库技术与网络技术相结合的产物,其基本思想是将传统的集中式数据库中的数据分布在网络上的多台计算机中。分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有 D B M S 的一份完整的复制副本(是数据库文件的副本、复制,而不是内存系统的复制),并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。
分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。
分布式数据库系统是在集中式数据库系统技术的基础上发展起来的,具有如下特点:
(1) 数据独立性。
在分布式数据库系统中,数据独立性这一特性更加重要,并具有更多的内容。
除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
被尽快把逻辑上独立的数据分布在不同的机器上!
因此,对数据的逻辑切分很重要!!!
(2) 集中与治共享结合的控制结构。
各局部的 D B M S 可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部 D B M S 的工作,执行全局应用。
备注:
这就意味着,要支持分布式数据库,必须有一套完善的管理和控制机制!!!
这就是管理面和控制面的重大意义!!!
只有数据面自己是实现不了高性能的分布式数据库的!!虽然高性能最终体现在数据面上。
(3) 适当增加数据冗余度。
在不同的场地存储同一数据的多个副本,这样,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(4) 全局的一致性、可串行性和可恢复性。
分布式数据库的体系结构如图5-5所示。
在分布式数据库中,局部 D B M S 中的内模式与概念模式的集中数据库是完全一致的,不同之处在于新增的全局 D B M S ,而整个全局 D B M S , 可以看作是相对于局部概念模式的外模式。
由于外模式部分有一系列的分布模式、分片模式、全局概念模式和全局外模式,以及多级映射使得用户在使用分布式数据库时,可以使用集中式数据库同样的方式。
备注:
程序 = 算法 + 数据结构 = 运算(CPU) + 数据(内存)。
分布式计算和分布式数据库的大部分思想是共通的:
分布式计算关注的重点在运算,分布式数据库关注的重点在数据。
(1) 全局外模式。
全局外模式是全局应用的用户视图,是全局概念模式的子集,该层直接与用户(或应用程序)交互。
(2) 全局概念模式。
全局概念模式定义分布式数据库中数据的整体逻辑结构,数据就如同根木没有分布一样,可用传统的集中式数据库中所采用的方法进行定义。
全局概念模式中所用的数据模型应该易于向其他层次的模式映射,通常采用关系模型。
(3) 分片模式。
在某些情况下,需要将以个关系模式分解成为几个数据片,分片模式正是用于完成此项工作的。
有关数据分片的详细知识,将在5.6.2节中 介绍。
(4) 分布模式。
分布式数据库的本质特性就是数据分布在不同的物理位置。
分布模式的主要职责是定义数据片段(即分片模式的处理结果)的存放节点。
分布模式的映射类型确定了分布式数据库是冗余的还是非冗余的。若映射是一对多的,即一个片段分配到多个节点上存放,则是冗余的分布式数据库,否则是不冗余的分布式数据库。
根据分布模式提供的信息,一个全局査询可分解为若干子査询,每个子查询要访问的数据属于同一场地的局部数据库。由分布模式到各局部数据库的映射(图 5-5中的映射4 ) 将存储在局部场地的全局关系(或全局关系的片段)映射为各局部概念模式,采用局部场地的 D B M S 所支持的数据模型。
备注:
分布式数据库,有点类似集团化公司的运行模式。
(5) 局部概念模式。
局部概念模式是局部数据库的概念模式。
(6) 局部内模式。
局部内模式是局部数据库的内模式。
虽然从理论上来说,分布式数据库的模式结构有图5-5所示的6 个层次,但实际上,并非所有分布式数据库都具有这种结构。
分布式数据库的物理层面分布、逻辑层面统一的特色,让它具有一些集中式数据库所不可及的优势:
备注:与操作系统的虚拟内存管理也有异曲同工之处:逻辑上是统一的连续的地址空间,物理上是离散分布在不同的内存块中,支持共享。
(1) 分布式数据库可以解决企业部门分散而数据需要相互联系的问题。例如,就银行系统而言,总行与各分行处于不同的城市或城市中的不同地区,在业务上它们需要处理各自的数据,也需要彼此之间的交换和处理,这就需要分布式数据库系统。
(2) 如果企业需要增加新的相对自主的部门来扩充机构,则分布式数据库系统可以在对当前机构影响最小的情况下进行扩充。
(3) 分布式数据库可以满足均衡负载的需要。
数据的分片使局部应用达到最大,这使得各服务器之间的相互干扰降到最低。负载在各服务器之间分担,可以避免临界瓶颈。
( 4 ) 当企业己存在几个数据库系统,而且实现全局应用的必要性增加时,就可以由这些数据库自下而上构成分布式数据库系统。
( 5 ) 相等规模的分布式数据库系统在出现故障的概率上不会比集中式数据库系统低,但由于其故障的影响仅限于局部数据应用,因此,就整个系统来说,它的可靠性是比较高的。
数据分片将数据库整体逻辑结构分解为合适的逻辑单位(片段),然后由分布模式来定义片段及其副本在各场地的物理分布,其主要目的是提高访问的局部性,有利于按照用户的需求,组织数据的分布和控制数据的冗余度。
备注:
数据切片的思想软件架构模块切分的思想是一致的:高内聚、低耦合!!!
分片的方式有多种,水平分片和垂直分片是两种基本的分片方式,混合分片和导出分片是较复杂的分片方式。
(1) 水平分片。
水平分片将一个全局关系中的元组分裂成多个子集,每个子集为一个片段。
分片条件由关系中的属性值表示。对于水平分片,重构全局关系可通过关系的“并”操作实现。
备注:
水平切分:把不同的“行”记录切分成不同的片段。
(2) 垂直分片。
垂直分片将一个全局关系按属性分裂成多个子集,应满足不相交性(关键字除外)。对于垂直分片,重构全局关系可通过连接运算实现。
垂直切分:把不同的“列”属性切分成不同的片段。
(3) 导出分片。
导出分片又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件。
(4) 混合分片。
混合分片是在分片中釆用水平分片和垂直分片两种形式的混合。
不管采用哪种分片方式,数据分片都应遵循如下原则:
(1) 完整性。
全局关系的所有数据都必须分配到各个片段中,不允许某些数据属于全局关系但不属于任何片段。
( 2 ) 重构性。
各个片段可以重构原来的全局关系。
(3) 不相交性。
全局关系中的每个元组仅属于一个片段,不能在多个片段中重复出现。
此规则不是必须的,因为在有冗余的分布式数据库系统中数据可有多个副本。
但片段中的部分元组重复将会使数据的更新操作变得复杂,为简化操作控制,片段之间一 •般是不相交的。
分布透明性是指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。分布透明性包括分片透明性、位置透明性和局部数据模型透明性。
(1) 分片透明性。
分片透明性是分布透明性的最高层次,它是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。当分片模式改变时,只要改变全局模式到分片模式的映射(图 5-5中的映射2 ) , 而不影响全局模式和应用程序。全局模式不变,应用程序不必改写。
(2) 位置透明性。
位置透明性是指用户或应用程序应当了解分片情况,但不必了解片段的存储场地。当存储场地改变时,只要改变分片模式到分配模式的映射(图 5-5中的映射3),而不影响应用程序。同时,若片段的重复副本数目改变了,数据的冗余也将改变,但用户不必关心如何保持各副本的一致性,这也提供了重复副本的透明性。
(3) 局部数据模型透明性。
局部数据模型透明性是指用户或应用程序应当了解分片及各片断存储的场地,但不必了解局部场地上使用的是何种数据模型。模型的转换和语言的转换均由图5-5中的映射4 来完成。
分布式数据库在结构上与集中式数据库存在一定的差异,所以两者在查询优化方面各有侧重。
集中式数据库优化主要考虑的是 C P U 代价和 I/O 代价,而分布式数据库还需要考虑通信代价。
由于相对于 C P U 处理速度与 I/O 处理速度而言, 分布式数据库的通信的效率是最低的,因此,通信代价的降低是分布式数据库査询优化的关键。
在分布式数据库系统中,从查询涉及的数据和査询处理过程中的通信模式来划分,可以分为局部查询、远程查询和全局査询三种类型。
局部查询:是指用户查询所涉及的数据均在本地数据库中。对这类查询,可以使用集中式査询处理技术进行优化;
远程査询:是指用户査询只涉及网络中单个场地的数据。对于这类查询也可以使用集中式的查询
处理技术进行优化。但同时需要注意,数据有可能在网络中的多个位置存在副本,这样就存在副本选择的问题,通常,选择距查询应用场地最近的副本;
全局查询:是指用户查询涉及多个场地的数据,因此,査询处理和优化技术要复杂得多。
具体方法有全局查询
为了提高访问的局部性和系统的可用性,关系和片段常常可设置多个副本,分布于
不同的节点。这样,在査询处理时,就存在副木选择的问题。选择副本的原则如下:
(1) 尽可能提髙访问的局部性,减少远距离访问。
(2) 尽可能减少通信开销,尤其要减少大量数据的传送。
(3) 适当考虑节点负载的平衡。
如果副本较多,副本选择的方案可能就很多,副本选择就成为一个复杂的问题 。 一
般先用启发式规则选择几个优选方案,再通过代价比较,从中选择一种。多副本虽然可
以提高访问的局部性和系统的可靠性,但在更新时,必须维持多副本的一致性。为此,
一般可采取下列策略:
(1) 在事务提交前更新全部副本。
使用这一策略时,如有多个副本,只要其中有•一个副本不能更新,事务就要失败。
(2) 立即更新所有有效节点的副本,失效节点的副本留待修复后更新。
这种策略的可用性要高于第一种策略。
(3) 主副本法。
指定一个副本为主副本,执行更新操作时,事务提交前仅更新主副本,所有副本在事务提交后根据主副本广播的内容进行更新。主副本与其他副本之间可能有暂时的不一致。如果读主副本,不会发生问题;如果读其他副本,就吋能读到不一致的数据。为此,可以让每个副本附一个版本号,如果副本的版本号与主副本的版本号一致,就可以读取数据。反之,如果副本的版本号与主副本的版本号不一致,可以改为读主副本或等待副本更新后再读。
(4)快照法。
快照是指数据在某一时刻的状态,它不随数据库中数据的更新而即时更新。在快照法中,数据只有一个副本,但有许多快照分布在有关的节点上。在读数据时,可以读副本也可以读快照,由用户指定。更新数据时,仅更新副本,快照不随之立即更新。快照可以周期性地更新或用更新命令强制更新。从快照读得的数据可能与副木不一致,但这在某些情况是允许的,甚至是要求的。例如,在统计报表时,总是在表上注 明 “截止 x 月 x 日止”,这就说明表的内容是一个快照。只要应用许可使用快照,用快照代替副本,不但可以提高访问的局部性,还可以省去多副本更新的麻烦。