4

我正在使用 Apache JackRabbit 来存储我的应用程序的图像。我刚开始使用它,我还有一些问题没有得到解答:

  1. 内容存储库和数据库有什么区别?

  2. 您可以使用内容存储库而不是数据库来保存应用程序的所有数据吗?(我知道您可以添加所有类型的节点和属性,如果您真的应该将所有内容保存在内容存储库中,这更像是一个问题)。

  3. 内容存储库是否总是按层次组织?

我正在努力定义内容存储库的定义。

4

2 回答 2

3

我正在使用 Apache JackRabbit 来存储我的应用程序的图像。

为什么?如果你不知道它是干什么用的?这不是它最擅长的事情之一。您最好将图像存储在文件系统中。

内容存储库和数据库有什么区别?

数据库用于存储您希望以事务方式访问的结构化数据。内容存储库基本上用于文档,您可能需要在其中进行版本控制、层次结构、所有权等。

您可以使用内容存储库而不是数据库来保存应用程序的所有数据吗?

是的,但你不应该。

内容存储库是否始终按层次结构组织?

如何组织它取决于您,但这是通常的方式。

例如,我目前使用四个数据存储:

  1. 文件系统,用于图像和其他静态资源。
  2. 用于结构化交易数据的数据库。
  3. LDAP 服务器,用于用户数据。
  4. 一个 JCR 存储库,用于文档、版本控制、层次结构、WebDAV 访问等。
于 2013-12-21T00:59:42.707 回答
3

如果你允许一个无耻的插件,我的“ Java Content Repository - 两全其美”文章可能有助于理解什么是内容存储库。

在 JSR 283 规范中,Java Content Repository 被定义为

面向内容的应用程序常用的数据存储和相关服务的抽象模型和 Java API。

所以你可以说它是一个最适合面向内容的应用程序的存储系统,例如作为网站的后端。它更类似于分层数据库和对象数据库,而不是关系数据库,我们经常将其称为“类固醇文件系统”,这意味着它非常适合文件存储,但功能更多。上述定义中的“相关服务”非常丰富,包括版本控制、观察、细粒度访问控制、结构化和全文搜索——在处理内容时需要的许多东西。

话虽如此,我不同意@EJP 的观点,即使用多个数据存储必然更好 - JCR 的一个主要好处是它很好地将文件存储与类似数据库的操作和非结构化无模式存储集成在一起,而不需要那种混合系统 @ EJP 提到,这可能更难管理。根据您的需要,更专业的存储系统可能有用,但 JCR 提供了许多开箱即用的功能,如果您创建自己的混合存储系统,则必须重新发明这些功能。

于 2013-12-23T09:32:50.080 回答