代码改变世界

XML DataBase之Xindice(一)

2011-07-26 14:42  shy.ang  阅读(570)  评论(0编辑  收藏  举报

Xindice用于存储XML数据,是Native XML Database,输入输出都是XML文件,查询使用XPathXQuery,编程接口支持DOMSAXXML有很好的灵活性和适应性,具有半结构化模式。

l  文档被存储在collections

l  XPath查询引擎

l  XML索引

l  XML:DB XUpdata  update data

l  Java XML:DB API  just like JDBC for relational databases

l  命令行管理工具

Xindice 不是单机服务器,服务器功能要依附于应用程序服务器,比如TomcatJetty。配置XindiceTomcat时,直接把Xindice安装目录下的Xindice.war文件放进服务器安装目录下webapps文件夹即可,war文件最好命名为Xindice.war(最后提到为什么)。这样webapps文件夹中过会儿就会出现Xindice文件夹,而数据库的数据会被存放在/WEB_INF/db中。

XindiceCollection就是一个数据库实例,XML数据文档被存储在里面。Collections的结构像是操作系统的层次文件系统,Collection下面可以包含子Collection和数据文档。但如果一个文档和一个collection重名,那就无法提取这个文档。

很多情况下,Xindice可以简单的看成是文件存储,对XML文档进行操作的相关命令:

       Xindice   ad  –c  CollectionURI   -f  -n

       -f中的XML文档将被添加到-c下的collection

       这里的-n是表示key,可以没有,那就由系统自动生成一个key

 

       Xindice   rd  -c  CollectionURI    -n  -f

       需要使用ID key 来从-c下的collection中获得文档并保存成-f下的文件

 

       Xindice   dd  -c  CollectionURI    -n

       需要使用ID key来从-c下的collection中删除文档。

 

       Xindice   ld  -c  CollectionURI

   列出collection中的documents

Xindice查询使用XPath语言,许多应用中XPath只处于文档层次,而XindiceXPath查询可以是文档层次和collection层次。这样XPath查询就可以针对多个文档而结果集就包含所有文档中的所有匹配节点。

Xindice   xpath_query   -c  CollectionURI  -q  “…”

-qXPath表达式

在结果集中,Xindice添加了一些属性信息,包括

xmlns:src=http://xml.apache.org/xindice/Query 

src:col=”db/collection  src:key=”collection

 

Xindice Collection相关命令行操作:

      Xindice   ac   -c  collectionURI   -n

      Xindice   dc   -c  collectionURI

      Xindice   lc   -c  collectionURI

 

添加索引能够提高数据库性能,没有索引你需要遍历整个collection

      Xindice   ai   -c   collectionURI   -n   -p

      -n确定索引名称

      -p是指索引的模式patterns,在查询时决定最适合和基于匹配的索引项

             Element       某元素值

             Element@attr      某元素的属性值

      *表示所有元素值

      *@attr          具有某属性的所有元素值

      Elem@*       某元素的所有属性值

      *@*      所有元素的所有属性


  需要注意以上命令中collection的URI

  默认情况下Xindice认为客户端和服务器运行在同一机器上,而服务器运行在8888端口。但在大部分配置中都不是这样的情况,需要我们包括主机名和端口号。这也是为什么当URI出现问题时,命令行会出现

“Cannot communicate with the server: http://127.0.0.1:8888/xindice/”的异常。

 当Xindice和Tomcat结合时,我们相关的数据库URI应该是“xmldb:xindice://localhost:8080/db”,这也是为什么需要在复制xindice的war文件的时候重命名为xindice.war,这样才能根据URI识别到对应位置。