XML DataBase之Xindice(一)
2011-07-26 14:42 shy.ang 阅读(570) 评论(0) 编辑 收藏 举报Xindice用于存储XML数据,是Native
XML Database,输入输出都是XML文件,查询使用XPath和XQuery,编程接口支持DOM和SAX。XML有很好的灵活性和适应性,具有半结构化模式。
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
不是单机服务器,服务器功能要依附于应用程序服务器,比如Tomcat和Jetty。配置Xindice和Tomcat时,直接把Xindice安装目录下的Xindice.war文件放进服务器安装目录下webapps文件夹即可,war文件最好命名为Xindice.war(最后提到为什么)。这样webapps文件夹中过会儿就会出现Xindice文件夹,而数据库的数据会被存放在/WEB_INF/db中。
Xindice中Collection就是一个数据库实例,XML数据文档被存储在里面。Collections的结构像是操作系统的层次文件系统,Collection下面可以包含子Collection和数据文档。但如果一个文档和一个collection重名,那就无法提取这个文档。
很多情况下,Xindice可以简单的看成是文件存储,对XML文档进行操作的相关命令:
Xindice ad –c Collection的URI -f -n
-f中的XML文档将被添加到-c下的collection中
这里的-n是表示key,可以没有,那就由系统自动生成一个key
Xindice
rd -c Collection的URI -n
-f
需要使用ID
key 来从-c下的collection中获得文档并保存成-f下的文件
Xindice
dd -c Collection的URI -n
需要使用ID
key来从-c下的collection中删除文档。
Xindice
ld -c Collection的URI
Xindice查询使用XPath语言,许多应用中XPath只处于文档层次,而Xindice的XPath查询可以是文档层次和collection层次。这样XPath查询就可以针对多个文档而结果集就包含所有文档中的所有匹配节点。
Xindice
xpath_query -c Collection的URI -q “…”
-q是XPath表达式
在结果集中,Xindice添加了一些属性信息,包括
xmlns:src=http://xml.apache.org/xindice/Query
src:col=”db/collection名”
src:key=”collection名”
Xindice Collection相关命令行操作:
Xindice ac
-c collection的URI -n
Xindice dc
-c collection的URI
Xindice lc
-c collection的URI
添加索引能够提高数据库性能,没有索引你需要遍历整个collection
Xindice
ai
-c collection的URI -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识别到对应位置。