2010-10-11 30 views
68

Ben Jackrabbit ve ModeShape gibi içerik depoları (JSR283) değerlendirmek için çalışıyorum ama ilk etapta giderir hangi problemi ve proje için iyi bir seçim olsa bile anlamıyorum itiraf etmeliyim. Hangi davaları uygulamak için en iyi çözüm olduğunu düşünüyorsunuz? Boyut haricinde ilişkisel veritabanları ile aynı şey değil mi? Niye ya? Gerçek dünya örneklerini işaret etmek için ekstra puan.JCR (içerik deposu) diğer seçenekler üzerinde ne zaman kullanılmalıdır?

Şimdiden teşekkürler.

+8

Bunun için iyi bir uygunluk olacak bir sorunla karşılaşırsam, hangi şeyin ne olduğunu ve ne zaman ve neden kullanmak isteyebileceğini bilmek isteyen tek kişi olduğumdan şüpheliyim. . – cHao

+0

Birisi, bir içerik havuzunun bir dizin hizmetinden (LDAP) farklı olduğunu açıkladıysa yararlı olur. Bir NoSQL veritabanından nasıl farklıdır? – Ryan

cevap

79

JCR depoları, RDBMS'lerinde farklıdır bir JCR depo çünkü:

  • , hiyerarşik aşağıdadır yakından ihtiyaç ve nerede ilgili bilgiler eşleşen bir yapı içinde içeriğinizi düzenlemek için izin genellikle birlikte ve böylece yakın saklanır kolayca
  • standart bir Java API (kullanır (ilişkisel veritabanı gibi, örneğin) tam üzerinde sınırlayıcı tamamen "şemasız" olabilir bir düğüm tipi sistem kullanılarak, adapte gelişmeye içerik izin veren esnek bir navigasyon örneğin, javax.jcr)
  • bilgi gerçekten depolandığı
  • özetler: Birçok JCR uygulamaları ilişkisel veri tabanlarının ve diğer mağazalardan çeşitli içerik saklayabilirsiniz, bazı JCR API üzerinden dışı JCR depolarını açığa çıkarabilir ve bazı tek sanal depoya birden fazla mağaza federe olabilir .
  • olayları, kilitleme, sürüm ve diğer özellikler
Kesinlikle kendi uygulamanızda bu özelliklerin tümünü veya bir kısmını oluşturabilir

, ama bu destekler kutudan çıktığı sorgular ve tam metin arama destekler büyük olasılıkla uygulamanızın ana amacından daha da uzaklaşır.

bu özelliklerden uygulamaların ne gibi faydası olabilir? İçerik yönetimi sistemleri, depoları uzun bir süre boyunca kullandılar ve JCR (ve Jackrabbit), farklı içerik havuzlarına erişmek için yaygın ve standart bir API gereksiniminin ortaya çıkmasına neden oldu (bkz. JSR-170 ve JSR-283).

başka örnek (genellikle kağıt belgelerin görüntülerdir) elektronik dosyaları yönetmek ve arama ve sorgu sağlamak doküman yönetim sistemleri vardır. DMS'ler bir süredir depoları kullandılar.

Artifakt yönetim sistemleri ek bilgi (meta) ile birlikte (genellikle dosyaları) dijital eserler yönetmek için depoları kullanabilirsiniz. Bu ekstra özelliklere anlayanlar onları görebilirsiniz, onları görmek gerekmez umurumda değil olanlar: Dosyaların aynı konumda meta saklayabilirsiniz çünkü JCR, burada iyi çalışıyor. Biliyorum Artifactory JCR kullanan Maven depo uygulaması. Web hizmeti eserleri, veri hizmeti eserleri ve test eserler yönetmek için depolar da vardır.

Ama JCR depoları dosyalarını yönetmek için değil. JCR, düğümlerin hiyerarşinin basit bir nosyonunu kullanır; burada düğümler adlandırılmış özellikler (bir veya daha fazla değerle) ve çocuklar içerebilir. İzin verilen özellikler ve çocuk düğümü tamamen düğüm düğümleri tarafından belirlenir ve bunlar düğüm düğümlü olarak gerektiğinde değiştirilebilir ve karıştırılabilir. JCR, depodaki dosya ve klasörleri temsil etmek için kullanılanlar gibi yaygın olarak ihtiyaç duyulan bazı yerleşik düğüm türlerini önceden belirler. Bu yerleşik türleri tekrar kullanabilir, genişletebilir veya kendiniz yazabilirsiniz. Birçok kişi, karekterleri neredeyse yüzler veya yönler olarak kullanmayı savunmaktadır, böylece eğer bir düğüm bir yüz üzerinden ele almak istiyorsa, düğüm için bir karıĢım ekleyebilirsiniz.

JCR, XML öğesinin depoya aktarılmasını kolayca desteklemek için tasarlanmıştır; burada her öğe bir düğümle eşleştirilir ve her özellik bir öznitelikle eşlenir. Ve bir çok şey XML (veya YAML veya JSON) kullanılarak temsil edilir ve bunların hepsi kolayca bir JCR deposunda temsil edilebilir ve depolanabilir. Örnek olarak, yapılandırma bilgilerini depolayan bir JCR deposunu düşünün (normalde çoklu XML dosyalarında saklanabilir). JCR, bu bilgiyi kullanabilir, birden çok işlemden ona erişime izin verebilir, sorgulamayı ve aramayı etkinleştirebilir ve içerik değiştiğinde uygulamayı/bildirimleri bildirebilir.

Daha fazla ayrıntı ve örnek içeren birkaç iyi JCR gözden geçirmesi vardır. Bunlardan bazıları şunlardır:

+0

Titus Barik tarafından Java Content Repository API'nin tanıtımı <- bağlantı bozuk. –

İlgili konular