XML与数据库2[4]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 myali88 的 blog

6.3.3.1 文件集 (document collections)

许多原生xml数据库都支持集合(collection)的概念,其作用相当于关系数据库中的表和文件系统中的文件夹,例如你想在原生xml数据库中存储销售订单,就可以定义一个销售订单的集合,这样对销售订单的查询就限于这个集合内的文件。

集合是否允许嵌套取决于所用的数据库。

6.3.3.2 查询语言 (query languages)

几乎所有的原生xml数据库都至少支持一种查询语言。最常用的有xpath(对多个文件的查询作了扩充)和xql,以及很多专有的查询语言。在考虑原生xml数据库时应当确定其查询语言是否满足你的需要,比如从全文检索到多个文件片断的合并。

将来大多数原生xml数据库都可能支持w3c的xquery。

6.3.3.3 更新和删除 (updates and deletes)

原生xml数据库对文件的更新和删除方式有许多,从简单的替换或删除现有文件,到修改当前的dom树,以及用于指定如何修改文件片断的语言。通常每种能修改文件片断的产品都有自己的语言,尽管有几种产品支持xml:db initiativexupdate语言。至于文件的更新正是业界和学术界的探讨领域,近期似乎没有完整的解决方案[2002年2月]。

6.3.3.4 事务、锁定和并发 (transactions, locking, and concurrency)

基本上所有的原生xml数据库都支持事务处理(以及回退rollback)。但是,锁定通常是对整个文档的而不是对文件片断的,所以多用户并发性[的支持]相对较低。问题的大小取决于应用程序以及“文件”的构成。

例如用户手册分成几个章节,每个章节都是一个文件,这时并发问题就小一些,因为两个作者同时对同一章节进行更新的情况不大可能发生。而另一方面,如果整个公司的客户数据都放在同一个文件中(糟糕的设计),文件级的锁定很容易造成灾难性的后果。

将来,大多数的原生数据库可能会提供文件片断级的锁定。

6.3.3.5 应用程序接口 (application programming interfaces ,apis)

几乎所有原生数据库都提供编程接口api。这种api很像odbc,并提供有连接到数据库、浏览元数据、执行查询和返回结果的方法(methods)。返回结果通常是xml字符串、dom树、返回文档的sax解析器或xmlreader。如果查询返回结果是多个文档的话,通常都会提供例举(iterating)这些结果的方法。

对以数据为中心的应用来说比较有趣的特性是将应用程序变量与返回文档的特定元素或属性相关联的能力。这就免除了应用程序为构件内部数据对象而不得不对文档进行解析的工作,随着xml数据绑定技术的应用越来越多,看起来这个特性会得到广泛支持。

虽然大多数原生xml数据库都提供有自己的api,但是xml:db.org已经开发出一种与供应商无关的xml数据库api(vendor-neutral xml database api),许多原生xml数据库已经支持它,而且有些非原生的[xml]数据库也可能支持。不管这个或其他的api是否会成为工业标准,此类api的广泛采用最终是不可避免的。

大多数原生数据库还有将查询结果通过http返回的能力。

6.3.3.6 “往返车票”(round-tripping)

原生xml数据库的一个重要特性是它可以为xml文档提供了“往返车票(round-trip)”。就是说你可以将xml文件存放在原生xml数据库中,而且再取回“同样的”文件。对于以文档为中心的应用程序来说非常重要,因为cdata部分、实体应用、注释和处理指令是这些文档不可缺少的组成部分。特别是对于法律和医学文件,按照要求这些文档必须要保持原样。

(对于以数据为中心的应用来说,由于它主要关心的是元素、属性、文本以及层次顺序,这种“往返车票”显得不是很重要。能够在xml文件和数据库之间交换数据的软件都可以处理这些往返问题,如果兄弟元素的顺序对以数据为中心的应用程序来说很重要,在有限的几种情况下也可以保留这种顺序。但是由于它[指一般的交换软件--译者注]一般不保留兄弟元素的顺序,也不确保原样保持处理指令、注释以及物理结构(实体引用、cdata等等),所以不适于以文档为中心的应用。)

所有原生xml数据库都能够在元素、属性、cdata和文件顺序的级别上为文件提供“往返车票”,至于究竟能达到什么程度取决于数据库。一般来说,基于文本的原生xml数据库能够原样存取xml文件,而基于模型的原生xml数据库只能在文件模型的级别上原样存取xml文件。对于特别小的文档模型,意味着比普通的xml原样存取的级别低。

由于你的应用程序要求决定了应当在哪个级别原样存取,所以对原生xml数据库的选择余地相当大。

6.3.3.7 外部数据 (remote data)

某些原生xml数据库可包含有外部数据,这些外部数据来自存储在数据库中的文档。通常这些数据通过odbc、ole db或jdbc从关系数据中取出,模型可以是基于表格的或对象-关系型映射。原生xml数据库决定了这些数据是不是即时的(live)--即原生xml数据库中文档的更新是否在外部数据库中反映出来。大多数原生xml数据库大概最终都会支持即时的外部数据。

6.3.3.8 索引 (indexes)

几乎所有的原生xml数据库都支持元素和属性的索引。像非xml数据库一样,索引用于提高检索速度。

本文关键:XML与数据库2
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top