ストレージリソースプロバイダーの概要

概要

AEM Communities 6.1 以降、コミュニティコンテンツ(一般的にユーザー生成コンテンツ(UGC)と呼ばれる)は、ストレージリソースプロバイダー(SRP)によって提供される単一の共通ストアに格納されます。

複数の SRP オプションがあり、それらはすべて、作成、読み取り、更新および削除(CRUD)操作がすべて含まれた、新しい AEM Communities インターフェイスである SocialResourceProvider API(SRP API)によって UGC にアクセスします。

すべての SCF コンポーネントは SRP API を使用して実装されるので、基になるトポロジまたは UGC の場所を知らなくてもコードを開発できます。

SocialResourceProvider API は、AEM Communities の使用許諾を得たお客様のみが使用できます。

メモ

カスタムコンポーネント:AEM Communities の使用許諾を得たお客様の場合、SRP API は、カスタムコンポーネントの開発者が、基になるトポロジに関係なく UGC にアクセスするために使用できます。See SRP and UGC Essentials.

関連トピック:

  • SRPとUGC Essentials - SRPユーティリティのメソッドと例。
  • SRP - Codingガイドラインを使用したUGCへのアクセス
  • SocialUtilsリファクタリング — 非推奨のユーティリティメソッドを現在のSRPユーティリティメソッドにマッピングします。

リポジトリについて

SRP を理解するには、AEM コミュニティサイトにおける AEM リポジトリ(OAK)の役割を理解することが必要です。

Java Content Repository(JCR) この規格では、コンテンツリポジトリのデータモデルおよびアプリケーションプログラミングインターフェイス(JCR API)が定義されます。従来のファイル・システムの特性とリレーショナル・データベースの特性を組み合わせ、コンテンツ・アプリケーションが頻繁に必要とする機能を多数追加します。

JCR の 1 つの実装が AEM リポジトリである OAK です。

Apache Jackrabbit Oak(OAK) OAK は、コンテンツ中心のアプリケーション向けに特別に設計されたデータストレージシステムである JCR 2.0 の実装です。これは、非構造化データや半構造化データを対象に設計された階層型データベースの一種です。 このリポジトリには、ユーザーに表示されるコンテンツだけでなく、アプリケーションで使用されるすべてのコード、テンプレートおよび内部データが格納されます。The UI for accessing content is CRXDE Lite.

JCR と OAK はどちらも、通常は AEM リポジトリを示すために使用されます。

非公開のオーサー環境でサイトコンテンツを開発した後、それを公開のパブリッシュ環境にコピーする必要があります。This is often done through an operation called replication. これは、作成者、開発者、管理者の管理下で発生します。

UGC の場合、コンテンツは公開のパブリッシュ環境で登録済みサイト訪問者(コミュニティメンバー)によって生成されます。これはランダムに発生します。

管理およびレポートの目的では、非公開のオーサー環境から UGC にアクセスすることが有用です。SRPを使用すると、作成者からのUGCへのアクセスはより一貫性が高く、発行から作成者への逆複製は不要です。

SRP について

UGC が共有ストレージに格納される場合、ほとんどのデプロイメントでオーサー環境とパブリッシュ環境の両方からアクセスできるメンバーコンテンツの単一インスタンスがあります。SRPの選択(MSRP、ASRP、JSRP)に関係なく、すべてのSRP APIを使用してプログラムからアクセスする必要があります。

メモ

See SRP and UGC Essentials for sample code and additional details.

コーディング時のベストプラクティスについては、SRP による UGC へのアクセスを参照してください。

ASRP

ASRP の場合、UGC は JCR には格納されず、Adobe がホストおよび管理するクラウドサービスに格納されます。ASRPに保存されたUGCは、CRXDE Liteで表示したり、JCR APIを使用してアクセスしたりすることはできません。

ASRP - Adobe ストレージリソースプロバイダーを参照してください。

開発者が UGC に直接アクセスすることはできません。

ASRP では検索に Adobe クラウドが使用されます。

