首页 > 范文大全 > 正文

分布式数据库的设计与查询优化研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇分布式数据库的设计与查询优化研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:提出了利用MS SQL Server 2008的数据库管理特性,采用链接服务器、水平分片或垂直分片设计分布式数据库。并介绍了分布式查询的步骤和一系列的分布式数据库系统查询的优化方法和策略以及各自的使用特点。

关键词:分布式数据库设计查询优化

中图分类号:TP311.13 文献标识码:A 文章编号:1007-9599 (2012) 21-0000-02

1 引言

伴随着数字通信技术的发展,生产生活中数据业务量的不断加大,应用的数据可能分布在全球的任何位置。因此,与之相关的由多个分散数据库组成的信息系统必须要不断完善自身的性能才能更有效地解决数据的存储和处理问题,才能更好地满足日益增大的信息查询要求。如果能合理选择有效的优化策略和方法则可以很好解决以上问题[1]。

分布式数据库系统中的数据是物理分布在用计算机网络连接起来的各个站点上;每一个站点是一个集中式数据库系统,都有自治处理的能力,完成本站点的局部应用;而每个站点上的数据并不是互不相关的,它们构成一个逻辑整体,统一在分布数据库管理下,共同参与并完成全局应用,并且分布式数据库系统中的这种“分布”对用户来说是透明的[2]。

MS SQL Server 2008分布式数据库的功能表明,系统用户可以把多个不同地点的分数据库当作一个机器的完整数据库看待,因此使应用程序看起来只有一个大型的集中式数据库,用户可以在任何一个地点执行全局应用。如允许用户透明地查询和操作远程数据库实例的数据。

2 分布式数据库的设计过程

2.1 链接数据库服务器设计

链接数据库服务器是定义一个从某一数据库服务器到另一数据库服务器的单向通信路径指示器。可以使用SQL Server 2008的SQL Server Management Studio来建立链接服务器。链接服务器的数据源提供程序可以是SQL Server、ORACLE或者其他的OLEDB和ODBC,只要数据源提供程序的驱动程序支持,分布式数据库查询就可以查询和更新相应数据源中的数据。

2.2 实现水平分片或垂直分片

将表分区就是将表按照分区键划分为两个或两个以上更小的分段。分区键通常选择一个经常被用来选取特定范围的数据字段,这样分区的效率最高。通过创建分区视图合并所有分区表,实现对整个数据集的访问。实现方法如下。

利用MS SQL Server的分布式分区视图,可以将分区表分布在多个地点的数据库服务器上。使用链接服务器和分布式分区视图方法可以构建以水平分片的分布式数据库系统。

利用MS SQL Server的存储过程及链接服务器相结合的方法,将提交的全局操作转变为对多个地点的垂直分区表的局部操作。其中使用存储过程可以正确执行分布式事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

存储过程是存储在服务器上的预编译好的SQL语句集。使用存储过程将对多个场地的垂直分片表的操作放在一个分布式事务内,要么全部提交,要么全部回退,保证了分布式数据库系统中数据完整性约束的一致性。

3 分布式数据库查询步骤

对分布式数据库的查询不能像集中式数据库那样仅仅涉及一个站点而必须涉及多个服务器(全局查询)。在查询过程中,必须要对全局查询进行分解,即将一个涉及多个数据服务器的全局查询转换成为多个仅仅涉及一个数据服务器的子查询。查询分解完成后,再进行查询转换处理。分布式的数据库系统的查询过程通常分为查询分解,数据本地化,全局优化和局部优化。

3.1 查询转换:就是将所查询的问题转换成为一个在全局关系上定义的关系代数表达式,然后对其进行一系列规范化、分析、删除冗余和重写。

3.2 数据本地化:把在全局关系上的关系代数式转换到数据库相应段上的关系表达式,产生查询树。

3.3 全局优化:使用各种优化算法和策略可以对查询树进行全局优化。不同的算法和策略能够造成不同的优化结果,因此,算法的选取和策略的应用非常重要。

3.4 局部优化:分解完成后要进行组装,局部优化是指在组装场地进行的本地优化。

4 分布式数据库查询优化方法

4.1 基于数据库索引的优化

数据库系统中建立合适的索引则可以避免表扫描并减少因查询而造成的I/O开销,从而可提高数据库数据查询的速度并改善数据库的性能。但由于创建索引会占用部分系统的时间和空间的开销,因此需要在经常进行连接但没有指定为外键的列上主动建立索引,而不经常连接的字段应由DBMS的查询优化器自动生成索引;在条件表达式中经常用到的不同值较多的列上建立索引,而在不同值较少的列上不要建立索引;若待排序的列不止一个,则可以考虑在这些列上建立复合索引。此外,为了简化和避免对大型表进行不必要的重复的排序,也应正确地增建索引,合理合并数据库表。当能够利用索引自动以适当的顺序产生输出时,优化器就可以避免排序了[3]。

4.2 基于关系代数等价变换的优化

首先把查询内容转化为关系代数表达式,经过分析得到查询树,然后将原始查询树经过从全局到片段的变换变成了基于片段的查询树,最后经过一系列的基于关系代数等价变换规则的优化算法的转化,使该查询树中选择和投影操作尽可能靠近叶结点,笛卡儿乘积运算尽可能远离叶结点,这样就可以减少操作量和操作次数,从而达到查询优化的目的。

4.3 基于语义信息的优化

语义查询是利用数据库的完整性约束定义把初始的查询转化为一个语义等价的,但是处理代价更小的查询。与一般的查询处理过程所不同的是,基于语义信息的查询处理扩展了传统的数据字典,在智能数据IDB(Intelligent Database)中加入了新的语义信息规则,增添了语义优化过程。使用这种方法不仅可以提高查询的效率并且可把一般查询对于非索引属性的检索转变成为一个对索引属性的检索。但是又存在着增加处理时间的不足。在查询数据量较大的分布式数据库中宜于使用该算法。

4.4 尽量避免相关子查询及其order by和group by子句

首先要尽量少用子查询,特别是相关子查询,因为这样会使效率降低。如果一个列的标签同时在主查询和where子句中的查询中出现,那么当主查询的列值改变之后,子查询也要重新查询一次,因此查询嵌套的层次越多,子查询响应的改动就越频繁,查询的效率也就越低,因此应尽量避免子查询。如必须使用,则应在子查询中尽可能多过滤一些行。另外由于group by或order by子句中列的次序和索引的次序不一样,若重量级表采用排序办法,则效率会大大降低。同时它们会占用大量的临时空间,如必须使用,则应用视图、人工生成临时表的方法来代替[4]。

5 结束语

本文研究了基于MS SQL Server 2008 的数据库系统,利用链接服务器、水平分片或垂直分片的方法来架构分布式数据库系统,同时探讨了几种常用的查询优化的方法。但是,任何好的分布式数据库设计及其算法、策略不能适用于所有的查询优化,因此在实际应用中我们必须考虑该方法对于大的数据量能否适用,对异构型的数据库能否应付其要求,能否进行全局优化,是否满足高复杂性的要求等,才能决定是否使用该设计及方法。

参考文献:

[1]龙海燕,霍跃军.数据库的查询优化研究[J].电脑知识与技术,2006,(10).

[2]邵佩英.分布式数据库系统及其应用(第二版).北京:科学出版社,2005.

[3]张宋传,陈瑞典.分布式数据库中多元连接查询优化的研究[J].微计算机应用,2005,26(4):391-392.

[4]王燕飞.谈分布式数据库查询优化[J].电脑知识与技术,2007,(09).