我試圖評估內容存儲庫(JSR283),如Jackrabbit和ModeShape,但我必須承認,我不明白什麼問題可以解決的第一位,即使它是一個很好的選擇項目。你認爲哪種情況是最佳的解決方案?與關係數據庫不同,除了大小?爲什麼?指出現實世界的例子的額外點。何時使用JCR(內容存儲庫)而不是其他選項?
在此先感謝。
我試圖評估內容存儲庫(JSR283),如Jackrabbit和ModeShape,但我必須承認,我不明白什麼問題可以解決的第一位,即使它是一個很好的選擇項目。你認爲哪種情況是最佳的解決方案?與關係數據庫不同,除了大小?爲什麼?指出現實世界的例子的額外點。何時使用JCR(內容存儲庫)而不是其他選項?
在此先感謝。
JCR庫比的RDBMS不同,因爲JCR倉庫:
你當然可以建立這些功能全部或部分在自己的應用程序,但中可能會遠離您的應用程序的主要目的。
什麼樣的應用程序可以從這些功能中受益?內容管理系統長期以來一直使用存儲庫,而JCR(和Jackrabbit)確實是出於對通用標準API訪問不同內容存儲庫的需求(請參閱JSR-170和JSR-283)。
另一個例子是文件管理系統,它管理電子文件(通常是紙質文件的圖像)並提供搜索和查詢。 DMS已經使用了一段時間的存儲庫。
工件管理系統可以使用存儲庫管理數字工件(通常是文件)以及附加信息(元數據)。 JCR在這裏工作得很好,因爲您可以將元數據存儲在與文件相同的位置:理解這些額外屬性的元數據可以看到它們,不關心的人不必看到它們。我知道Artifactory是使用JCR的Maven存儲庫實現。還有用於管理Web服務工件,數據服務工件和測試工件的存儲庫。
但JCR存儲庫不用於管理文件。 JCR使用節點層次結構的簡單概念,其中節點可以包含命名屬性(具有一個或多個值)和子節點。允許的屬性和子節點完全由節點類型決定,可以根據需要逐節點更改和混合節點類型。 JCR預先定義了一些常用的內置節點類型,如用於表示存儲庫中的文件和文件夾的類型。您可以重用這些內置類型,擴展它們或編寫自己的類型。許多人主張使用mixin幾乎是作爲方面或方面的,所以如果一個節點需要採取一個方面,你可以簡單地添加一個mixin到節點。
JCR旨在輕鬆支持將XML內容導入存儲庫,其中每個元素映射到一個節點,並且每個屬性映射到一個屬性。很多東西都使用XML(或YAML或JSON)表示,並且所有這些都可以很容易地表示並存儲在JCR存儲庫中。作爲示例,請考慮存儲配置信息的JCR存儲庫(通常可能存儲在多個XML文件中)。 JCR可以對該信息進行版本控制,允許從多個進程訪問該信息,啓用查詢和搜索,並在內容更改時通知應用程序。
有幾個很好的JCR的概述與更多的細節和例子。其中的幾個是:
Titus Barik介紹Java Content Repository API < - 鏈接已損壞。 – 2014-07-22 11:46:41
我懷疑我是唯一一個喜歡知道什麼是什麼,它是什麼以及何時/爲什麼我想要使用它的人,以防萬一我遇到了一個很適合它的問題。 – cHao 2010-10-11 21:13:55
如果有人解釋了內容存儲庫與目錄服務(LDAP)的不同之處,這將非常有用。那麼它與NoSQL數據庫有什麼不同呢? – Ryan 2016-07-13 19:50:21