我正在try 判断像Jackrabbit和ModeShape这样的内容存储库(JSR283),但我必须承认,我不明白首先解决了什么问题,即使它对项目来说是一个很好的 Select .你认为哪种情况是最好的解决方案?除了大小之外,它与关系数据库不是一回事吗?为什么?为指出真实世界的例子而加分.
提前谢谢您.
我正在try 判断像Jackrabbit和ModeShape这样的内容存储库(JSR283),但我必须承认,我不明白首先解决了什么问题,即使它对项目来说是一个很好的 Select .你认为哪种情况是最好的解决方案?除了大小之外,它与关系数据库不是一回事吗?为什么?为指出真实世界的例子而加分.
提前谢谢您.
JCR存储库不同于RDBMS,因为JCR存储库:
你当然可以在自己的应用程序中构建所有或部分这些功能,但这可能与你的应用程序的主要目的相go 甚远.
哪些类型的应用程序可以从这些功能中受益?内容管理系统使用存储库已经有很长一段时间了,JCR(和JackRabb)确实是由于需要一个通用的标准API来访问不同的内容存储库而发展起来的(参见JSR-170和JSR-283).
另一个例子是文档管理系统,它管理Electron 文件(通常是纸质文档的图像),并提供搜索和查询.DMSE使用存储库已有一段时间了.
工件管理系统可以使用存储库来管理数字工件(通常是文件)以及附加信息(元数据).JCR在这里工作得很好,因为您可以将元数据存储在与文件相同的位置:理解这些额外属性的人可以看到它们,而不关心这些属性的人不必看到它们.我知道Artifactory是一个使用JCR的Maven存储库实现.还有用于管理Web服务构件、数据服务构件和测试构件的存储库.
但是JCR存储库不是用来管理文件的.JCR使用 node 层次 struct 的简单概念,其中 node 可以包含命名属性(具有一个或多个值)和子 node .允许的属性和子 node 完全由 node 类型决定, node 类型可以根据需要逐个 node 进行更改和混合.JCR预定义了一些常用的内置 node 类型,如用于表示存储库中的文件和文件夹的类型.您可以重用这些内置类型、扩展它们或编写自己的类型.许多人主张几乎将Mixin用作方面或方面,这样,如果 node 需要采用某个方面,您只需向该 node 添加一个Mixin即可.
JCR旨在轻松支持将XML内容导入存储库,其中每个元素映射到一个 node ,每个属性映射到一个属性.很多东西都是用XML(或YAML或JSON)表示的,所有这些都可以很容易地表示并存储在JCR存储库中.举个例子,考虑一个存储配置信息的JCR存储库(通常可以存储在多个XML文件中).JCR可以对该信息进行版本化,允许从多个进程访问该信息,启用查询和搜索,并在内容更改时通知应用程序.
有几个关于JCR的很好的概述,其中有更多的细节和示例.其中几个是: