Loading...

当前位置:资讯中心主页 >数据库其他 >文章内容

  • Native XML数据库技术详解-.NET教程,XML应用
  • 来源:作者: 发布时间:2007-12-26 10:06:54
    • 域名注册

    • 域名惊喜价格 cn域名1元注册
    • com域名39.9

      虚拟主机

    • 主机按月支付,低至19元/月
    • 超大流量,可开子站点

      VPS主机

    • 特惠VPS168元/月,4-8M独享带宽保证
    • 独立操作系统,无限开站点
    xml技术从诞生之日就预示了他辉煌的未来,特别是随着近一、两年web service的蓬勃发展,xml越来越多地活跃在数据交换和存储领域。

    xml数据量指数级的增长,需求更有效的数据管理能力和更快、更精确的查询。在传统数据库厂商宣布支持xml的同时,一种新的数据库技术,native xml dbms(nxd)也已崭露头角,打破了rdbms传统数据库一统天下的局面,为数据库技术的研究提供了一次良好的发展契机。

    本文将向你介绍xml和数据库的关系,nxd的技术特点,传统数据库和nxd的比较和nxd的现状和前景。


    xml和数据库的关系


    xml是数据库吗?

    xml文件具有"可自描述"、"无限嵌套"、"树形结构"等特点,因此在某种意义上,一个xml文件就是个数据库或其中的一张表。

    下面所示的xml文件student.xml,描述了一个学生的信息:学号、姓名等。我们能非常方便的将其对应于传统rdbms中一张二维表(table):标签student为行,标签id、name等作为列。

    student.xml

    <student>
    <id>19803001</id>
    <name>
    <lastname>johnson</lastname>
    <firstname>jack</firstname>
    </name>
    <email>jack@ipedo.com</email>
    ...
    </student>



    我们能把相关的xml文件放在一个目录下,利用文件系统来管理,提供查询、更改、增删操作。为更好地支持xml,w3c还制定了一些相关技术,如:文件模式(dtd、xml schema),查询语言(xpath、xquery等),编程接口(dom、sax等),来方便研发应用程式。

    但如果从更高的技术角度出发,就会发现,对xml文件简单的文件管理是远远不够的:低效拇娲⒆橹?⑺饕?檠?际酰?惶峁┦挛瘛?踩?指椿?疲?薹ūvな?莸耐暾?院鸵恢滦裕?挥胁⒎⒖刂啤⒁浦补ぞ叩取?

    数据库在xml应用中的角色

    事实上,xml作为数据交换的标准,更着重于统一数据格式,而不是提供数据库的特性。因此在xml应用中,数据库作为数据管理的位置依然没有改动。

    xml数据本身的树形结构不同于关系模型中的二维表结构,这种差别反映在数据库产品处理xml数据的技术上,形成两大阵营:xml-enabled dbms(xed)和native xml dbms(nxd)。

    xed是在原有数据库基础上扩展了xml支持模块,完成xml数据和数据库之间的格式转换和传输。从存储粒度上,能把整个xml文件作为rdbms表中一行,或把xml文件进行解析后,存储到相应的表格中。为了支持w3c的一些xml操作标准,如xpath,xed提供一些新的原语(如oracle9ir2增加了一些数据包来操作xml数据等),并优化了xml处理模块。

    nxd则出目前xml数据处理领域内,一般采用层次数据存储模型,保持xml文件的树形结构,省掉了xml文件和传统数据库的数据转换过程。详见2。

    两种文件类型

    “以数据为中心”(data-centric)

    “以数据为中心”的xml文件着重于文件中的数据,而非文件格式,如航班信息、销售定单、科学计算结果等。这种文件的数据一般由机器产生,来源于传统数据库中的数据。主要应用在电子商务、erp、eai等领域,集成不同数据源的数据,交换信息。

    “以数据为中心”的xml文件具有以下特点:

    ? 结构化的数据

    ? 数据粒度大小适中

    ? 非常少或没有混和内容(mixed content)

    ? 文件顺序(document-order)不重要

    student.xml就是个典型的"以数据为中心"的xml文件,记录了学生的信息。每个学生的信息都非常规整,而且粒度合适,同级元素(element)间的顺序不重要,交换两个同级元素(element)并不会破坏文件的可读性。

    “以文件为中心”(document-centric)

    "以文件为中心"的xml文件主要是用来表示人类自然语言描述的数据,如电子邮件、书和用户手册。这种文件具有更复杂的结构,一般不是机器自动产生的。目前,web上的大部分数据都能表示成这种文件。

    "以文件为中心"的文件具有以下特点:

    ? 半结构化或非结构化的数据

    ? 较多的混和内容(mixed content)

    ? 文件顺序(document-order)重要

    下面的products.xml就是典型的一个"以文件为中心"的xml文件。

    products.xml

    <product>
    <intro>
    the <productname>ipedo native xmldb</productname> from
    <developer> ipedo,inc.</developer> is <summary>like a true native xml
    database, ...</summary>
    </intro>
    ...
    </product>



    对于"以数据为中心"的xml文件,xed能方便地将其中的数据抽取,存储在传统数据库中,但对于 "以文件为中心"的xml文件则显得力不从心了。nxd由于无需在两种模型之间转换数据,因此在处理"以文件为中心"的xml文件就非常有优势。


    nxd的技术特点


    nxd是专门为存储xml文件设计,也兼有一般数据库的特性,例如支持事务,并发控制,查询语言,安全机制,二次研发接口等。唯一的不同之处在于其内部存储模型是基于xml文件树形结构,而非关系模型。

    ronald bourret在其"xml and databases"一文中,对nxd有如下定义:

    “nxd的逻辑模型建立在xml文件,而非文件中的数据之上,并根据他来存取数据。该模型至少包括元素(element)、属性(attribute)、pcdata和文件顺序,例如xpath的数据模型……nxd的最小存储单位是xml文件,……”

    一般认为,nxd应该具有以下几个特性:文件集合(document collection),查询、更新,事务、锁和并发控制、二次研发接口等。

    文件集合

    非常多nxd产品都支持“文件集合”的概念,就像文件系统中的一个目录或rdbms中的一张表,一个“文件集合”把一类文件聚集在一起,方便用户操作。集合级别上的查询、修改操作都会反映到集合内的每个文件。

    一般说来,一个“文件集合”关联一种模式。将文件加入到有模式的"文件集合"时,会对要加入的文件进行模式检查。只有符合"文件集合"模式的文件才能加入。

    不同于rdbms中表必须具有模式,nxd还提供"无模式"的文件集合,即将一个文件放入该集合中时,不必检查该文件的模式。"无模式"的文件集合大大方便了用户存储格式非常难统一,半结构化的xml文件。

    查询语言

    xpath和xquery是w3c推荐的针对xml文件的查询语言。目前大部分nxd产品都支持xpath,。另外更有一些nxd提供专有的查询语言。

    xpath是基于xml文件树形模型,给出从某个结点起的查询路径,搜索文件。目前,xpath作为数据库查询语言更有不少缺陷:不能分组、排序、连接等。

    而xquery更像一种编程语言,支持循环等逻辑,支持分组、排序、连接等。相对于传统数据库的标准sql语句, xquery在对xml数据的查询方面,是一种功能更强大、更易于编程的方法。

    事务、锁和并发控制

    几乎所有的nxd都支持事务处理。不过,锁的粒度通常比较大,对整个文件的而不是对文件片断(fragment)的,所以多用户并发性的支持相对较低。具体的并发程度取决于应用程式及"文件"的构成。

    二次研发接口

    几乎所有nxd都提供编程接口:提供数据库连接、浏览元数据、执行查询和返回结果的方法。返回结果通常是xml字符串、dom树、返回文件的sax解析器。如果查询返回结果是多个文件或文件片断(fragment)的话,通常都会提供枚举这些结果的方法。对于以client/server模式运行的数据库产品,还能将结果通过网络协议(如http)回传给客户端。

    round-tripping

    nxd一个重要特性是他为xml文件提供了round-tripping:能将xml文件存放在nxd中,而且再取回"同样的"文件。对于以"文件为中心"的应用程式来说非常重要,因为易被xed忽略的cdata部分、实体应用、注释和处理指令是这些文件不可缺少的组成部分。特别是对于法律和医学领域中格式不允许随意窜改的数据文件。

    所有nxd都能够在元素(element)、属性(attribute)、cdata和文件顺序的级别上为文件提供round-tripping,能达到的具体程度取决于数据库产品。


    更新和可持久化的dom

    大多数nxd对xml文件的更新是通过其提供的api调用完成的,或简单的替换整个文件来实现的。某些nxd还提供了可持久化的dom(persistent dom,pdom):在某种持久性存储介质上实现了dom模型,对pdom所作的改动直接反映在数据库中。由于pdom树是"现场"的,数据库通常和应用程式在同一个进程空间。


    传统数据库和nxd的比较


    xed依靠传统数据库技术二三十年的积累,在和nxd竞争的前期,占据了xml应用市场的非常大份额:在intellor公司2001年3月份的调查报告中,xed的市场份额将近是nxd的3倍,约12亿美元。nxd虽然出场较晚,但市场份额增长速度却非常强劲,在短短的3年中,已由1999年的2,300万美元发展到2001年的3.9亿美元,并在今后两年内将保持200%的增长率。目前,nxd主要应用在制造业、生物医药、电信等领域。

    通过对比xed和nxd技术,我们能更清晰地看到二者的差别,特别是反映到应用领域。这一点对那些需要选择数据库研发xml应用的用户非常有意义。

    xed存取xml数据的技术特点

    xed中这部分工作是由xml网关模块完成,他处于用户逻辑模块和数据库逻辑模块之间,将传统数据库包装起来,给用户提供了一个透明的xml数据源。

    xed存取xml文件面临以下几个技术难点:

    xml文件模式和xed模式的映射为了把xml文件存到xed中,我们必须将xml文件的模式(dtd或xml schema)映射到数据库模式。同样,将数据从xed取出来重新组合成xml文件,要完成相反的操作。这种转化发生在元素(element),属性(attribute)和文本(text)上。由于xed注重的是数据而非格式,所以在这个过程中,xml文件的大部分物理结构(cdata、实体等)和一部分逻辑结构(处理指令、注释等)都被忽略,而数据被保存。这种转换可能会丢失信息,一个xml文件存到xed里后再取出来,可能会变成另外一种格式。相对于nxd提供的round-tripping,xed只能在数据层面实现信息的保留。

    对xml数据的查询支持

    由于xml文件模式和xed模式非常难保持一致,所以在存取过程中经常用xslt完成转换。但xslt非常耗时,这会对查询性能造成非常大影响。所以较好的解决方法是xed提供一种查询语言来返回xml文件。

    目前已有非常多xed产品提供了这种语言,主要分三类:

    基于模板(template-based)的查询

    这是目前rdbms xed最流行的方法,将sql语句嵌入到已写好的xml文件模板中,在实际查询时候用结果替换。

    基于sql(sql-based)的查询

    通过在sql语句的实现中增加对xml的支持,完成对xml数据的查询。例如oracle9ir2中,增加了xmltype类型和一些新的函数包以支持xmldb。

    xml查询

    包括xpath和xquery。和上面两种不同,这种查询是建立在xml文件模型上。也就是说,如果xed要支持这种查询方式,必须提供虚拟的xml文件。基本上目前的xed只支持xpath。

    数据类型、空值,字符集等

    在xml文件和xed的转换过程中,还会遇见数据类型的匹配、空值和字符集处理等问题。

    xml文件中除了不被解析的一些实体外,所有数据的类型都以文本(text)来表示。在转换过程中,可能会遇见类型不匹配的问题,诸如受到jdbc驱动模块的限制、日期的不同国际化表示。

    xml文件以灵活的方式来支持空值,如省略某个元素(element)、零长度的元素(element)和属性(attribute)等。而这些在xed中则有不同的意义。

    同样问题还出目前字符集、二进制数据、对xml文件标签的处理上。

    xed和nxd的比较

    - xed的优、劣势

    优势:

    用户不必将传统数据库中原有数据重新移植到新系统中,只是稍加改动,就能支持xml应用。

    传统数据库技术,例如并发控制、事务等,已非常成熟

    传统数据库知识和经验依然有效,用户不必为了应用xml而再去学习一套新的数据库技术

    劣势:

    xml文件存入到数据库时需要将其"打碎",取出时需要"组合",不仅耗时,而且文件的格式可能会不同

    xml文件和数据库之间的模式转换复杂,在前期研发阶段需要投入非常大

    对"以文件为中心"、格式复杂的xml文件处理性能较差

    在采纳xml技术标准方面较落后

    - nxd的优、劣势

    优势:

    xml文件存取无需模式转换,存取速度快

    对格式复杂的xml文件支持比xed要好

    支持大部分的最新的xml技术标准

    劣势:

    在传统数据库技术方面比较薄弱,没有经过时间的考验

    知识比较新,相应的支持人员和文件资源都比较少

    应用范围仅局限在xml应用领域中

    事实上,两者的优劣并没有统一的答案,而是和具体的应用相关。在研发格式较简单、数据内容比格式更重要的应用时,xed是不错的选择,特别是在已有的传统数据库上要提供xml的访问接口的情况下。相反,如果xml文件格式复杂,数据本身就有层次性关系,或是只有xml数据的时候,就能考虑nxd,因为他提供更好的性能,对xml标准有更完备的支持。另外,由于nxd在事务、数据恢复等传统数据库技术方面还未得到时间的检验,因此对数据安全需求较高的一些应用,如银行、金融系统的数据库,建立在传统数据库上的xed相对来说更有优势。


    nxd的现状和前景


    在3、4年前it业界还在为应该选用nxd还是传统数据库争的不可开交时候,就已有一些公司悄悄地投入到nxd的研发中。到今天,已有了十多种nxd产品。ibm,microsoft和oracle等传统数据库厂商,也正在踏入nxd的领域。

    但走在nxd队伍前面的却是一些"小"公司。pc magazine在2002年6月份,针对市场上的4种主流产品做了周详评测,包括性能、安全、易用性和对新技术的支持等。这4种产品是excelon的extensible information server 3.1,ipedo的ipedo xml database 3.0,neocore的neocore xms 2.0和software ag的tamino xml server 3.1,其中ipedo xml database 3.0以满分5分获"editor choice"奖。下面我们以ipedo xml database 3.0(ixd3)为例,窥探一下nxd技术的现状。

    ixd3支持

    ? 事务、并发控制,提供可靠的数据恢复机制

    ? 支持xpath和xquery两种查询和in-memory的高速索引

    ? 基于图像和命令行的用户界面,并提供了各种工具,如导入/导出,备份等

    ? 支持xml文件的多版本控制

    ? 支持dom、soap、com、ejb和java api多种数据库访问协议和研发接口

    ? 多种平台:windows,linux和solaris;

    在去年7月份发布的ixd3.1版本中,还提供基于acl的安全控制、web_dav等新功能,并集成内容管理模块,为基于web service等新技术的应用提供了一整套解决方案。周详介绍请参阅[2]。

    可见,nxd发展到今天,技术已日趋成熟,不仅提供传统数据库绝大部分功能,而且支持xml的最新技术标准,非常方便xml研发人员进行研发。最近在对ipdeo xmldb3.1、tarmino3.0和oracle9ir2内嵌的xmldb的测试过程中,笔者发现nxd在研发xml应用方面不仅研发速度快,而且提供了更为丰富的api接口。

    同时我们也应该看到,nxd技术发展时间相对传统数据库来说还非常短,技术基础还不是非常牢固。在某些xml应用方面,nxd并不具有比xed非常明显的优势,特别是在对数据安全需求非常高的数据库应用领域。

    但nxd在处理xml数据时拥有传统数据库所不能比拟的天生优势,已促使越来越多的目光聚焦到他上面。随着时间的推移,相信nxd也会得到检验。面对未来几年巨大的市场份额,及他每年200%的增长速度,我们没有理由不为他的前景看好。


  • 以上内容由 华夏名网 搜集整理,如转载请注明原文出处,并保留这一部分内容。

      “华夏名网” http://www.sudu.cn 和 http://www.bigwww.com 是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构webhosting.info评价为25大IDC服务商之一。

    华夏名网网址导航: 虚拟主机 双线主机 主机 域名注册 cn域名 域名 服务器租用 酷睿服务器 vps vps主机

  • (阅读次数:192)
  • 上一篇: 感受DataGrid给数据操作带来的便利(3)-.NET教程,数据库应用    下一篇: ASP 关于动态数据显示页面得锚点-ASP教程,数据库相关
  • [收藏] [推荐] [评论] [打印本页] [返回上一页][关闭窗口]
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。