4

我正在尝试决定为我的项目使用哪种类型的持久性管理器。我读了这个关于 persistenceManagers 的 wiki 条目

首先,由于 JCR-2802(所有非捆绑 PM 已弃用),只有

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

并且所有这些 InMem、Object、Xml PersistenceManager 都已弃用。(不推荐使用 InMemPM 时,MemoryFileSystem 仍然可以吗?)

因此,正如我所看到的,BundleFsPersistenceManager 在文件系统上使用 LocalFileSystem 来持久化文件(是否有解释如何将内容存储到文件中的方式的 wiki 条目? - 就像不同类型的节点属性,例如 nt:file)和 BundleDbPersistenceManager 使用 DbFileSystem将完全相同的文件存储到 DBMS 中?否则无法进行 lucene 索引和全文搜索,对吗?

所以原因是系统的集群和分布式特性以及原子性......否则数据库实现将是多余的,对吗?这样人们就有了更多的选择。

4

1 回答 1

3

不推荐使用 InMemPM 时,MemoryFileSystem 仍然可以吗?

是的......内存持久性管理器已被弃用有点可悲,因为它允许运行快速单元测试。但是,您也可以将数据库持久性管理器与内存数据库(例如 H2 数据库)一起使用。

是否有解释内容如何存储到文件中的方式的 wiki 条目?

不,因为这是一个实现细节并且可能会发生变化,所以您永远不需要自己解析或编写此类文件,而是使用 Jackrabbit。

喜欢不同类型的节点属性,例如 nt:file

文件内容存储在 DataStore 中。节点和属性数据以及到数据存储的链接是持久性管理器。

否则无法进行 lucene 索引和全文搜索,对吗?

Lucene 索引独立于持久性管理器或持久性管理器使用的数据格式。Lucene 内部索引不直接访问持久性管理器数据。

否则数据库实现将是多余的吗?

只是有些人更喜欢将所有数据存储在数据库中(例如,因为他们已经拥有数据库并且非常了解如何操作/备份/维护它)。大多数人似乎可以直接将数据存储在文件系统中,但是 Jackrabbit 中没有内置的基于事务文件的持久性管理器。为此,您需要使用 Jackrabbit 扩展,例如 Adob​​e 的(商业)CRX(免责声明:我为 Adob​​e 工作)。

于 2011-03-18T09:08:19.660 回答