内容存储库中的工作空间是什么?

Luc*_*uke 1 java jackrabbit jcr java-ee content-repository

从JCR和Jackrabbit开始,我不明白工作空间是什么以及如何使用它.为什么它首先被命名为工作空间?存储库是数据库,工作空间如表格和项目如行(或几乎)?

Ber*_*taz 7

每个JCR工作区就像内容树中的不同根,因此您可以在工作区A中的/ foo处创建一个节点,在工作区B中创建一个不同的节点/ foo.

节点可以在其他工作空间中具有相应的节点:工作空间A的/ foo节点可以克隆到工作空间B中的/ foo,从而创建相应的节点.然后,两个节点可以在一段时间内保持自己的生活,同时保持对应,这允许稍后用一个JCR呼叫用另一个的内容更新一个节点.

这可以用于内容暂存,例如,一个工作空间保存网站的实时内容,而另一个工作空间保存分阶段内容.

我不确定与数据库的比较是什么,可能是具有某些功能的不同模式,这些模式允许使用另一组数据更新一组表.

在我的团队(Apache Sling,Adobe CQ/AEM)中,我们总是使用单个工作空间,根据我的经验,多个工作空间会使事情变得更复杂,而且我不喜欢它们.

http://wiki.apache.org/jackrabbit/DavidsModel规则#3建议仅在需要clone(),merge()和update()时使用工作区,这在我看来是个好建议,我会认真检查这些方法在使用工作区之前满足我的需要.