本源XML数据库Xindice 介绍 (1.0版)

xml|数据|数据库

(Xindice当前的版本是1.1b4,已经做了较大改动,本文是1.0版的说明文档译文,仅供参考。部分改动在文中略做说明。

————译者:ksu99)

什么是Xindice

Xindice核心服务器完全是一个设计来存储XML数据的数据库服务器。用术语来说,Xindice服务器正是所谓的Native XML Database(NXD)。也可以说成是无缝XML数据库,这样的描述可能会容易理解一些。

这意味着使用这个服务器,你可以最大可能的使用XML工具和技术。进出服务器的所有数据都是XML。使用的查询语言是XPath,编程API支持DOM和SAX。所有这些对于一个曾经在他们的应用中使用过XML的开发者来说,应该非常熟悉。当与XML数据和Xindice打交道时,没有不同数据模式之间的映射。你只需要简单的以XML设计数据,以XML存储。

所有赋予你的可以总结为一个词:灵活性。XML提供一种极端的灵活机制,来对应用数据建模,并在很多情况下允许你建造那些在多数传统系统中难以建造甚至不可能建造的模型构造。这就是半结构化模型,在某些应用程序中是基本构件。通过使用一个像Xindice这样的本源XML数据库(NXD)存储半结构化数据,你可以专注于构建应用而不需要担心复杂的XML结构如何映射到底层数据存储,或者试图用一套严格的模式强制约束灵活的数据模型。

终究,Xindice是一个工具。它对某些工作来说,是合适的而对其它的就完全错误。它最擅长的只是存储XML数据。实际上,这就是全部。如果你有大量的XML数据,那么Xindice也许刚好是你需要的工具。然而,如果你的数据不是XML或者你需要精确控制数据的结构,那你最好还是去使用其他的数据库解决方案。

(译者注:1.1版中,服务器端的安装现在是在Java servlet引擎(Tomcat)内部署一个WAR档案。而数据库部署在一个servlet引擎内,并允许网络访问。这和1.0版不同,因为1.0版有自己的服务器框架。这样做是因为原来的服务器框架重复了servlet引擎的很多功能,而分开后使部署选项更加灵活。)

当前状态

Native XML数据库技术是一个非常新的领域,而Xindice更多的是一个仍在开发中的项目。服务器当前支持对格式良好的(well formed)XML文档的存储。这意味着对可以放进文档集合的文档没有任何模式来约束。这使Xindice成为一个半结构化数据库,并在如何存储数据方面提供极大的灵活性,但是也意味着放弃一些通用数据库功能,比如数据类型。[1] 在当前状态下,Xindice已经是一个管理XML数据的强大工具。但是需要做的还很多。

本文试图描述这些当前起作用并可以被使用的特性。请检查README文档,它包含许多关于工程当前状态的信息。

注意:Xindice服务器和这个文档都在改进中。欢迎和鼓励任何意见。

特性摘要

文档集合(Document Collections):文档被存储在可以被作为整体来查询的集合中。你可以创建只包含相同类型文档的集合,也可以创建一个集合来存储所有的文档。数据库不介意。

XPath查询引擎:要查询文档集合,你可以使用W3C定义的XPath。这提供了相当的灵活性机制,通过定位和限制返回结果树来查询文档。

XML索引:为了提高大量文档上查询的性能,可以定义关于元素和属性值的索引。这可以极大的加速查询响应时间。

XML:DB XUpdate实现:当存储XML到数据库时,或许需要能够在不检索整个文档的情况下改变数据。XUpdate是当你需要做服务器端的数据更新时使用的机制。这是一种基于XML的语言,确定XML修改并允许这些修改像应用到单个文档一样应用于整个文档集合。

Java XML:DB API实现:对于Java程序员Xindice提供了一个XML:DB API实现。这个API将给XML数据库应用带来可移植性,就像JDBC相对于关系数据库一样。大部分为Xindice开发的应用将使用XML:DB API。(译者注:在1.1版中,有一个嵌入式版本的XML:DB API,可以在不使用网络的情况下访问数据库构件Xindice应用程序。这个与启用网络的XML:DB API实现完全兼容。)

