2011-03-17 108 views
4

我正在嘗試確定哪種類型的持久性管理器用於我的項目。我讀了wiki entry about persistenceManagersJackRabbit持久性管理器的說明

首先,由於JCR-2802(所有非束PM棄用),僅存在

BundleFsPersistenceManager 
BundleDbPersistenceManager 
     Mysql,H2,PostgreSQL,Oracle,Derby,MSSQL - PersistenceManagers 

和所有那些InMem,對象,XML PersistenceManagers被棄用。 (MemoryFileSystem仍然OK,而InMemPM不推薦?)

因此,正如我所見,BundleFsPersistenceManager使用LocalFileSystem來保存文件(是否有一個wiki條目解釋了內容如何存儲到文件? - 就像不同類型的節點屬性如nt:file)和BundleDbPersistenceManager使用DbFileSystem將完全相同的文件存儲到DBMS中?否則,lucene索引和全文搜索將不可能正確嗎?

因此,原因是系統和原子性的聚類和分佈性質...否則數據庫實現將是多餘的權利?像這樣的人有更多的選擇。

回答

3

MemoryFileSystem仍然OK,而InMemPM已棄用?

是......內存中的持久性管理器已過時,因爲它允許運行快速單元測試,這有點令人傷心。但是,您也可以將數據庫持久性管理器與內存數據庫(例如H2數據庫)一起使用。

有沒有一個wiki條目可以解釋如何將內容存儲到文件中?

不,因爲這是一個實現細節,可以隨時更改,您不需要自己解析或編寫這些文件,而是使用Jackrabbit。

等不同類型的節點的性能如NT的:文件

文件內容存儲在數據存儲中。節點和屬性數據以及指向數據存儲的鏈接是持久性管理器。

否則lucene索引和全文搜索將不可能正確嗎?

Lucene索引獨立於持久性管理器或持久性管理器使用的數據格式。 Lucene索引內部不直接訪問持久性管理器數據。

否則數據庫的實現將是多餘的權利?

這只是有些人喜歡將所有數據存儲在數據庫中(例如因爲他們已經有數據庫並且非常瞭解如何操作/備份/維護它)。大多數人似乎可以直接將數據存儲在文件系統中,但是在Jackrabbit中沒有內置的基於事務性文件的持久性管理器。爲此,您需要使用Jackrabbit擴展,如(商業)CRX from Adobe(免責聲明:我爲Adobe工作)。

相關問題