JSR170/283和Jackrabbit介绍
1 背景概述
由于近期公司需要我们自主开发一个管理非结构化文档的档案系统。由于不允许购买CMS平台,所以我对开源的CMS进行了一些简单研究,以下分享一下我的研究成果。
本文目的是介绍JSR170/283标准,以及内容管理/内容仓库等概念;并且说明JSR170/283与Jackrabbit以及应用程序之间的关系。由于oracle11g的一些新特性,在本文最后,将对oracle11g的结构化和非结构化存储进行一些粗略的探讨。
2 内容仓库/内容管理概念
内容仓库CR(content repository)指存储文件、数据的系统,这个系统地底层实现可能是关系数据库、文件系统或者一个XML文件等,实际存储数据的设备/系统;但CR隐藏了这些底层实现,并且支持存取文档操作以及一些高级操作:存取控制、搜索、版本管理等功能。因此可将CR视为传统数据存储的一个超集。
内容管理CMS (content management system)指在CR的基础上,进行更客户化的开发。
由于市场上有许多的CMS厂商,他们的CMS又都拥有自己的CR系统。这造成了每个CMS厂商的CR系统的API都不相同。为了解决这个问题,Apache 推出了内容仓库API标准JSR170/283(Java Content Repository API)。
3 JSR170/283标准
JSR170标准是JCR(Java Content Repository)1.0;JSR283标准是JCR2.0。JSR170/283 标准定义了对CR的编程接口。JSR283的架构和170相同,仅增加了一些API。 见下图,JSR170/283与Jackrabbit以及CMS的关系:
JSR170/283将内容仓库划分成个多workspace。Workspace以树形结构来组织:
rootNode为workspace的根节点。数据保存在Property中。
JSR170/283将实现划分成3个层次,任何实现JSR170/283的CR, 可以选择实现全部或者一部分。
1) level1:提供reading, exporting, searching,以及对workspace节点维护;
2) level2:在level1的基础上,提供writing, importing等一系列写操作 ;
3) optional:在level1,2的基础上,提供versioning, transaction(JTA),query using SQL, explicit locking, content observation。
JSR170/283提供API包:javax.jcr.* 定义了以上各层的接口。(这些接口操作和管理都是针对Node进行)
4 Jackrabbit介绍
Jackrabbit是对JSR170/283的一个参考实现(即:将JSR170/283中定义的接口具体化)。Jackrabbit实现了level1,2和optional层。
Jackrabbit1.x 是实现JSR170,目前稳定版本是1.6.0; Jackrabbit2.x实现JSR283,目前还没有稳定版本。
Jackrabbit可以和Struts+spring+hibernate框架结合良好。SpringModules提供将Jackrabbit集成到Spring框架中的方法(如何配置)。
**注:SpringModules: 包含一组用于扩展Spring框架的工具、附件和模块。Spring Modules的核心目标是促进Spring与其他项目相集成而不需要打乱或扩大Spring core。
5 Oracle 11g的SecureFile
Securefile功能是Oracle 11g中对大对象(Lob)存储格式的完全重新设计实现,原来的Lob存储格式现在通称为basixfile,它仍然是默认的存储方法,但是Securfile关键字开启了新的存储方法,它允许加密、利用压缩节约空间和数据重复消除。
Securefile组织文件数据比旧的LOB格式字段要快10倍以上(据oracle官方文件);使用Securefile将非格式化文件作为数据库表的一部分,这样应用程序不需要处理关系数据库和文件系统多个接口;可使用数据库的特性;
6 oracle xml DB
1. Oracle XML DB 是支持文档为中心或者内容为中心的XML文件。XML文档是层次化数据,因此Oracle XML DB根据XML文件的特色,提供层次索引和XML的存储仓库。
2. Oracle XML DB架构包括两个主要特色:
1) XMLType tables and views storage
2) Oracle XML DB repository
7 Oracle对数据的划分
Oracle认为数据可以分成3类:
1) 结构化数据:这类数据指可以使用关系数据库表来存储和管理的数据;
2) 非结构化数据:这类数据指各种文档: pdf, word, gif等。Oracle中使用大对象字段类型(LOB)来存储该类数据,但LOB存在效率问题,所以在11g中,使用Securefile来存储这类非结构化数据。(Securefile提供压缩、加密等功能,并且提高效率)
3) 以文档/内容为中心的数据(document-centric/content-centric):这类数据的代表是XML文档。Oracle提供了XML数据库来管理这类文档。(我对Oracle的XML数据库研究不深,所以不深入说明了)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13353915/viewspace-614576/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13353915/viewspace-614576/