(计算机系统结构专业论文)通用高速数据库访问优化研究.pdf_第1页
(计算机系统结构专业论文)通用高速数据库访问优化研究.pdf_第2页
(计算机系统结构专业论文)通用高速数据库访问优化研究.pdf_第3页
(计算机系统结构专业论文)通用高速数据库访问优化研究.pdf_第4页
(计算机系统结构专业论文)通用高速数据库访问优化研究.pdf_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 在数据库应用程序中,对数据库访问性能的优劣是制约整个应用程序的一个 重要方面,特别是在b i s 和c s 结构中,这一点就显得尤为重要。但是现今的很 多数据库应用程序所使用的数据库访问操作的代码运行效率并不高,造成了宝贵 的各种资源的浪费,也降低了整个应用程序的性能。本文从比较通用的角度出发, 深入分析各种访闷方式的一些通用数据库操作,提出一些适用于各种访问方式的 优化方法和策略。 关键词:数据库,数据访问,访问优化,数据库应用程序 a b s t r a c t t nt h ed a t a b a s ea p p l i c a t i o n i ti s 锄i m p o r t a n ta s p e c tt h a tt h eq u a l i 母o ft h e p e r f o r m a n c et o a c c e s sd a t a b a s er e s t r i c t sa p p l i c a t i o n ,e s p e c i a l l yi nt h eb s a n dc s a r c h i t e c t u r e b u tn o w , w h e nal o to fa p p l i c a t i o n sa c c e s st h ed a t a b a s e ,t h e c o d e e f f i e i e n c y i sn o th i g h i tc a u s e st h ew a s t eo fd i f f e r e n tr e s o u r c e sa n dr e d u c e st h e p e r f o r m a n c eo f t h ea p p l i c a t i o n t h ep a p e rn o to n l ya p p l i e st os o m eo n ea c c e s sm e t h o d , b u ta l s oo t h e r s i ta n a l y z e st h ec o m x n o no p e r a t i o no fa l lk i n d so fa c c e s sm e t h o d si n d e p t h ,a n di n t r o d u c e ss o m eo p t i m i z a t i o nm e t h o d sa n dt a c t i c st oa p p l y t om o s to f a c c e s s m e t h o d s k e y w o r d :d a t a b a s e ,d a t aa c c e s s ,a c c e s so p t i m i z a t i o n ,d a t a b a s ea p p l i c a t i o n 创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢中所列的内容外,论文中不包 含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其 它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的 任何贡献均在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:至星生日期:墨2 碰z 。生 关于论文使用授权说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权属西安电子科技大学。本人保证毕业离 校后,发表论文或使用论文工作成果时署名仍然为西安电子科技大学。学校有权 保茸送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分 内容,可以允许采取影印、缩印或其他手段保存论文。( 保密的论文在解密后遵守 此规定) 本学位论文属于保密,在年解密后适用本授权书。 本人签名:量星竖日期:墨正丘芏:笙 导师签名 日期:绝型! ! ! 望 第一章绪论 第一章绪论 现今的应用程序几乎没有不进行数据库访问的,特别是现今网络已经高度普 及的时代,网络需要进行资源共享,这就更加迫切需要数据库应用程序,需要象 b s ,c s 这样的应用程序从数据库中存储和获取大量的信息,所有的这种与数据库 交互的过程都需要对数据库进行数据访问,因此,数据库的访问性能是影响整个 应用程序的性能的一个比较重要的方面。 但是由于对这些访问方式的一些重要属性缺乏了解,很多只是注重采用比较 高性能的访问方式,没有考虑对它进行细致的配置,疏忽了数据库访问性能的影 响,更多的考虑的是怎样使用比较好的s q l 语句,只是简单的为了获取数据和存 储数据,造成了现今很多大型的数据库应用程序代码运行性能低下,特别是随着 访问方式的不断更新换代,对数据库的数据访问越来越简单,越来越方便,也为 配置增加了一定的难度。 这就需要对这些访问方式进行细致的研究,找到一些优化方法,在数据库访 问上进行优化。这种优化具有普遍的现实意义,可以不用改动原来的数据库结构 条件下,更加简单、更低成本开发数据库应用程序,特别是采用中间件技术来进 行数据库访问的程序。无论采用哪一种访问方式,这些访问方式都有一些通用数 据库操作,可以根据自己的需要,对通用数据库操作进行配置,使得性能得到改 善。 1 。1 课题的来源及背景 本课题来自于智能网实验室和珠海泰坦软件系统有限公司的合作项目,珠海 泰坦软件系统有限公司是家民营高科技企业,主要从事通用办公暨管理信息类 软件研发、生产和服务。公司经过多年努力,已取得了一批具有国内领先水平的 重要成果,是广东省认定的高新技术企业和首批通过“双软”认证的企业,2 0 0 1 年、 2 0 0 2 年两次荣获中国民营科技促进会“中国民营科技企业科技创新奖”,是中国办 公软件联盟的发起单位之一。特别是在基于大型数据库的管理信息软件和通用网 络办公系统的研发中,积累了丰富的经验,形成了自己的核心技术。近几年,公 司业务量每年都以翻倍的速度递增,是一家目标明确、技术特点突出的高技术公 司。目前公司已形成了办公、档案和管理信息类三大系列十余个产品。 珠海泰坦系统软件有限公司这十余个产品系列都是基于组件开发的,虽然这 些产品系列功能特别强大,但是在后台是数据量比较大的数据库时,性能上并不 2通用高速数据库访问优化研究 能满足客户要求,本课题恰恰是针对这方面提出的,通过对这些数据库访问组件 的优化,摸索出一套适合各种数据库管理系统的数据库访问优化方案策略。 1 2 课题实际意义 目前很多正在运行的大型数据库系统,由于早期的设计的不规范性,以及未 考虑到后期的扩展,造成了目前运行起来性能低下,效率不高等诸多问题,如果 要对数据库结构进行改造,需要投入大量的成本,并且带有很大的风险,通过对 本课题的研究和实践工作,使用一些优化手段,和执行计划,来降低投入的成本, 减小改造的风险,提高数据库访问速度和性能。 1 3 课题的主要研究内容、研究目标 加快目前各种大型数据库的访问速度, 于解决在原有的数据库应用程序的基础上, 优化策略。 提高数据库的运行性8 l 和效率,侧重 提出一套加快数据库访问的优化方法, 优化主要是从两个层面进行优化: 1 应用程序访问数据库的机制、方法上; 2 s q l 语句的优化; 1 4 论文的安排 论文共分为六章,各章的内容具体安排如下: 第一章绪论。本章主要介绍了课题的来源、学术背景和实际的意义。阐 述了研究内容、研究目标等。 第二章数据库的数据访问。本章主要介绍了对数据库进行数据访问的基 础知识,简单的介绍了通用数据库访问技术和思想,数据库数据 访问的架构,并对各种数据库访问方式从实用的角度进行了比 较。 第三章数据库应用程序优化。本章主要介绍了应用程序对数据库进行数 据访问的基本操作,讨论了一些应用程序进行数据访问优化的优 秀经验。 第四章s q l 调整。本章主要介绍了$ q l 一些基础知识,并且讨论了如 何调整s q l 来优化数据访问。 第五章进行优化处理的软件原型。本章主要介绍了珠海泰坦系统软件有 第一章绪论 限公司的对数据库访问的三个主要组件:o a p u b 、d a t a b r o w s e 、 t m l r ;并讨论了针对这三个组件所进行的优化方案的制定,优化 结果的评测,应用到产品的开发过程。 第六章结束语归纳了本文所讨论的内容和存在的问题及相应的改进方 法和进一步需要深入研究的问题,以及下一步还需要深入研究的 情况等。 通用高速数据库访问优化研究 第二章数据库数据访问 2 1 通用数据库访问技术 数据库是非常复杂的软件,编写程序通过某种数据库专用接口与其通信是非 常复杂的工作,为此,产生了数据库的客户访问技术,即数据库访问技术。 为满足不同的商业需要而创建的不同信息格式,通常会导致数据结构和格式 的不兼容。例如,公司中不同的部门采用不同的数据结构和格式。如图2 1 是一个 公司的销售数据、市场营销数据和人力资源数据来自于三个不同的数据源:o r c a l e 、 s q ls e r v e r 和f o x p r o 。这种情况下。要访问每一个数据源,就必须编写或安装与 每一个数据源相匹配的软件。因为这种类型的软件应用了a p i 技术,因而它被称 为“固有的”驱动程序。 销售市场人力资源 lo r a c l e o c id b 库f o x p r o 应用程序 0善 p c 图2 ,l 公司数据访问架构 当通过直接与数据源a p i 对话的固有驱动程序提供数据访问时,通常会出现 下面的两个闯题: 1 语言操作系统:要获得较好的兼容性,在开发过程中要使用与数据源a p i 相同的编程技术,而且操作平台上也要与它相兼容 2 需要了解具体数据源a p i 的知识:既要了解数据源a p i 的语言和平台环 境,又要必须对a p l 支持的程序有一定的了解,并且还要掌握其相关的具 体知识。通常,这种致使相当难懂,并且只与相关的数据源产品有关。例 如,某些熟悉s q ls e r v e rd ba p i 的人员有可能不能使用这种知识访问 o r c a l eo c i 中的程序。 用一个数据源固有的a p i 执行客户软件时,这个过程是复杂的、昂贵的,并 第二章数据库数据访问5 且还是很消耗时间的。经验显示:大多数数据使用者没有技术能力去有效并且经 济地开发相关数据源的定制访问。2 0 世纪9 0 年代就是这个样子。 数据访问,我们有两种基本选择。一种是使用通用数据结构。它强行将现有 的所有信息从当前的数据存储区移动到一个能包容所有数据类型的数据库服务 器。另一种则倾向于像u d a 允许的那样,采用通用数据访问策略。 所谓的通用数据库,如图2 2 。在这种方法中,使用者所有数据资源都收集到 单一的、集中化的数据库中。每次用户进行某些种类的数据请求时,都全部由通 用数据库来处理。在图中,s q ls e r v e r 是通用数据库,所有的数据全部放入相同 的环境中。 图2 2 某公司通用数据库 虽然这种方法在理论上看似个好的解决方案,但在实践中还有一些明显的 局限性: 1 各种数据源的数据通常是按不同的结构和格式存储的:要把所有的数据放 入到单个的数据库中,就必须对数据进行转换,并且还要把它们输入到通 用数据库中。 2 某些应用程序的任务非常单一,通常都是在a p i 级别上设计的,以便于具 体的数据源发生作用:有些时候,那些应用程序可以被处理精选通用数据 库的应用程序所替换。 3 一些数据必须要保持它们最初的格式,然后必须分阶段地把它们转化为一 个常见的格式,最后才能载入到通用数据库中:这样做的原因是具体的商 业需要或不兼容的r r 结构所导致的。 4 为了适应各种各样的应用程序,通用数据库需要大范围的修改和补充,以 6通用高速数据库访问优化研究 便能够处理非传统的数据:非传统数据的例子有电子邮件信息、日历数据 以及电子表格模型等。 通用数据库方法执行起来比较困难,因为它要求改变数据结构以便与中央数 据库的结构相匹配。使用这种方法时,输入和输出大块的数据会给网络和服务器 造成很大的压力。另外,数据更新时也要花费大量的时间,才能通过转换过程把 数据移交到中央数据库中。 另外的一种解决方法是使用通用的数据访问方法。 与通用数据库方法相反,通用数据访问并不要求数据自身从它们原先的位置 变形、拷贝或移动。在通用数据访问方法中,一个新的软件层添加在用户和数据 源之间,如图2 3 所示。在通用数据访问模型中,新的软件层把每个数据源的具体 结构隐藏起来,这样数据使用者就看不到它们。这种情况下,对数据的请求就被 通用数据访问所接受,然后通用数据访问处理具体数据源的细节问题,并返回希 望得到的信息。 通用数据访问的目标是让软件开发者具有一种访问数据源的能力,有了这种 能力,软件开发者就不必直接与数据源固有的a p i 打交道,也不需要对数据源固 有的a p i 了解太多。通常,通用数据访问层直接与数据源固有的a p i 打交道,也 不需要对数据源固有的a p i 了解太多。通常,通用数据访问层提供了一套常用的 命令,使用这些命令就可以访问各种各样的数据源。 销售市场人力资源 午i 一甲 i lo r a c e 焘- 驱动l s q l s e 三e r 驱动il r d r o - 驱动l 通用数据访问层 : 数据使用者 图2 3 通用数据访问层 在通用数据访问层的另一边是一套驱动程序。每个驱动程序把通用数据访问 层与一个具体的数据源连接起来。这些驱动程序把来自应用程序的数据请求转换 为数据源所要求的具体命令。另一方面,通用数据访问层把从数据源返回的数据 第二章数据库数据访问7 格式转化为一个标准的格式,这样就可使所有与通用数据访问相连的应用程序都 可应用标准格式的数据。 通用数据访问有几个主要的优点,它们是应用程序的开发更容易、更可靠以 及更经济: 1 不需要数据转换:数据不需要移动和转换。用户可以按照数据原先的格式 在原先的位置访问数据,所需要的知识连接数据源和通用数据访问层的驱 动而已。 2 独立于厂商:用通用数据访问这种方式开发的应用程序是独立于厂商的, 也就是说,程序员根据通用数据访问标准而不必参考具体厂商的详细资料 就可以开发应用程序。 3 异类数据源:由于从通用数据访问层能够访问所有的数据源,因而,对数 据的操作就可涉及多个数据源和不同的数据类型。例如,会计管理人员也 许需要一张包含厂商联系人姓名和地址的清单,这张清单有1 0 9 9 个表格, 这1 0 9 9 个存储在o r a c l e 数据库中的数据可以合并起来存储在s q l s e r v e r 中的一个表中,这样就能产生所需要的信息了。 4 语言平台的独立性:要让定制设计的数据库应用程序又快又可靠地开发 出来,通用数据访问将提供一个连续的编程接口,这个接口独立于所有的 编程语言和操作系统平台。 数据库访问技术将数据库外部与其通信的过程抽象化,通过提供访问接口, 简化了客户端访问数据库的过程。一个好的数据库访问接口就好像程序代码的放 大镜,如图2 4 所示。 客户代码数据库接口调用的数据库代码 圈2 4 数据库访问接口 目前供应商提供的数据库接口分专用和通用两种。专用的数据库接口具有很 大的局限性,可伸缩性也比较差。通用的数据库接口提供了与不同的、异构的数 据库系统通信的统一接1 3 ,采用这种数据库接口可以通过编写一段代码实现对多 种类型数据库的复杂操作,如图2 5 。 通用高速数据库访问优化研究 数据库接口 图2 5 多种类型数据库 i s a m 文件 务器 u d a 提供了很多的好处,首先,它的高性能,主要是她提供了直至并发一直 性用户的大规模应用程序酌能力,没有性能的损失;其次她逐渐提高了稳定性, 通过减少p c 机上组件的数量,也减少了出错的可能性。第三,u d a 扩展了工业 支持,包括工具提供商,数据访问组件开发者,d b m s 提供商。这些都是客户要 求亟待解决的。 2 1 数据访问的架构 几乎所有的数据库应用程序,系统的结构都可以简化为下面的架梅; 数据库访问接口在整个的系统中起到非常重要的桥梁作用,应用程序对数据 库的访问的一切操作,都是通过它来完成的。所以它运行的性能是制约整体性能 的一个重要的方面。 2 2 数据库访问方式比较 现今的数据库访问方式,比较流行的主要有 目一 一口 一 第二章数据库数据访问 9 o d b c ,o l e d b ,a d o ,a d o n e t , j d b c ,b d e ,它们之间的关系如图 三五 玉面 i关系数据库ii非关系型数据l - 。_ _ - _ 。_ 。_ _ _ _ _ _ 。- 。_ _ 。- 。_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - _ _ _ _ _ _ _ _ _ _ _ _ _ _ 一1 - 。_ _ _ - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - ,_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , 图2 7 数据库访问关系图 2 2 1o d b ca p i o d b c 是8 0 年代末9 0 年代出现的技术,它为编写关系数据库的客户软件提 供了统一的接口。o d b c 只提供单一的a p i ,可用于处理不同数据库应用程序。使 用o d b ca p i 的应用程序可以配置并操作数据库。 与其它数据库接口相比,o d b c a p i 是比较底层的接口,它在相对较低的层次 上使客户应用程序可以配置并操作数据库,因此,o d b ca p i 可以使客户应用程序 能够从底层设置和控制数据库,完成一些高层数据库技术无法完成的功能。虽然 直接应用o d b ca p i 编制应用程序相对来说较为繁琐,但是。由于直接使用o d b c a p i 编写的程序相对要简洁、高效。 由于o d b c 为关系数据库提供了统一的接口,现在已经被广泛应用,并逐渐 成为关系数据库接口标准。 o d b c 仅限于关系数据库,由于o d b c 的关系型特性,只能针对关系型的数 据,也就是二维数据进行操作,很难使用o d b c 与非关系型数据库进行通信,例 如对象数据库、网络数据库、电子邮件存储等。 o d b c 提供了o d b c 驱动程序管理器( o d b c 3 2 d l l ) 、一个输入库 ( o d b c 3 2 l i b ) 和o d b ca p ! 函数说明的头文件。客户应用程序与输入库连接, 以使用o d b c 驱动程序管理器提供的函数。在运行时,o d b c 驱动程序管理器调 用o d b c 驱动程序中的函数,实现对数据库的操作,o d b ca p i 的体系结构如图 所示。 o d b c 性能分析;标准化和规范化带来的是较大的通用性和良好的可移植性; 0通用高速数据库访问优化研究 但常常有是去系统性能的优化和功能的扩展。将应用对数据库的访问都想转换为 标准的o d b ca p i ,再经o d b c 驱动程序进行数据库的实际访问,必然会影响系 统的速度;也约束了对数据库系统和应用开发工具的转有特性的利用。 o d b c 速度:由于每一次通过o d b c 对数据库的访问要经过多次命令转换和 数据格式翻译( 从应用软件到o d b c a p i ,从o d b c a p i 到特定数据库) ,所以实际 的数据存取效率增长较低。极端情况下会出现几十倍的差异。 o d b c 功能:因o d b c 是按共同遵守的内容实现的,所以他支持的数据类型 是有限的,对操作错误的表达难以做到精确,具体,其函数库提供的函数数量和 功能是有限。 o d b c 驱动程 o d b c 驱动程序 客户代码 h | _ h | i l il h 1l 图2 8 0 d b c 访问架构 i s a m 文件 器 直接调用o d b c 2 o a p i 的优点: 可以直接参与结果集的开发、管理及规范化; 对结果集游标提供了更多的控制,并且提供了更多的游标类型和执行动作; 能够确定o d b c 驱动程序及s q l 的一致性级别; 可以更好地控制w i n d o w s 的执行调度及资源利用; 其他方面同其他方法差不多,因此这种方法很可能具有最好的性能。 缺点是: 较其他两种方法需要大量的代码; 代码复杂并且要求程序员具有编制a p i 调用的经验; 在网络上v i s u a lb a s i c 运行期间库的错误处理缺乏安全性,因此代码运行期间出 现的错误所造成的后果会非常严重。 o d b c 已经成为一种标准,所以,目前所有的关系数据库都提供了o d b c 驱 旦日口 1 2 3 4 5 l 2 3 第二章数据库数据访问 动程序,这使o d b c 的应用非常广泛。基本上可用于所有的关系数据库。 2 2 2d a o 与r d o d a o ,即d a m a c c e s s o b j e c t 的缩写,是一组m i c r o s o f t a c c e s 虮e t 数据库引擎 的c o m 自动化接口。d a o 直接与a c c e s 跏e t 数据库通信,通过j e t 数据库引擎, d a o 也可以同其它数据库进行通信,如图2 9 所示。 d a o 的基于c o m 的自动化接口提供了比基于函数的a p i 的功能,d a o 提供 了一种数据库编程的对象模型。d a o 的对象模型化比一般的a p i 更适合于面向对 象的程序开发,将一组不关联的a p i 函数集成到一个面向对象的应用程序里,一 般要求开发人员必须编写自己的一组类来封装这些a p i 函数。除了提供一组函数 外,d a o 还提供了连接数据库并对数据库进行操作的对象,这些d a o 对象很容 易集成到面向对象应用程序的源代码里。 此外,d a o 还封装了a c c e s s 数据库结构单元,例如表、查询、索引等,这样, 通过d a o ,可以直接修改a c c e s s 数据库的结构,而不必使用s q l 的数据定义语言 ( d d l ) 的语句。 + 图2 9 d a o 数据访问架构 i s a m 文件 务器 d a o 提供了一种非常有用的数据库编程对象模型,但是从图可以看出,操作 涉及到了许多层的软件。d a o 也提供了访问o r a c l e 、s q ls e e r 等大型数据库, 当我们利用d a o 访问这些数据库时,对数据库的所有调用以及输出的数据都必须 经过a c c e s s j e t 数据库引擎,这对于使用数据库服务器的应用程序来说,无疑是个 严重的瓶颈。 d a o 同o d b c 相比更容易使用,但不能提供o d b c a p i 所提供的底层控制, 目一口 1 2通用高速数据库访问优化研究 因此d a o 也属于高层的数据库接口。 m f c 对d a o 对d a o 的自动化接口做了进一步的封装,叫做m f cd a o 类。 这些m f cd a o 类都是用前缀c d a o 。 r d o 是r e m o t ed a t ao b j e c t 的缩写,最初是作为o d b c a p i 的抽象,为v i s u a l b a s i c 程序员提供的编程对象,因此r d o 与v i s u a lb a s i c 密切相关。由于r d o 直 接使用o d b ca p i 对远程数据源进行操作,而不像d a o 要经过j e t 引擎,所以, r d o 可以为使用关系数据库服务器的应用程序提供很好的性能。 通过在应用程序理插入r e m o t e d a t a 控件,r d o 就可以与v i s u a lc + + - - 起配合 使用。r e m o t e d a t a 控件一个o l ec o n t r o l ,可以被约束到应用程序的界面上,可以 通过使用r e m o t e d a t a 控件的方法实现对r d o 函数的调用。 2 2 3o l e d b o l ed b 对o d b c 进行了两个方面的扩展:一是提供了一个数据库编程的 o l e 接口,即c o m ;二是提供了一个可用于关系型和非关系型数据源接口。 o l e d b 提供了c o m 接口。o l e 是c o m 的最初的名字,即使出现了o l e d b , o l e 仍然被认为是c o m ,而c o m 是微软组件技术的基础。 c o m 接口同传统的数据库接口相比,例如0 d b c ,有更好的健壮性和灵活性, 具有很强的错误处理能力,能够同非关系型数据源进行通信。 与o d b ca p i 样,o l ed b 也属于底层的数据库编程接口,o l ed b 结合了 o d b c 对关系数据库的操作能力,并进行了扩展,可以访问非关系型数据源。 利用o l ed b 进行软件开发应该包括两类软件:o l ed b 客户程序和o l ed b 供应程序,如图2 1 0 所示为o l ed b 客户程序与供应程序之间的关系。 图2 1 0 a d o 数据访问架构 o l ed b 客户程序是使用o l ed b 接口的应用程序,例如,采用c 抖编写的 第二章数据库数据访问 1 3 使用o l ed b 连接数据库服务器的所有应用程序都是o l ed b 客户程序。o l e d b 供应程序是实现o l ed b 接口并实际与数据库服务器通信的d l l ,在功能上,o l e d b 同o d b c 驱动程序相同,不过o l e d b 实现的是c o m 接口,而不是a p i 接口。 o l ed b 使我们可以访问任何带有o l ed b 供应程序的数据源,这些数据源包 括电子邮件存储、对象数据库、网络目录及其它非关系数据存储。 o l ed b 使w i n d o w s 操作系统上数据库客户开发的未来发展模式,微软自己 的开发也集中在o l ed b 上,未来所有新的数据库技术也将适用于o l e d b 。 主要的优点是: 1 广泛的应用领域 以往的数据库访问技术,包括o d b c 、d a o 等,都只能访问关系型数据库, 而o l ed b 被设计成可以访问任何格式的文件,其中当然包括关系型和非关系行 数据源,以及用户自定义的文件格式,用户只需要对所使用的数据源产生自己的 数据提供程序,o l ed b 客户程序就可以透明地访问到它们。 2 简洁的开发过程 o l ed b 的对象组件和接口已经定义了数据提供程序所需要的接口,可以很方 便地产生了一个o l e d b 应用程序框架。o l e d b 为建立服务提供程序提供了一系 列功能,这些功能可以大大简化了数据提供程序的设计。由于数据使用程序并不 知道当前数据提供程序的细节,因此它只需要使用o l ed b 的接口即可完成程序 设计。有接口的标准性,数据使用程序可以被用到任何提供了数据提供程序的数 据源,是的0 l e d b 程序具有良好的移植性。 3 可靠的稳定性 o l ed b 应用程序是基于c o m 接口的应用程序,它继承了c o m 接口的所有 特性。c o m 模型具有良好的稳定性,c o m 与c o m 只要遵循规定的接口,可以很 容易地进行通信,所有组件和接口共同工作,组成一个稳定的应用程序。o l ed b 的各个对象都提供了错误对象和错误接口,可以有应用程序截获错误,对其进行 适当处理,从而提高了应用软件的稳定性。 4 高效的数据访问 作为个组件数据库管理系统,o l ed b 通过将数据库功能划分为客户和服务 器两个方面,提供了比传统数据库更高的效率。由于数据使用者通常只需要数据 库管理的一部分功能,o l ed b 将这些功能分解开来,减少了用户方面的资源开销, 同时减少了服务器方面的负担。 2 2 4a d o m i c r o s o f t a c t i v e x d a t ao b j e c t s ( a d o ) 使您能够编写通过o l ed b 提供 1 4通用高速数据库访问优化研究 者对在数据库服务器中的数据进行访问和操作的应用程序。其主要优点是易于使 用、高速度、低内存支出和占用磁盘空间较少。a d o 支持用于建立基于客户端 服务器和w 曲的应用程序的主要功能。 a d o 同时具有远程数据服务( r d s ) 功能,通过r d s 可以在一次往返过程 中实现将数据从服务器移动到客户端应用程序或w e b 页、在客户端对数据进行处 理然后将更新结果返回服务器的操作。r d s 以前的版本是m i c r o s o f tr e m o t ed a t a s e r v i c e1 5 ,现在,r d s 已经与a d o 编程模型合并,以便简化客户端数据的远程 操作。 a d o 提供了一种数据库编程对象模型,类似于d a o 对象模型,但比d a o 有 更高的灵活性。a d o 简化了o l ed b ,属于高层的数据库接口。另外同o l ed b 相比,能够使用a d o 的编程语言更多。a d o 提供了一个自动化接口,使v b s c r i p t 和j a v a s c r i p t 等脚本语言可以使用a d o 。 2 2 5a d o n e t a d o n e t 将成为构建数据感知n e t 应用程序的基础不同于a d o 的 是,a d o n e t 更具有通用性,不是那么专门针对数据库而进行的设计a d o n e t 聚集了所有可以进行数据处理的类这些类呈现了具有典型数据库功能的d a t a c o n t a i n e ro b j e c t s ,比如:索引,排序,浏览尽管a d o n e t 是作为重要的n e t 数据库应 用程序的解决方案,它更多的显示了涵盖全面的设计,而不仅是作为和a d o 模型一 样的以数据库为中心。 a d o n e t 与a d o 有很大的不同它是一个全新的访问编程模型当你开始使 用a d o n e t 时,你会发现你所掌握的任何关于a d o 的技能在搭建有效的程序以及 解决难题方面对你都会有很大帮助,能够帮你在解决问题上朝更灵活更稳妥的方向 发展 a d o n e t 是在用于直接满足用户开发可伸缩应用程序需求的a d o 数据访 问模型的基础上发展而来的。它是专门为w e b 设计的,并且考虑了伸缩性,无状 态性和x m l 的问题。 a d o n e t 使用了某些a d o 的对象,如c o n n e c t i o n 和c o m m a n d 对象,并 且还引入了新的对象。主要的新a d o n e t 对象包括d a t a s e t 、d a t a r e a d e r 和 d a t a a d a p t e r 。 a d o n e t 这一发展版本与以前的数据结构之间的重要区别就是d a t a s e t 对 象的存在,该对象独立于任何数据存储区并且与之不同。正因为如此,d a t a s 吼对 象作为一个独立实体运行。可以将数据集( d a t a s e t ) 设想为始终断开的记录集,它 对其所包含的数据的源或目标一无所知。d a t a s e t 的里面很像数据库,有表、列、 第二章数据库数据访问 1 5 关系、约束、视图,等等。 d a t a a d a p t e r 连接到数据库以填充d a t a s e t 的对象。然后,它又连接回数据库, 根据d a t a s e t 保留数据时所执行的操作来更新数据库中的该数据。在过去,数据 处理主要是基于连接的。现在,为了使多层应用程序更为高效,数据处理正转向 基于消息的方式,围绕信息块进行处理。这种方式的中心是d a t a a d a p t e r ,它起着 桥梁的作用,在d a t a s e t 和其源数据存储区之间进行数据检索和保存。这一操作 是通过请求对数据存储区进行适当的s q l 命令来完成的。 基于x m l 的d a t a s e t 对象提供一致的编程模型,该模型可配合所有的数据 存储模型使用,无论是单层的、关系型的、还是分层的。为做到这一点,d a t a s e t 对 象对其数据源“一无所知”,并且将它拥有的数据表示为集合和数据类型。无论 d a t a s e t 中数据的源是什么,它都是通过由d a t a s e t 与其从属对象所公开的同一套 标准a p i 来操纵的。 虽然d a t a s e t 对其数据的源一无所知,但托管提供程序具有详细而具体的信 息。托管提供程序的作用是在d a t a s e t 与数据存储区之间来回进行连接、填充和 保持。o l ed b 数据提供者与s q ls e r v e r n e t 数据提供者( s y s t e m d a t a o l e d b 和s y s t e m d a t a s q l c l i e n t ) 是n e t 框架的一部分,它们提供四个基本对象: c o m m a n d 、c o n n e c t i o n 、d a t a r e a d e r 和d a t a a d a p t e r 。在本文档的余下部分,我们 将介绍d a t a s e t 和o l ed b s q ls e r v e r n e t 数据提供程序的每一部分,解释它 们是什么以及如何对它们进行编程。 2 2 6j d b c j d b c 是一种用于执行s q l 语句的j a v a a p i 。j d b c 本身是个商标名而不是一 个缩写字,但在通常情况下,j d b c 被认为是“j a v a 数据库连接( j a v ad a t a b a s e c o n n e c t i v i t y ) ”的缩写。 j d b c 由一组j a v a 编程语言提供了统一的数据库访问方法。使用j d b c 3 0a p i , 开发者能访问从关系型数据库到表但到一般文件的几乎任何一种数据源。j d b c 技 术同时提供了一个公共的基础,其他工具和可替代的接口都建立在这个基础上。 j d b c 为数据库开发人员提供了一个标准的a p i ,使开发人员能够用纯j a v a a p i 来编写数据库应用程序。通过使用j d b c ,在程序中实现向各种关系数据库发 送s q l 语句已经变成了一个很容易的过程。换言之,有了j d b c a p i ,就不必为访 问s y b a s e 数据库专门写另一个程序。为访问o r c a l e 写一个程序,为访问i n f o r m i x 数据库写另一个程序。开发人员只需用j d b ca p i 写一个程序,就可以向任何相应 的数据库发送s q l 语句。同时,使用j a v a 编程语言编写的应用程序,这也使得采 用j a v a 和j d b c 结合的方式进行开发的程序员只需写一编程序就可让该程序在任 1 6通用高速数据库访问优化研究 何平台上运行。 随着越来越多的程序员开始使用j a v a 编程语言,对j a v a 访问数据库的便捷性 要求也在日益增加。j d b c 扩展了j a v a 的这个功能。j d b c a p i 使得程序员能够用 j a v a 语言来访问关系型数据库。通过使用j d b ca p i ,用j a v a 编写的应用程序能够 执行s q l 语句、检索结果,并把修改后的结果保存在底层的数据源。使用j d b c a p i 也能在分布式的异质环境下与多个数据源交互。j d b ca p i 基于x o p e ns q l c l i ( c a l l i n g l e v e l i n t e r f a c e :调用级接口) ,这也是o d b c 的基础。j d b c 提供了从 j a v a 语言到x o p e nc l i 和s q l 标准中定义的抽象类型的自然而便于使用的映射 关系。 有了这样的功能,j a v a 编程语言的功能得到更大的增强。例如,用j a v a 和j d b c a p i 可以发布含有a p p l e t 的网页,而该a p p l e t 使用的信息可能来自远程数据库; 企业也可以用j d b c 通过i n t r a n e t 将所有连到一个或多个内部数据库中( 即使企业 职工所用的计算机有w i n d o w s ,m a c i n t o s h 和u n i x 等各种不同的系统) 。 m i s 管理员们也喜欢将j a v a 和j d b c 结合使用,因为这样可以使信息传播变 得容易且合理。通过这种结合方式,企业可以不必重新安装数据库而继续使用以 前已安装好的数据库,并能同以前一样方便、快捷地存取信息,即使这些信息储 存在不同数据库管理系统上。同时,通过这种结合方式,新程序的开发期可以得 到较大的缩短,安装和版本控制将大为简化。程序员可只编写一边应用程序或只 更新一次,然后将该后的程序放到服务器上,随后就可以让任何人都能得到最新 的版本应用程序。对于商务上的销售信息服务,j a v a 和j d b c 还可以外部客户提 供获取信息更新、更好的方法。 各种访问方式都有自身的特点,o d b c 是基于s q l 的,目前已经成为了一种标 准,适用于各种关系数据库,而o l ed b 是基于c o m 模型的数据库接口,不仅适 用于关系数据库,也支持非关系型数据的访问。o d b c 和o l ed b 可以使客户应 用程序能够从底层设置和控制数据库,完成一些高层数据库技术无法完成的功能。 a d o 技术是基于o l ed b 的访问接口,它继承了o l ed b 技术的优点,a d o 技术 属于数据库访问的高层接口,具有低内存支出和占用磁盘空间较少,访问速度快的 特点。a d o n e t 是对a d o 一个跨时代的改进,它提供了平台互用性和可伸缩的 数据访问,由于传送的数据都是x m l 格式的,因此任何能够读取x m l 格式的应 用程序都可以进行数据处理,事实上,接受数据的组件不一定要是a d o n e t 组件, 它可以是基于一个m i c r o s o f tv i s u a ls t u d i o 的解决方案,也可以是运行在其它平台 上的任何应用程序。j d b c a p i 由j a v a 编写的一组接口和类组成,为开发者提供通 过应用开发访问数据库的工具接口,此外,通过j m s 、e j b 以及容器持续等方式, j d b c 可以实现高层调用。b d e 是b o f l a n d d a t a b a s e e n g i n e ,它不仅能访问本地的不 同数据库,还可以将应用从本地上传到客户机服务器系统,而且有很高的效率。从 第二章数据库数据访问1 7 性能上来讲,作为底层接口的o d b c ,o l ed b 和b d e 相对优越一些,但是编程 比较复杂,而a d o 方便程序员使用,性能上相对差一些,而j d b c 由于本身j a v a 的缺陷,性能上不是太高,a d o n e t 由于出来的比较晚,在性能上还在考察过程 中。 2 2 7 选择数据库访问技术 开发数据应用程序时,恰当选择访问数据库的技术是很必要的。数据库访问 技术的确定与应用的规模、操作的层次、数据的分布能力以及选择的数据库系统 等因素有关。 应用的规模可以分成桌面应用、办公室自动化应用、企业级应用和全球互联 网应用四种。桌面应用是最简单、最低级的应用,通常利用w m d o w s 系统的 m i c r o s o ra c c e s s 数据库就足够了,m i c r o s o f ta c c e s s 数据库的最快捷方法是使用 d a o 。办公室自动化应用是一种基于小型局域网的数据库应用,这种应用往往是 比较简单的客户服务器模式,这时,o d b c 是一个比较好的选择。企业级应用是 一种基于客户n 务器模式的大规模的数据库应用,应用的事务处理量比较大,事 务处理能力要求比较高。应该使用o l ed b 进行这种开发。a d o 是一种适合于互 联网应用的数据库访问技术,它往往作为控件在v b s c f i p t 语句或者a s p 语句里使 用。 操作的层次是指数据库应用是否涉及到了底层的接口,涉及到了多少。比如 应用中需要用到数据库系统里的各种数据库对象的有关信息,需要用户进行一些 数据库管理和权限管理,这时,o d b c 和o l ed b 能够提供这种接口。而m f c 的 o d b c 类,对底层的数据库操作是不能实现的。 数据的分布能力是指应用是否有数据分布处理的要求,大型的应用往往将数 据分布到不同的数据库服务器上,为了实现数据的透明访问,a d o 和o l ed b 是 值得采用的技术。 另外,选择什么数据访问方式还要考虑代码的重用性和开发者的能力,如果 为追求高性能选择比较专用复杂的访问方式,而没有考虑到开发者的能力,同样 也会导致使用优越的访问技术开发出比较低劣的应用程序。 通常选择了数据库,就将数据库访问技术限制到一个小的选择范围。例如我 们选择使用微软的s q ls e n ,e r 7 0 数据库系统,这时我们只能通过o d b c 或者通过 d a o 、o l ed b 、a d o 访问数据库,而不能采用d a o ,d a o 虽然也可以通过o d b c 访问s q ls e r v e r 7 0 数据库系统,但是效率非常低下,通常很少会用到它。 但是问题并不是绝对的,选用数据库时,应该根据实际需要确定。 对数据库的操作。不仅仅是a d o ,o d b c ,o l e d b 自己的事情,由于在对数据 1 8通用高速数据库访问优化研究 库的访问,主要服务于数据库应用程序本身,所以在整个的访问方式优化的同时, 应用程序针对自身的特点,采取相应的访问策略还是非常重要的。 第三章数据库应用程序优化 第三章数据库应用程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论