2006/10/12

Java Content Repository

由於傳統的Ralational & Object DB缺少了資料倉儲的彈性,沒有版本控制等等功能,Content Repository API (JSR 170) 定義標準的資料倉儲介面API。JSR 170值得注意的地方,除了要囊括不同儲存媒體的遠大目標之外(就是以同樣的API面對不同的儲存媒體,例如RDB、File System等等,單純地以設定的方式決定儲存媒體),還有它是從誕生開始就以Open Source為出發點的一個標準(ref: Java Community Process (JCP) 2.6 - More Ways to Get Involved),就連TCK也是使用Apache的授權。

Apache Jackrabbit提供了JSR 170的open source implementation,在使用Jackrabbit之前,要先決定deployment的方式(Jackrabbit Example Deployment Models),分為三種:Model 1: The (Web-) Application Bundle、Model 2: Shared J2EE Resource、Model 3: The Repository Server,但三種model的設定方式差異不大,問題的重點在決定配置伺服器的架構。

JSR 170制訂了JCR 1.0的標準,Day Software 已經提出修改的JSR 283:JCR 2.0標準,目前還在草案階段,Apache Jackrabbit是JCR的open source實作,現在已經完成JCR 1.0而且正在實作2.0當中,但Jackrabbit還不是很成熟的軟體。

1. 實體資料部份,例如SimpleDbPersistenceManager,目前只會將ItemState與NodeReferences這兩個物件,直接序列化儲存起來,且只有key, data的簡單儲存而已,並不會將各attributes分開在不同欄位儲存。

2. Query使用XPath Parser與SQL Parser兩種,並以XQuery Grammer支援"group by"的語法,XQuery目前還在草案階段,而且文件並沒有對查詢多加解釋,沒有很多sample code,我並不知道怎麼使用。

3. 需要提供一個 (web) generic JCR client

4. Security的部份,目前只有SimpleAccessManager,分為三種角色anonymous, normal, system,而anonymous只有read的權限,normal與system有read/write權限,目前權限只控制了root node,換句話說,normal與system對整棵樹都有r/w權限。


經過簡單的survey後,還是覺得暫時不要踏入JCR的環境,等到Jackrabbit成熟一點再說吧!或者說,等到使用Jackrabbit實做的CMS成熟一點再說吧。