XMLObjects:XMLObject提供一个服务器扩展机制,来为服务器增加额外的功能。它们可以用来在数据库引擎内执行复杂的操作,以减少网络带宽,或者增加当前服务器上没有的功能。(译者注:1.1版中XMLObjects已经被删除。)

命令行管理工具:为了帮助系统管理员,Xindice提供了一全套命令行驱动的管理工具。所有可以通过XML:DB API做的事情,也可以从命令行搞定。(译者注:xindiceadmin工具已经被删除。以前只可以通过xindiceadmin访问的命令现在都通过xindice命令完成。这使服务器操作更简单一些。命令行工具加入一个选项,允许XPath查询使用命名空间(namespaces)规范。)

CORBA Network API:对于那些乐于使用Java语言的开发者,Xindice提供了一个CORBA API,可以用来构建应用程序。所有通过XML:DB API可用的功能,都可以通过CORBA API实现。事实上,XML:DB API是建造在CORBA API之上的。尽管多数Java开发者将永远不需要知道CORBA API的存在。(译者注:1.1版中,网络访问API是基于XML-RPC而不是CORBA。所有与CORBA相关的代码已经从系统中删除。系统现在完全支持UTF-8编码。)

模块体系结构:Xindice服务器以非常模块化的方式构成。这使其易于增减构件以裁剪服务器,使其成为一个特殊工作平台,或者将它嵌入到另一个应用程序中去。

数据库结构

Xindice服务器是设计来存储XML文档集合的。集合可以按照层次结构来安排,与典型的UNIX或Windows文件系统相似。

在Xindice中,数据存储基于一个亦可当文档集合使用的数据库实例。此数据库实例可以包含任意数目的子集合。在Xindice的缺省安装情况下,此数据库实例称为“db”,而所有的集合路径以 /db 开始。如果想要重命名这个数据库实例也是可以的,虽然没有必要这样做。

引用集合(Collections)的方式与层次式文件系统的引用相同。

1.1. 集合路径实例

如果你在“db”下创建了一个名为my-collection的集合,其下还有一个名为my-child-collection的集合,则访问my-child-collection集合的路径将会是:

/db/my-collection/my-child-collection

在集合之内可以存储若干类型的对象。你可以存储XML文档、XMLObject和其他集合。这些对象也分别可以通过路径引用。

1.2. 集合路径指定一个文档

扩展前面的例子,在my-child-collection中增加一个名为my-document的文档,这个文档可以通过下面路径引用:

/db/my-collection/my-child-collection/my-document

然而这个路径只可以得到一个。因为你有可能在一个集合中有多于一个的同名对象[2] ,当计算一个路径时就有个优先级次序问题。优先性依次是集合、XMLObject、文档。这就是说,如果有一个文档和一个集合同名,你将没法检索到文档。[3]

你还可以通过指定主机和服务器端口号,来在远程计算机上访问集合。

1.3. 集合路径指定一个远程文档

如果前面的例子在一个远程计算机上,则路径会是这样子:

myhost.domain.com:4080/db/my-collection/my-child-collection/my-document

这也可以用以下的Xindice URI形式:

xindice://myhost.domain.com:4080/db/my-collection/my-child-collection/my-document

[1] XML模式支持将在Xindice稍后的版本中加入。模式总是可选的,但是它可以用来强制一个集合存储特定的文档类型,并允许数据类型支持

[2] 举例来说,一个子集合和一个文档

[3] 这个约束将在Xindice后面的版本得到调整

时间: 2024-11-18 18:09:46

本源XML数据库Xindice 介绍 (1.0版)的相关文章

MSXML4.0 版中的新增功能_小偷/采集

MSXML4.0 版中的新增功能 2001 年 9 月发行的 Microsoft XML Core Services (MSXML) 4.0 版中的新增功能  Microsoft Corporation  2001年10月 下载 MSXML 4.0,网址为 MSDN Downloads(英文). 摘要: 本文重点介绍了与版本 3.0 相比,2001 年 9 月发行的 Microsoft XML Core Services (MSXML) 4.0 版中的新功能和重要变更.  目录 简介  新功能 

MSXML4.0 版中的新增功能

