JackRabbit 持久性管理器澄清
我正在尝试决定为我的项目使用哪种类型的持久性管理器。我阅读了关于 persistenceManagers 的 wiki 条目。
首先,由于 JCR-2802(所有非捆绑 PM 均已弃用),仅
BundleFsPersistenceManager
BundleDbPersistenceManager
Mysql,H2,PostgreSQL,Oracle,Derby,MSSQL - PersistenceManagers
且所有 InMem、Object、Xml PersistenceManager 均已弃用。 (MemoryFileSystem 仍然可以,而 InMemPM 已被弃用?)
因此,正如我所见,BundleFsPersistenceManager 使用 LocalFileSystem 来持久化文件(是否有一个 wiki 条目解释了如何将内容存储到文件中? - 就像不同类型的节点属性,例如文件系统上的 nt:file) 和 BundleDbPersistenceManager 使用 DbFileSystem 将完全相同的文件存储到 DBMS 中?否则 lucene 索引和全文搜索将不可能实现,对吗?
所以原因是系统的集群和分布式特性以及原子性......否则数据库实现将是多余的,对吗?这样人们就有了更多的选择。
I'm trying to decide what type of persistence manager to use for my project. I read this wiki entry about persistenceManagers.
First of all, due to JCR-2802 (all non-bundle PM deprecated), there are only
BundleFsPersistenceManager
BundleDbPersistenceManager
Mysql,H2,PostgreSQL,Oracle,Derby,MSSQL - PersistenceManagers
and all those InMem, Object, Xml PersistenceManagers are deprecated. (MemoryFileSystem still OK while InMemPM is deprecated ?)
So that as I see this, BundleFsPersistenceManager uses LocalFileSystem to persist files (is there a wiki entry that explains the means of how content is stored into files? - like different types of node properties such as nt:file) on filesystem and BundleDbPersistenceManager uses DbFileSystem to store the exact same files into DBMS ? Otherwise lucene indexing and full text searching wouldn't be possible right ?
So that the reasons are clustering and distributed nature of systems and atomicity...otherwise the database implementation would be redundant right ? Like this people have more choices.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的......内存持久性管理器已被弃用,这有点令人遗憾,因为它允许运行快速单元测试。但是,您也可以将数据库持久性管理器与内存数据库(例如 H2 数据库)一起使用。
不,因为这是一个实现细节,可能会发生变化,所以您不需要自己解析或编写此类文件,而应使用 Jackrabbit。
文件内容存储在DataStore中。节点和属性数据以及链接到数据存储是持久性管理器。
Lucene 索引独立于持久性管理器或持久性管理器使用的数据格式。 Lucene 索引内部不直接访问持久性管理器数据。
只是有些人更喜欢将所有数据存储在数据库中(例如因为他们已经拥有数据库并且非常了解如何操作/备份/维护它)。大多数人似乎可以直接将数据存储在文件系统中,但是 Jackrabbit 中没有内置的基于事务文件的持久性管理器。为此,您需要使用 Jackrabbit 扩展,例如(商业)CRX Adobe(免责声明:我为 Adobe 工作)。
Yes... It's a bit sad the the in-memory persistence manager is deprecated, because it allows to run fast unit tests. However, you could also use a database persistence manager together with an in-memory database (such as an H2 database).
No, because this is an implementation detail and subject to change, you shouldn't ever need to parse or write such files yourself, and use Jackrabbit instead.
File content is stored in the DataStore. Node and property data and links to the data store is the persistence manager.
Lucene indexing is independent on the persistence manager or the data format the persistence manager uses. The Lucene indexing internally doesn't access the persistence manager data directly.
It's just that some people prefer storing all data in a database (for example because they already have a database and know very well how to operate / backup / maintain it). The majority seems to be OK to store the data in the file system directly, however there is no built-in transactional file based persistence manager in Jackrabbit. For this, you would need to use a Jackrabbit extension such as the (commercial) CRX from Adobe (disclaimer: I work for Adobe).