新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     >>W3CHINA.ORG讨论区<<     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> XML网站展示,XML源代码,XML编程示例。 本版仅接受原创、转贴、网站展示,具体的技术交流请前往各相关版块。
    [返回] W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWLXML.ORG.CN讨论区 - XML技术『 XML源码及示例(仅原创和转载) 』 → XML在数据库应用中的性能问题初探[转帖] 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5230 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: XML在数据库应用中的性能问题初探[转帖] 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     wuyou125 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:16
      积分:124
      门派:XML.ORG.CN
      注册:2006/8/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wuyou125发送一个短消息 把wuyou125加入好友 查看wuyou125的个人资料 搜索wuyou125在『 XML源码及示例(仅原创和转载) 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wuyou125的博客楼主
    发贴心情 XML在数据库应用中的性能问题初探[转帖]

    1.        引 言
    XML技术自出现以来,发展非常迅速,在许多领域内得到广泛的支持而有着广阔的应用前景。例如电子数据交换、电子商务等等更是把XML作为一种基础性、支柱性的技术来看待。然而,应该指出,XML本质上是一种描述性的标记语言,是一种更好地表示信息的手段。同时,这也意味着XML可以是用于信息存储和管理的一种方式,正如同传统的数据库技术一样。

    数据库技术及其应用系统诞生于60年代。随后,经历了从层次数据库、网状数据库到关系数据库以及面向对象数据库的发展,数据库及其管理系统已成为计算机信息系统中的重要基础和支柱。90年代以来,Internet和Web的飞速发展使人类社会的信息量以指数膨胀,而对信息管理和信息交换的需求更是空前强烈和迫切。这时,已在传统的商业和事务处理等领域内趋于成熟的数据库技术,面临着许多新的问题和挑战。(注:本文中关于数据库技术的讨论侧重于关系数据库)

    XML的一个重要特点是它的结构性,即它可以方便有效地表示结构化数据,这就使得XML可以作为表示和存储数据的手段。因此,目前有不少将XML用于数据库应用的研究正在进行中。本文即是在这个方向上做了一些初步的探索,尤其关注于XML在数据库应用中的性能问题。

    2.        XML简介
    XML推荐标准1.0版发布于1998年2月,之后,迅速在全球掀起了XML应用的浪潮。简要地讲,XML是一种描述型的标记语言,与HTML同为SGML(标准通用标记语言,一种功能十分强大但也非常复杂的标记语言,是ISO-8879国际标准)的一种应用。设计之初,XML的目标之一是取代HTML为新出现的复杂的Web应用提供标准的Internet语言。然而,由于XML在可扩展性、可移植性和结构性等方面的突出优点,它的应用范围早已突破了HTML所达到的范围。今天,XML在很多领域中崭露头角,这其中包括传统的数据库技术的范畴。例如,人们开始考虑用XML文档来存储、组织和管理Internet上浩如烟海的庞大信息资源。但是,XML是否能够胜任所有这些场合?这正是本文要探讨的一个问题。下面先对XML作一个简要的介绍。

    一篇XML文档由标记和内容组成。XML中共有六种标记:元素(elements),属性(attributes),实体引用(entity references),注释(comments),处理指令(processing instructions)和CDATA段(CDATA sections)。其中,元素是标记的最常见的形式,由尖括号分隔,和人们熟悉的HTML中的标记看起来没什么两样。大多数元素标识它所包含的内容的性质。

    XML与HTML最大、也是最显著的不同是XML文档中引入了“文档类型声明”(Document Type Declarations)。DTD使文档可以与分析器交流关于它的内容的元信息。元信息包括:被允许的标注的次序和嵌套,属性值和它们的类型以及默认值,可能引用到的外部文件的名字和它们是否包含XML可能包含的一些外部数据(非XML)的格式,以及可能遇到的实体。

    DTD的出现,赋予了XML文档可扩展性、结构性和可验证性。正因为如此,XML具备了类似于数据库的一些性质,人们可能利用XML来组织和管理信息。与此同时,又可以与HTML一样在浏览器中方便地表示,在Internet上高效地传递和交换。考虑到与HTML的兼容,DTD并不是XML文档必须的成份。具有DTD的XML文档称作“Valid”,否则就是“Well-formed”。

    目前,处理XML文档的方式主要有SAX与DOM两种。SAX(Simple API for XML)是一种基于流的、以事件处理方式工作的接口。DOM(Document Object Model)则是在对XML文档进行分析后,在内存中建立起一个完整的树的结构,然后在此基础上进行各种操作。简单地比较来看,SAX对系统资源要求低,速度快,但对文档的操作是只读的;DOM的处理能力强大,但要求大量的系统资源,尤其是对于大的文档。

    3.        Internet时代数据库技术所面临的问题
    在这里我们并不会去过多地探讨数据库技术本身,而只是指出数据库技术在Internet应用、Web应用中所面临的问题。同时,这也解释了将XML用于数据管理的原因和动机。

    传统数据库的应用领域主要是针对商业与事务处理。Internet时代到来以后,Web改变了许多东西,正如它给数据库技术提出了一个必须面对的重要问题:即如何有效地存储和管理Web上以指数增长着的数据(文档),使它们既能被高效地操作和维护,又能在Web这个平台上方便地表示和交换。

    当前,典型的问题有(当然这绝不是全部):

    1.将现有数据库中数据转换成适于Internet和Web的形式,需要相当的工作量。时至今日,虽然从CGI,Server API,Scripts到Java等等出现了许多解决方法,并且已在实际应用中取得了很大的成就,但仍有问题存在。

    2.传统数据库中的数据以二进制码的形式存储,并且不同的数据库管理系统有各自的专有格式,这既带来了表示上的困难,更是进行交换的一大障碍。而随着网络和Internet的发展,数据交换的能力已成为新的应用系统的一个至关重要的要求。

    当然,我们也已经看到,数据库技术正在积极地吸收和利用Web方面的新技术。当前主流的数据库产品都宣布了对XML的支持。但是,数据库管理系统(DBMS)与XML的这种捆绑是否能够充分发挥效率,还需要在实际中检验。本文中,我们将从另一个角度来试验,即,完全基于XML来实现数据管理和操作。

    4.        XML在数据库应用中的性能问题
    这里,我们通过一个简单的例子来考察XML在处理典型的数据库应用时的表现。

    我们所要管理的信息是一个名单,每个记录是一个名字,包含姓(LASTNAME)和名(FIRSTNAME)两个字段。这个名单在关系数据库中就是一张再简单不过的表了,而在XML中,我们需要下面这样一个DTD:

    <!DOCTYPE DOCUMENT [

        <!ELEMENT DOCUMENT (NAME)*>

        <!ELEMENT NAME (LASTNAME,FIRSTNAME)>

        <!ELEMENT LASTNAME (#PCDATA)*>

        <!ELEMENT FIRSTNAME (#PCDATA)*>

    ]>

    一个记录则这样表示:

    <NAME>

               <LASTNAME>Franklin</LASTNAME>

               <FIRSTNAME>Tom</FIRSTNAME>

    </NAME>

    至此,我们就有了一个存储名单的XML文件,类比于数据库中的一张表。但是,处理XML文件却远不象用SQL操纵数据库那么简单。由于SAX对XML文档的处理是只读的,我们必须采用DOM来完成查询、插入、修改等各种操作。这里,我们使用Java语言,利用Microsoft的MSXML包,来实现这个程序。

    在这个小测试程序中,我们只实现了对应最基本的数据库操作的几个功能。然后,作为对照,在Oracle系统中建立了包含同样数据的一张表,用SQL*Plus对表进行操作。需要说明的是,试验在时间测量上是比较粗略的,采用秒表测算从命令提交到结果返回的时间差。由于我们主要侧重的是数据库与XML之间的相对比较,而不是各自的绝对数值,所以这样做基本可以满足要求。试验的平台是:Oracle系统运行于Sun SPARC Station 20,Microsoft Java 虚拟机运行于Pentium 233 PC上。下面是试验结果。

    操作
    Oracle/SQL*Plus
    MSXML/Java

    Insert 10 records
    <1秒
    1-2秒

    Delete 10 records
    <1秒
    1-2秒

    Update 10 records
    <1秒
    1-2秒

    Select
    <1秒
    1-2秒

    表1 关系数据库和XML处理100条记录时的性能比较

    操作
    Oracle/SQL Plus
    MSXML/Java

    Insert 100 records
    <1秒
    16秒

    Insert 1000 records
    1-2秒
    17秒

    Delete 100 records
    <1秒
    19秒

    Delete 1000 records
    1-2秒
    22秒

    Update 100 records
    <1秒
    20秒

    Update 1000 records
    1-2秒
    22秒

    Select
    <1秒
    22秒

    表2 关系数据库和XML处理10000条记录时的性能比较

    从上表可以看出,XML在处理规模稍大的数据时比关系数据库系统要慢很多。设想在一个Web站点上,这样的响应速度肯定是无法接受的。但是,在对上面的数据作出解释时,我们也要考虑这样一些因素:

    1.硬件、软件环境的影响。

    首先,在这个试验中,对比的双方使用了不同的计算机,不同的操作系统。其次,处理XML文档所使用的编程语言Java和接口库MSXML的性能问题,都有可能对最后的结果产生影响。

    2.XML文档的处理方式与数据库管理系统操作数据表的方式之间的差别。

    试验中对XML文档的处理方式是在每次操作前将其装载,然后对内存中的树结构进行操作,最后将结果写回磁盘上的文件。DTD在每次装载的时候都要被分析(本试验中还只是一个最简单的DTD),而向文件系统转储的时候更是要根据文档的结构决定适当的标记。这些操作是相当费时的,而数据库管理系统对表的操作显然不是这样。

    考虑到XML文档在装载和转储时的开销,我们又进行了另外一个试验,结果如下表。

    操作
    100条记录
    1000条记录
    10000条记录

    仅仅装载和转储
    <2秒
    3秒
    15秒

    仅装载
    N/A
    N/A
    5秒

    表3 不同规模的XML文档在装载和转储操作上的开销

    表3说明:

    1.XML文档的装载和转储时间随着文档内容的增加而显著增加。

    2.转储比装载的开销更大。

    3.与前面的表2结合,可以看出,对XML文档进行处理的时间大部分都花在装载和转储上了。

    因此,在本试验中,考虑到一些影响比较的因素,我们仍可以说,处理和操作XML文档的开销要显著地大于关系数据库系统中类似的表。其中,对XML文档进行装载和转储的开销占了很大的比例。XML文档的长度对其处理开销有非常明显的影响。这还是在内存足够的情况下,如果内存不足而使用磁盘交换空间的话,估计会是完全不可忍受的。

    5.        结语
    通过本文的讨论和试验,对于将XML用于数据库应用的情况,我们可以有这样几点结论:

    1.XML文档不适于处理较大规模的数据(1万条记录以上)。

    2.由于以DOM方式装载和转储XML文档开销很大,处理XML文档时一定要尽量减少这种操作。

    3.XML文档与关系数据库系统相比,应该说,它的一个优势是它存储数据的形式是可读的,即人可以直接阅读和编辑XML文档,而数据库中的表不通过数据库管理系统是无法访问的。所以,我觉得,XML文档适合于在编辑器中人工编辑,而在一个由许多用户并发地访问且可能修改的环境中,性能会成为严重的问题。很显然,这正是数据库技术所擅长的场合。

    无论如何,XML正在迅速地发展和不断地完善中,前景非常光明。例如,正在开发和标准化之中的XML查询语言(XQL)即是针对XML在数据库方面的应用。在这个领域内,还有很多问题有待我们去研究和解决。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/3/18 13:38:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML源码及示例(仅原创和转载) 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/22 20:04:20

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.500ms