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

    >> Oracle, SQL Server与XML,XML在数据挖掘中的应用, PMML.
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML 与 数据库 』 → Native XML数据库技术 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 18612 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: Native XML数据库技术 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     anchen0617 帅哥哟,离线,有人找我吗?双子座1983-6-17
      
      
      威望:5
      等级:大二(研究C++)
      文章:281
      积分:3413
      门派:XML.ORG.CN
      注册:2004/10/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anchen0617发送一个短消息 把anchen0617加入好友 查看anchen0617的个人资料 搜索anchen0617在『 XML 与 数据库 』的所有贴子 访问anchen0617的主页 引用回复这个贴子 回复这个贴子 查看anchen0617的博客楼主
    发贴心情 Native XML数据库技术

    XML技术从诞生之日就预示了它辉煌的未来,特别是随着近一、两年Web Service的蓬勃发展,XML越来越多地活跃在数据交换和存储领域。

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

    本文将向您介绍以下方面的信息:

    XML和数据库的关系
    NXD的技术特点
    传统数据库和NXD的比较
    NXD的现状和前景
    1. XML和数据库的关系

    1.1. XML是数据库吗?

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

    图1所示的XML文档Student.xml,描述了一个学生的信息:学号、姓名等。我们可以很方便的将其对应于传统RDBMS中一张二维表(table):标签student为行,标签id、name等作为列。


    <student>
    <id>19803001</id>
    <name>
    <lastname>Johnson</lastname>
    <firstname>Jack</firstname>
    </name>
    <email>jack@ipedo.com</email>
    ...
    </student>
    Fig 1  Student.xml

    我们可以把相关的XML文档放在一个目录下,利用文件系统来管理,提供查询、更改、增删操作。为更好地支持XML,W3C还制定了一些相关技术,如:文档模式(DTD、XML Schema),查询语言(XPath、XQuery等),编程接口(DOM、SAX等),来方便开发应用程序。

    但如果从更高的技术角度出发,就会发现,对XML文档简单的文件管理是远远不够的:低效的存储组织、索引查询技术,不提供事务、安全恢复机制,无法保证数据的完整性和一致性,没有并发控制、移植工具等。

    1.2. 数据库在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。

    1.3. 两种文档类型

    1.3.1. "以数据为中心"(data-centric)

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

    "以数据为中心"的XML文档具有以下特点:

    结构化的数据
    数据粒度大小适中
    很少或没有混和内容(Mixed Content)
    文档顺序(Document-order)不重要
    图1 student.xml就是一个典型的"以数据为中心"的XML文档,记录了学生的信息。每个学生的信息都很规整,而且粒度合适,同级元素(element)间的顺序不重要,交换两个同级元素(element)并不会破坏文档的可读性。

    1.3.2. "以文档为中心"(document-centric)

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

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

    半结构化或非结构化的数据
    较多的混和内容(Mixed Content)
    文档顺序(Document-order)重要
    图2就是典型的一个"以文档为中心"的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>
    Fig 2 products.xml

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

    2. NXD的技术特点

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

    Ronald Bourret在其"XML and Databases"一文中,对NXD有如下定义:

    "NXD的逻辑模型建立在XML文档,而非文档中的数据之上,并根据它来存取数据。该模型至少包括元素(element)、属性(Attribute)、PCDATA和文档顺序,例如XPath的数据模型…… NXD的最小存储单位是XML文档,……"

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

    2.1. 文档集合

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

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

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

    2.2. 查询语言

    XPath和XQuery是W3C推荐的针对XML文档的查询语言。目前大部分NXD产品都支持XPath,。另外还有一些NXD提供专有的查询语言。

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

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

    2.3. 事务、锁和并发控制

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

    2.4. 二次开发接口

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

    2.5. Round-tripping

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

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

    2.6. 更新和可持久化的DOM

    大多数NXD对XML文档的更新是通过其提供的API调用完成的,或者简单的替换整个文档来实现的。某些NXD还提供了可持久化的DOM(Persistent DOM,PDOM):在某种持久性存储介质上实现了DOM模型,对PDOM所作的改变直接反映在数据库中。由于PDOM树是"现场"的,数据库通常和应用程序在同一个进程空间。

    3. 传统数据库与NXD的比较

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

    通过对比XED和NXD技术,我们可以更清楚地看到二者的差别,特别是反映到应用领域。这一点对那些需要选择数据库开发XML应用的用户非常有意义。

    3.1. 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文档标签的处理上。
    3.2. XED和NXD的比较

    - XED的优、劣势

    优势:

    用户不需要将传统数据库中原有数据重新移植到新系统中,只是稍加改变,就可以支持XML应用。
    传统数据库技术,例如并发控制、事务等,已经很成熟
    传统数据库知识和经验依然有效,用户不需要为了应用XML而再去学习一套新的数据库技术
    劣势:

    XML文档存入到数据库时需要将其"打碎",取出时需要"组合",不仅耗时,而且文档的格式可能会不同
    XML文档和数据库之间的模式转换复杂,在前期开发阶段需要投入很大
    对"以文档为中心"、格式复杂的XML文档处理性能较差
    在采纳XML技术标准方面较落后
    - NXD的优、劣势

    优势:

    XML文档存取无需模式转换,存取速度快
    对格式复杂的XML文档支持比XED要好
    支持大部分的最新的XML技术标准
    劣势:

    在传统数据库技术方面比较薄弱,没有经过时间的考验
    知识比较新,相应的支持人员和文档资源都比较少
    应用范围仅局限在XML应用领域中
    事实上,两者的优劣并没有统一的答案,而是和具体的应用相关。在开发格式较简单、数据内容比格式更重要的应用时,XED是不错的选择,特别是在已有的传统数据库上要提供XML的访问接口的情况下。相反,如果XML文档格式复杂,数据本身就有层次性关系,或是只有XML数据的时候,就可以考虑NXD,因为它提供更好的性能,对XML标准有更完备的支持。另外,由于NXD在事务、数据恢复等传统数据库技术方面还未得到时间的检验,因此对数据安全要求较高的一些应用,如银行、金融系统的数据库,建立在传统数据库上的XED相对来说更有优势。

    4. 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%的增长速度,我们没有理由不为它的前景看好。

    参考资料:

    关于XML数据库的资料:http://www.rpbourret.com/xml/XMLDBLinks.htm
    Oracle XML数据库的资料:http://www.oracle.com/ip/index.html?xmldb_intro.html
    Ipedo数据库的介绍:http://www.ipedo.com 或 http://www.ipedo.com.cn


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    xml这门语言太好了,我们共同努力吧!!!!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/4 18:44:00
     
     GoogleAdSense双子座1983-6-17
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML 与 数据库 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/27 13:15:57

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

     *树形目录 (最近20个回帖) 顶端 
    主题:  Native XML数据库技术(12216字) - anchen0617,2004年11月4日
        回复:  很受启发!(10字) - badguy_tj,2005年6月23日
        回复:  这可是稻草啊(12字) - ceris,2005年6月10日
        回复:  集成了,xml spy集成了Tamino插件(30字) - eveningstar,2005年5月31日
        回复:  嗯,长见识,Altova 的XMLSpy中集成了这个没?(40字) - myway,2005年5月26日
        回复:  Native XML数据库技术http://www-900.ibm.com/developerW..(84字) - seeman2000cn,2005年3月23日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    58.594ms