首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 软件教学-> 压缩工具
Native XML数据库技术详解-.NET教程,XML应用
作者:网友供稿 点击:303
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
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.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·web打印的另类方法-ASP教程,打印相关
·Java简单类型进行精确浮点数运算-JSP教程,Java技巧及代码
·使用JAVAMAIL发邮件的一个例子-JSP教程,邮件相关
·中国移动本地传输网建设方案初探
·传输系统中的时钟同步技术
·JSP学习经验总结(转)-JSP教程,Jsp/Servlet
·WEB打印,去页眉和页脚-ASP教程,打印相关
·Native XML数据库技术详解-.NET教程,XML应用
·jsp生成html--readtemplates-JSP教程,Jsp/Servlet
·下拉框反回选定的文字 (修改页面经常用到)-ASP教程,ASP应用
最新文章
·在xp中如何使用windows vista屏保_windows xp
·photoshop调色:cmyk模式处理单色调特效_photoshop教程
·视频分享网站视频广告发展面临的问题_营销推广
·难以置信,这样的网站每月盈利上千万_营销推广
·大站做百度主题推广 小站做google adsense_网赚技巧
·方兴东:保留alexa插件才能给站长带来快乐_站长访谈
·网友天下ceo叶灵:欢迎大家看web2.0笑话_站长访谈
·我们应该如何运营网站_站长心得
·网站从业者还要更加务实才能赚钱_站长心得
·炼成高级网络编辑的三大原则_站长心得
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