ストレージリソースプロバイダーの概要 storage-resource-provider-overview
はじめに introduction
Adobe Experience Manager (AEM) Communities 6.1では、一般的にユーザー生成コンテンツ (UGC)と呼ばれるコミュニティコンテンツが、 ストレージリソースプロバイダー (SRP)が提供する1つの共通ストアに保存されています。
新しいAEM Communities インターフェイス SocialResourceProvider API (SRP API)を介してUGCにアクセスするSRP オプションがいくつかあり、これには、すべての作成、読み取り、更新、削除(CRUD)操作が含まれます。
すべてのSCF コンポーネントはSRP APIを使用して実装されているため、基になるトポロジ またはUGCの場所を知らずにコードを開発できます。
SocialResourceProvider APIは、AEM Communitiesのライセンスを取得したお客様のみが利用できます。
関連トピック:
- SRPおよびUGC Essentials - SRP ユーティリティのメソッドと例。
- SRPを使用したUGCへのアクセス - コーディング ガイドライン。
- SocialUtils リファクタリング – 非推奨のユーティリティメソッドを現在のSRP ユーティリティメソッドにマッピングします。
リポジトリについて about-the-repository
SRPを理解するには、AEM コミュニティサイトでのAEM リポジトリ(Oak)の役割を理解することが役立ちます。
Java™ コンテンツ リポジトリ (JCR)
この標準は、コンテンツリポジトリのデータモデルとアプリケーションプログラミングインターフェイス(JCR API)を定義します。 従来のファイルシステムの特徴とリレーショナルデータベースの特徴を組み合わせ、コンテンツアプリケーションに必要な追加機能をいくつか追加します。
JCRの実装の1つは、AEM リポジトリであるOakです。
Apache Jackrabbit Oak
Oakは、コンテンツ中心のアプリケーション向けに設計されたデータ ストレージ システムであるJCR 2.0の実装です。 これは、非構造化データと半構造化データ用に設計された階層データベースの一種です。 リポジトリには、ユーザーに表示されるコンテンツだけでなく、アプリケーションで使用されるすべてのコード、テンプレート、内部データも保存されます。 コンテンツにアクセスするためのUIはCRXDE Liteです。
JCRとOakの両方は、通常、AEM リポジトリを参照するために使用されます。
プライベートオーサー環境でサイトコンテンツを開発した後、パブリックパブリッシュ環境にコピーする必要があります。 これは多くの場合、replicationという操作を通じて行われます。 これは作成者/開発者/管理者のコントロール下で行われます。
UGCの場合、コンテンツは登録されたサイト訪問者(コミュニティメンバー)によってパブリッシュ環境に入力されます。 ランダムに発生します。
管理とレポートの目的では、プライベート オーサー環境からUGCにアクセスできることが便利です。 SRPでは、オーサーからオーサーへのリバースレプリケーションは必要ないため、オーサーからのUGCへのアクセスがより一貫性があり、パフォーマンスも高くなります。
SRPについて about-srp
UGCを共有ストレージに保存すると、メンバーコンテンツのインスタンスが1つだけ存在します。ほとんどのデプロイメントでは、オーサー環境とパブリッシュ環境の両方からアクセスできます。 SRPの選択(MSRP、ASRP、JSRP)に関係なく、すべてはSRP APIを使用してプログラムでアクセスする必要があります。
ASRP asrp
ASRPがある場合、UGCはJCRに保存されず、Adobeでホストおよび管理されるクラウドサービスに保存されます。 ASRPに保存されたUGCは、CRXDE Liteで表示したり、JCR APIを使用してアクセスしたりすることはできません。
ASRP - Adobe ストレージリソースプロバイダーを参照してください。
開発者がUGCに直接アクセスすることはできません。
ASRPは、クエリにAdobe Cloudを使用しています。
MSRP msrp
MSRP、UGCがJCRに保存されていない場合は、MongoDBに保存されます。 MSRPに保存されたUGCは、CRXDE Liteで表示したり、JCR APIを使用してアクセスしたりすることはできません。
MSRP - MongoDB ストレージリソースプロバイダーを参照してください。
MSRPはASRPと同等ですが、すべてのAEM サーバーインスタンスが同じUGCにアクセスしているため、一般的なツールを使用してMongoDBに保存されているUGCに直接アクセスできます。
MSRPはクエリにSolrを使用します。
JSRP jsrp
JSRPは、1つのAEM インスタンス上のすべてのUGCにアクセスするためのデフォルトプロバイダーです。 MSRPやASRPを設定しなくても、AEM Communities 6.1をすばやく体験できます。
JSRP - JCR ストレージリソースプロバイダーを参照してください。
UGCがJCRに保存されている間にJSRPがあり、CRXDE LiteおよびJCR APIでアクセスできる場合、AdobeではJCR APIを使用しないことをお勧めします。 変更を加えると、今後の変更がカスタムコードに影響を与える可能性があります。
さらに、オーサー環境とパブリッシュ環境のリポジトリは共有されません。 パブリッシュインスタンスのクラスターは共有パブリッシュリポジトリになりますが、パブリッシュで入力されたUGCはオーサーには表示されないため、オーサーからUGCを管理することはできません。 UGCは、そのUGCが入力されたインスタンスのAEM リポジトリ(JCR)にのみ保持されます。
JSRPは、クエリにOak インデックスを使用します。
JCRのシャドウノードについて about-shadow-nodes-in-jcr
UGCへのパスを模倣するシャドウノードは、次の2つの目的を果たすためにローカルリポジトリに存在します。
SRPの実装に関係なく、実際のUGCはシャドウ ノードと同じ場所に not 表示されます。
ACL (アクセス制御) for-access-control-acls
ASRPやMSRPなどの一部のSRP実装では、ACL検証を提供しないデータベースにコミュニティ コンテンツを保存します。 シャドウノードは、ACLを適用できるローカルリポジトリ内の場所を提供します。
SRP APIを使用すると、すべてのSRP オプションは、すべてのCRUD操作の前にシャドウの場所を同じようにチェックします。
ACL チェックでは、リソースのUGCに適用される権限のチェックに適したパスを返すユーティリティメソッドを使用します。
サンプルコードについては、SRPおよびUGC Essentialsを参照してください。
非既存リソース(NER) for-non-existing-resources-ners
一部のCommunities コンポーネントはスクリプト内に含まれるため、Communities機能をサポートするにはSling Addressable ノードが必要です。 含まれるコンポーネント は、既存でないリソース (NER)と呼ばれます。
シャドウノードは、リポジトリ内のSling アドレス可能な場所を提供します。
保存場所 storage-location
次に、 コミュニティコンポーネントガイド の コメント コンポーネント を使用したシャドウノードの例を示します。
-
コンポーネントは、次の場所のローカルリポジトリに存在します。
/content/community-components/en/comments/jcr:content/content/includable/comments -
対応するシャドウ ノードは、次の場所のローカル リポジトリに存在します。
/content/usergenerated/content/community-components/en/comments/jcr:content/content/includable/comments
シャドウ ノードの下にUGCが見つかりません。
デフォルトの動作は、読み取りまたは書き込みのために関連するサブツリーが参照されるたびに、パブリッシュインスタンスにシャドウノードを設定することです。
例えば、デプロイメントがTarMK パブリッシュファームを持つMSRPであるとします。
メンバーが(MongoDBに保存されている) pub1にUGCを投稿すると、pub1のJCRにシャドウノードが作成されます。
pub2でUGCを初めて読み取る場合、何も設定されていない場合、デフォルトの動作はシャドウノードを作成することです。
デフォルトのビヘイビアー以外のビヘイビアーが必要な場合は、オーサーインスタンスで設定し、すべてのパブリッシュインスタンスにロールフォワードする必要があります。これは通常、手動プロセスです。