JCR基本概念

3

我最近在使用Magnolia CMS,它使用JCR。

我遇到的一个问题是JCR数据损坏,而我发现我对如何解决这种情况知之甚少。

我对JCR的理解如下:

  1. JCR是一种规范,有几种实现方式
  2. Jackrabbit是其中一种JCR实现方式
  3. Jackrabbit可以直接使用文件系统存储信息,也可以使用像MySQL这样的数据库存储信息

现在我的问题是:

  1. 如何备份和还原JCR库?
  2. 是否有特定的工具可用于检查给定JCR的完整性并尝试修复它? 我已经稍微尝试了一下toromiro。
  3. 是否有任何特定的信息/教程资源,我应该阅读以获得对JCR技术的全面和适当的理解?

更新:

我有其他问题:

  1. 如果给定的JCR实现将内容存储在数据库中,我能否期望所有内容都存储在该数据库中,或者可能会发生某些内容(例如图像)直接存储在文件系统而不是数据库中?
  2. 目前我们有一个JCR repo,由三个不同的Web服务器访问,我理解JCR规范考虑了这种情况并保护repo以防止由于并发写访问而导致内容不一致。 这是正确的吗?
  3. 具体而言,我们遇到的问题在于节点A包含对节点B的引用,但无法访问节点B,在使用groovy脚本后,我们设法删除了节点B(似乎处于不一致状态),但是我们如何找到所有对节点B的引用(可能不仅限于节点A引用它,还有节点C)。,顺便说一下,我们也尝试使用forceConsistencyCheck,autorepair和enableConsistencyCheck标志,但没有解决问题。

谢谢

1个回答

2
您对JCR的理解是正确的:它是一项规范,已被多个项目(包括Jackrabbit、ModeShape、Alfresco、eXo等)实现。事实上,JCR有多个版本(1.0、2.0和即将推出的2.1),并非所有实现都支持所有JCR版本。
(完全透明披露:我是ModeShape的创始人和领导者。)
备份JCR存储库没有标准或通用的方法,但是几个实现提供了自己的机制。例如,如果所有内容都存储在数据库管理系统中,则可以使用数据库管理系统的备份和还原功能。Jackrabbit有自己的备份机制,ModeShape也有。
您正在进行什么样的完整性检查,Toromino如何执行? JCR实现不应允许保存任何违反定义约束(例如,具有属性和子节点定义的节点类型定义)的内容,并且它们限制(以各种程度)这些节点定义的更改方式。
我不知道有哪些很好的 JCR 书籍或在线资源,但可以查看Jackrabbit文档ModeShape文档

谢谢提醒,有没有办法强制所有内容都存储在DBMS中?我还没有使用toromiro进行完整性检查,只是希望它能有所帮助。请查看我的更新问题,并用您的知识帮助我,非常感谢。 - Juan Antonio Gomez Moriano
存储什么内容以及存储在哪里很可能取决于特定JCR实现的配置。(ModeShape可以将所有内容存储在关系型数据库中,但我们建议不要存储索引,因为查询会变得太慢。)更熟悉Jackrabbit的人将不得不回答您的一致性检查问题。 - Randall Hauch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接