Apache Jackrabbit学习

Apache Jackrabbit(内容仓库)是一个高级的信息管理系统,该系统是传统的数据仓库的扩展,它提供了诸如版本控制、全文检索、访问控制、内容分类、内容事件监视等内容服务。Jackrabbit里面有一个DataStore类,该类有两个实现,DbDataStore和FileDataStore,可以保存元数据和二进制数据。

详细内容参考:http://ahuaxuan.iteye.com/category/65829


内容仓库使用“树结构”保存信息,树由节点和属性组成,1个节点有且只有一个父亲,有任意数目的孩子(子节点)和任意数目的属性。1个属性有且只有一个父亲(它是节点),它没有子节点,由一个名字和一个或多个值组成。属性值的类型可以是:布尔(Boolean)、日期(Date)、双精度(Double)、长整型(Long)、字符串(String)或流(Stream)。只有属性可以被用来存储信息,节点则被用来创建树内部的“路径”。在某种程度上,这棵树类似文件系统的结构,节点是目录,属性是实际的文件。

JCR的数据存储结构


JCR存储树中的每一个节点都可以通过他们在层次结构中的绝对路径来标识。以上图所示的树结构为例,“/”表示根节点,路径/a/b/i表示值为“true”的属性i。绝对路径总是以“/”开始,相对路径则是以层次中的某个节点为参照物。例如,相对于/a而言,可以通过e/j来定位到值为一幅图片的属性j。

由于JCR的节点和属性具有很多相同的特性,因此它们都实现了Item接口中定义的通用方法,此外它们还添加了各自特有的功能方法。下图是JCR树状数据存储模型的UML结构图,由该图可知,Node和Property都是Item的子类,每个Property节点有且只有一个Node类型的父节点,而每个Node节点只能有一个Node父节点(根节点除外,它没有父节点),以及多个Item子节点。

JCR数据模型结构图


仓库的功能被划分为几个“兼容性”级别,每个级别提供一组特定的特性:

1、级别一

对于所有实现,级别一是必须的,它提供对仓库的读访问,简而言之:

a) 对节点和属性的读访问;

b) 对属性值的读访问;

c) 输出到XML/SAX;

d) 支持XPATH语法的查询服务。

2、级别二

级别二提供写功能:

a) 增加和移除节点和属性;

b) 对属性值的写操作;

c) 从XML/SAX输入数据。

3、可选级别

“可选”级别包含一些高级特性,它并不是读写仓库所必需的,但却是真正为之增色的部分。这个级别包括:

a) 事务——它使仓库有可能与JMS或JDBC资源一起工作;

b) 版本标定——允许仓库记录节点的不同状态,以备日后检索。规范对于这个主题有相当的篇幅,该特性使得JCR作为后端构建一个CVS的克隆成为可能;

c) 事件——亦称观察,它允许仓库内发生的任何活动都会被通知给客户端;

d) 锁——可以冻结部分树的功能,它可以有效地返回一个只读的子树。

JCR功能的三个级别

你可能感兴趣的:(数据管理,apache,数据仓库,Jackrabbit)