MSXML4.0 版中的新增功能 2001 年 9 月发行的 Microsoft XML Core Services (MSXML) 4.0 版中的新增功能  Microsoft Corporation  2001年10月 下载 MSXML 4.0,网址为 MSDN Downloads(英文). 摘要: 本文重点介绍了与版本 3.0 相比,2001 年 9 月发行的 Microsoft XML Core Services (MSXML) 4.0 版中的新功能和重要变更. 目录 简介  新功能 

帝国CMS6.0版到6.5常见问题解决办法

1.升级时提示以下信息 Duplicate entry '孟子' for key 'username' alter table ***_enewsmember DROP INDEX username, add UNIQUE(username); 原因:phome_enewsmember表有重复用户名的记录导致. 解决办法:用phpmyadmin进数据库删除phome_enewsmember表重复用户名的记录,查找方法可以用 "select * from phome_enewsmember gro

BaseX 7.0.1发布 XML数据库系统和XPath/XQuery处理器

BaseX是一个轻型.高性能.可扩展的XML数据库系统和XPath/XQuery处理器.它支持W3C的更新和扩展全文,互动和友好的用户GUI前端让你进入大型XML数据实例有很大的启示.用来存储紧缩的XML数据,提供了高效的 XPath 和 XQuery 的实现,还包括一个前端操作界面. &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; BaseX 7.0.1版本是针对用户的反馈进行优化的发布.Windows 安装程

甲骨文公司日前宣布推出Oracle NoSQL数据库2.0版

北京,2012年12月28日--甲骨文公司日前宣布推出Oracle NoSQL数据库2.0版(Oracle NoSQL Database 2.0),持续推动其在数据管理技术领域的创新.这是一款具有高可扩展性.低延迟.面向实时大数据工作负载的核心价值数据库. Oracle NoSQL数据库2.0版增加了对存储和大型对象(如文档和图像)检索的支持,以及在应对不断变化的生产数据处理要求时,用于分配存储和计算资源的动态弹性和自动重新调整性能. Oracle NoSQL数据库2.0版实现了与Oracle数

在PHP和Java应用程序中使用XML数据库

开始之前 本教程的目标读者是使用XML并希望了解原生XML数据库(本教程中为 IBM DB2 Express-C 9.5)的PHP和Java开发人员.虽然对PHP和Java编程有所了解很有帮助,但是不熟悉这些技术不影响阅读本教程.熟悉XMLDOM 也很有帮助. 关于本教程 本教程说明了如何利用原生XML数据库压缩开发周期.作为示例,我们将修改XML模式并观察代码中的相应变化.开发人员将了解到在PHP和Java技术中使用原生XML数据库所必须掌握的基本知识,包括: 连接到数据库(DB2 Expre

领跑2008----酷源CMSv1.0版全面免费!

中介交易 SEO诊断淘宝客 站长团购 云主机 技术大厅 自酷源科技(http://bbs.kycms.com).net版KYCMS v1.0版正式版本发布以来,凭借产品的灵活性和易用性,深受到广大用户朋友的一致好评,为回馈广大用户朋友对KYCMS产品的支持与厚爱,经公司研究决定,酷源科技正式宣布:酷源旗下拳头产品KYCMS v1.0版将于2007年12月18日起全面免费.开放所有功能. 届时您可以充分的体会到酷源CMS全力打造的底层核心建站程序,同时我们在发布sp1版本后即启动大型教学活动,一方

MySQL数据库引擎介绍、区别、创建和性能测试的深入分析_Mysql

数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型INNODB和BERKLEY(BDB),也常常可以使用.如果技术高超,还可以使用MySQL+API自己做一个引擎.下面介绍几种数据库引擎:     ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数.因此,ISAM执

详细讲解XML数据库中几个容易混淆的概念

xml|概念|数据|数据库     当开发人员谈及XML数据库时,他们往往指的是两个概念:存储XML数据的数据库,利用XML数据库的DBMS.绝大多数主要的DBMS产品允许你无需改变现有的数据库就可以集成XML数据到程序中.现在让我们讨论一下XML数据库并探讨其特性. 原始的XML数据库 一个原始的XML数据库(NXD)可以是很简单,也可以是很复杂.我这样定义一个数据库的概念:永久稳定数据的集合.在这样的定义下,一个NXD能在逻辑上存储一个XML文档.当XML:DBinitiative对一个NX