java jcr使用_java – 什么时候使用JCR(内容存储库)超过其他选项?
JCR庫與RDBMS不同,因為JCR庫:
>是分層的,允許您在一個緊密匹配您的需求的結(jié)構(gòu)中組織您的內(nèi)容,相關(guān)信息通常存儲在一起,從而輕松導(dǎo)航
>是靈活的,允許內(nèi)容適應(yīng)和演進,使用可以完全“無模式”到完全限制性(例如,像關(guān)系數(shù)據(jù)庫)的節(jié)點類型系統(tǒng),
>使用標(biāo)準(zhǔn)Java API(例如,javax.jcr)
>摘要信息真正存儲在哪里:許多JCR實現(xiàn)可以將內(nèi)容存儲在各種關(guān)系數(shù)據(jù)庫和其他存儲中,有些可以通過JCR API公開非JCR存儲,有些可以將多個存儲聯(lián)合到單個虛擬存儲庫中。
>支持開箱即用的查詢和全文搜索
>支持事件,鎖定,版本控制和其他功能
你當(dāng)然可以在你自己的應(yīng)用程序中構(gòu)建所有或部分功能,但這可能會遠離你的應(yīng)用程序的主要目的。
什么樣的應(yīng)用程序可以從這些功能中受益?內(nèi)容管理系統(tǒng)已經(jīng)使用了很長時間的存儲庫,JCR(和Jackrabbit)真的是因為需要一個通用的標(biāo)準(zhǔn)API來訪問不同的內(nèi)容存儲庫(見JSR-170和JSR-283)。
另一個例子是文檔管理系統(tǒng),其管理電子文件(其通常是紙質(zhì)文檔的圖像)并提供搜索和查詢。 DMS已經(jīng)使用了一段時間的倉庫。
工件管理系統(tǒng)可以使用存儲庫來管理數(shù)字工件(通常是文件)以及附加信息(元數(shù)據(jù))。 JCR在這里工作得很好,因為您可以將元數(shù)據(jù)存儲在與文件相同的位置:那些理解這些額外的屬性可以看到它們,那些不在乎不必看到它們。我知道Artifactory是一個使用JCR的Maven存儲庫實現(xiàn)。還有用于管理Web服務(wù)工件,數(shù)據(jù)服務(wù)工件和測試工件的存儲庫。
但JCR存儲庫不是用于管理文件。 JCR使用節(jié)點層次結(jié)構(gòu)的簡單概念,其中節(jié)點可以包含命名屬性(具有一個或多個值)和子級。允許的屬性和子節(jié)點完全由節(jié)點類型支配,節(jié)點類型可以根據(jù)需要在逐個節(jié)點的基礎(chǔ)上更改和混合。 JCR預(yù)定義了通常需要的一些內(nèi)置節(jié)點類型,如用于表示存儲庫中的文件和文件夾的類型。您可以重用這些內(nèi)置類型,擴展它們或編寫自己的類型。許多人主張使用mixin幾乎作為方面或方面,所以如果一個節(jié)點需要采取一個方面,你可以簡單地添加一個mixin到節(jié)點。
JCR旨在輕松支持將XML內(nèi)容導(dǎo)入存儲庫,其中每個元素都映射到一個節(jié)點,每個屬性都映射到一個屬性。許多東西是使用XML(或YAML或JSON)表示的,所有這些都可以很容易地表示和存儲在JCR存儲庫中。作為示例,考慮存儲配置信息(通常可以存儲在多個XML文件中)的JCR存儲庫。 JCR可以對該信息進行版本化,允許從多個進程訪問它,啟用查詢和搜索,并在內(nèi)容更改時通知應(yīng)用程序。
有幾個很好的概述JCR與更多的細節(jié)和例子。其中一些是:
總結(jié)
以上是生活随笔為你收集整理的java jcr使用_java – 什么时候使用JCR(内容存储库)超过其他选项?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [luogu p2440] 木材加工
- 下一篇: OLTP+OLAP->HTAP