79

JackrabbitModeShapeなどのコンテンツリポジトリ(JSR283)を評価しようとしていますが、そもそもどの問題が解決するのか、そしてそれがプロジェクトにとって良い選択であるとしても、私は理解していないことを告白しなければなりません。どのケースを適用するのが最善だと思いますか?サイズ以外はリレーショナルデータベースと同じではありませんか?なんで?実世界の例を示すための追加のポイント。

前もって感謝します。

4

1 に答える 1

90

JCRリポジトリは次の理由でRDBMSとは異なります。

  • は階層的であるため、ニーズに厳密に一致する構造にコンテンツを整理でき、関連情報が近くに保存されることが多いため、簡単にナビゲートできます。
  • 柔軟性があり、コンテンツを適応させて進化させることができます。ノードタイプのシステムを使用すると、完全に「スキーマレス」から完全に制限されます(リレーショナルデータベースなど)。
  • 標準のJavaAPI(javax.jcrなど)を使用します
  • 情報が実際に保存される場所を抽象化します。多くのJCR実装は、さまざまなリレーショナルデータベースやその他のストアにコンテンツを保存でき、JCR APIを介して非JCRストアを公開できるものもあれば、複数のストアを単一の仮想リポジトリに統合できるものもあります。
  • 箱から出してクエリと全文検索をサポート
  • イベント、ロック、バージョン管理、およびその他の機能をサポートします

確かに、これらの機能のすべてまたは一部を独自のアプリケーションで構築できますが、それはおそらく、アプリの主な目的から遠く離れています。

これらの機能からどのような種類のアプリケーションが恩恵を受けることができますか?コンテンツ管理システムは長い間リポジトリを使用してきましたが、JCR(およびJackrabbit)は、さまざまなコンテンツリポジトリにアクセスするための共通の標準APIの必要性から実際に成長しました(JSR-170およびJSR-283を参照)。

もう1つの例は、電子ファイル(多くの場合紙の文書の画像)を管理し、検索とクエリを提供する文書管理システムです。DMSはしばらくの間リポジトリを使用してきました。

アーティファクト管理システムは、リポジトリを使用して、追加情報(メタデータ)とともにデジタルアーティファクト(多くの場合ファイル)を管理できます。JCRは、ファイルと同じ場所にメタデータを保存できるため、ここでうまく機能します。これらの追加のプロパティを理解している人はそれらを見ることができ、気にしない人はそれらを見る必要はありません。ArtifactoryはJCRを使用するMavenリポジトリの実装であることを私は知っています。Webサービスアーティファクト、データサービスアーティファクト、およびテストアーティファクトを管理するためのリポジトリもあります。

ただし、JCRリポジトリはファイルを管理するためのものではありません。JCRは、ノードの階層の単純な概念を使用します。ノードには、名前付きプロパティ(1つまたは複数の値)と子を含めることができます。許可されるプロパティと子ノードは、ノードタイプによって完全に決定されます。これらのタイプは、ノードごとに必要に応じて変更および混合できます。JCRは、リポジトリ内のファイルやフォルダを表すために使用されるものなど、一般的に必要とされるいくつかの組み込みノードタイプを事前定義します。これらの組み込み型を再利用したり、拡張したり、独自に記述したりできます。多くの人がミックスインをファセットまたはアスペクトとして使用することを提唱しているため、ノードがファセットを取得する必要がある場合は、ノードにミックスインを追加するだけで済みます。

JCRは、XMLコンテンツのリポジトリへのインポートを簡単にサポートするように設計されており、各要素はノードにマップされ、各属性は属性にマップされます。そして、多くのものはXML(またはYAMLまたはJSON)を使用して表現され、これらすべてを簡単に表現してJCRリポジトリに保存できます。例として、構成情報(通常は複数のXMLファイルに保管される可能性があります)を保管するJCRリポジトリーについて考えてみます。JCRは、その情報をバージョン管理し、複数のプロセスからのアクセスを許可し、クエリと検索を有効にして、コンテンツが変更されたときにアプリケーションに通知することができます。

JCRの概要と、詳細と例がいくつかあります。これらのいくつかは次のとおりです。

于 2010-10-11T19:39:05.427 に答える