MSRP

MSRP の場合、UGC は JCR には格納されず、MongoDB に格納されます。MSRPに保存されたUGCは、CRXDE Liteで表示したり、JCR APIを使用してアクセスしたりすることはできません。

MSRP - MongoDB ストレージリソースプロバイダーを参照してください。

MSRP は ASRP と互換性がありますが、すべての AEM サーバーインスタンスは同じ UGC にアクセスするので、共通のツールを使用して MongoDB に格納された UGC に直接アクセスできます。

MSRP では検索に Solr が使用されます。

JSRP

JSRP は、単一 AEM インスタンス上のすべての UGC にアクセスするためのデフォルトのプロバイダーです。MSRPやASRPを設定しなくても、AEM Communities6.1を素早く体験できます。

See JSRP - JCR Storage Resource Provider.

JSRP の場合、UGC は JCR に格納され、CRXDE Lite と JCR API の両方でアクセスできますが、JCR API は使用しないことを強くお勧めします。使用すると、今後の変更によってカスタムコードが影響を受ける可能性があります。

さらに、オーサー環境とパブリッシュ環境のリポジトリは共有されません。発行インスタンスのクラスターは共有発行リポジトリになりますが、発行時に入力されたUGCは作成者に表示されないので、作成者からUGCを管理することはできません。 UGCは、そのUGCが入力されたインスタンスのAEMリポジトリ(JCR)でのみ持続します。

JSRPはOakインデックスをクエリに使用します。

JCR でのシャドウノードについて

UGC へのパスを模倣するシャドウノードは、以下の 2 つの目的のためにローカルリポジトリに存在します。

  1. アクセス制御(ACL)
  2. 存在しないリソース(NER)

SRPの実装に関係なく、実際のUGCはシャドウノードと同じ場所に*表示されません。

For Access Control (ACLs)

一部の SRP 実装(ASRP や MSRP など)では、コミュニティコンテンツは ACL 検証が提供されないデータベースに格納されます。シャドウノードは、ACLを適用できるローカルリポジトリ内の場所を提供します。

SRP API を使用すると、すべての SRP オプションによって、すべての CRUD 操作の前にシャドウの場所の同じチェックが実行されます。

ACL チェックでは、リソースの UGC に適用される権限のチェックに適したパスを返すユーティリティメソッドが使用されます。

See SRP and UGC Essentials for sample code.

For Non-Existing Resources (NERs)

一部のコミュニティコンポーネントはスクリプトに含めることができ、したがってコミュニティ機能をサポートするために Sling アドレス可能ノードが必要です。含まれるコンポーネント は、「既存以外のリソース(NER)」と呼ばれます。

シャドウノードによって、リポジトリ内の Sling アドレス可能な場所が提供されます。

注意

シャドウノードには複数の用途があるので、シャドウノードの存在はコンポーネントが NER であることを意味しません。**

格納場所

Following is an example of a shadow node, using the Comments component in the Community Components Guide:

  • コンポーネントは次の場所にあるローカルリポジトリに存在します。

    /content/community-components/en/comments/jcr:content/content/includable/comments

  • 対応するシャドウノードは、次の場所にあるローカルリポジトリに存在します。

    /content/usergenerated/content/community-components/en/comments/jcr:content/content/includable/comments

シャドウノードの下には UGC はありません。

デフォルトの動作では、関連するサブツリーが読み取りまたは書き込み用に参照されるたびに、発行インスタンスにシャドウノードを設定します。

As an example, suppose the deployment is MSRP with a TarMK publish farm.

When a member posts UGC on pub1 (stored in MongoDB), shadow nodes are created in JCR on pub1.

pub2でUGCを初めて読み取るとき、何も設定されていない場合は、デフォルトの動作でシャドウノードが作成されます。

デフォルト以外の動作が必要な場合は、それをオーサーインスタンスで設定し、すべてのパブリッシュインスタンスにロールフォワードする必要があります。これは通常は手動プロセスです。

このページ