2014-02-18 95 views
2

我与木兰CMS这恰好使用JCR最近的工作。JCR基本概念

一个我必须面对的问题是JCR数据损坏,我发现我有如何解决的情况知之甚少。

我JCR的理解如下:

  1. JCR是一个规范,有几种实现方式
  2. 贾卡拉比特是一个JCR实现
  3. 贾卡拉比特可以直接使用该文件系统或使用存储的信息像MySQL
  4. 数据库

现在我的问题是

  1. 如何备份和恢复JCR存储库?
  2. 有没有可以用来检查一个给定的JCR完整性和尝试修复它任何特别的工具吗?我一直在玩托罗米罗。
  3. 是否有信息/教程的任何特定的资源,我应该要读获得JCR技术的全面和正确的认识?

更新:

我有一些其他问题:

  1. 如果给定的JCR实现存储数据库的内容,我能想到的所有内容将被存储在该数据库或者可能发生某些内容(即图像)会直接存储在文件系统而不是数据库中?
  2. 目前我们有由三个不同的Web服务器访问的JCR回​​购,这是我的理解是,JCR规范认为这种情况下,它保护了回购,以防止上的内容不一致因并发写访问。它是否正确?
  3. 具体而言,我们遇到的问题包括在具有包含到节点B的参考节点A,但节点B为不可访问,使用Groovy脚本后,我们成功地删除节点B(这似乎是在不一致的状态),但是,我们怎么能找到所有对节点B的引用(可能不仅仅是节点A引用它,而且还有节点C)。到底该如何导致JCR回购变得腐败?,顺便说一句,我们也尝试使用forceConsistencyCheck,autorepair和enableConsistencyCheck标志,它没有解决问题。

感谢

回答

2

你的JCR的理解是正确的:它是一个已经被多个项目(包括兔崽子,振形,露天,EXO等)实施了规范。事实上,JCR有很多版本(1.0,2.0和很快2.1),并不是所有的实现都支持所有的JCR版本。

(全面披露:我是创始人和振形铅)

有备份JCR仓库没有标准,也没有普遍的方式,但几个实现提供自己的机制。例如,如果所有内容都存储在DBMS中,则可以使用DBMS备份和还原功能。 Jackrabbit拥有自己的backup mechanism,与ModeShape一样。

你正在做什么样的完整性检查,以及Toromino如何做到这一点? JCR实现不应该允许保存违反定义的约束的任何内容(例如,具有属性和子节点定义的节点类型定义),并且它们限制(不同程度地)这些节点定义可以如何改变。

我不知道任何出色的JCR书籍或在线资源,但看看Jackrabbit docsModeShape docs

+0

感谢您的支持,有没有办法强制所有的内容生活在数据库管理系统?我还没有和托罗米罗做完整的检查,我只是用了一点点,希望能帮上忙。请看我更新的问题,并帮助我了解你的知识,非常感谢。 –

+0

存储的内容取决于特定JCR实现的配置。 (ModeShape可以将所有内容存储在关系数据库中,我们建议索引不会因为查询变得太慢)。对Jackrabbit更熟悉的人将必须回答您的一致性检查问题。 –