製品の同期パフォーマンスの理解
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Commerce Connectには、1つ以上の外部コマース システムと製品データを交換するための独自の 製品データ モデル と 製品同期サービス レイヤー があります。商品の同期には時間がかかる可能性がありますが、システムの一部の要素を設定して、外部のコマース システムとSitecore間で商品を同期するために必要な時間を短縮できます。
アイテムバケット
アイテムバケット
アイテムバケットに新しいアイテムが作成されると、そのアイテムは自動的にルートフォルダに配置されます。バケット内の正しい位置に移動するには、バケットを同期する必要があります。
品目バケットの同期と製品の同期
アイテムバケットは、バケットの境界内でローカルにアイテムに対して動作する同期を使用します。製品の同期は、Sitecoreと外部システム間の境界を越えて行われ、アイテムではなく製品ドメイン モデルで機能します。
Product Synchronizationの可用性については、dev.sitecore.netを参照してください。
アイテム バケットの同期戦略
製品の同期プロセスでは、バケットを同期するタイミングについて、2つの異なる戦略が提供されます。状況に最適な戦略は、カタログのサイズ、特に同期中に追加される製品の数によって異なります。追加される商品の数は、カタログに季節限定商品が含まれているかどうか、および販売されている商品の種類によって異なることがよくあります。次の2つの戦略があります。
-
インスタントバケット同期 – これがデフォルトの戦略です。バケット内では、BucketManager.MoveItemIntoBucket(entityItem, root) メソッドを呼び出すことで、サブアイテムを含む単一のアイテムを同期できます。1つの製品が同期される場合、この戦略が常に使用されます。一括製品同期では、プロセスによって製品のリストが分割され、製品が個別に処理されますが、場合によっては並行して処理されます。バケットに追加されるアイテムの数によっては、この戦略が実行不可能になる可能性があります。
-
遅延バケット同期 –.この戦略では、新しい製品アイテムに一時的なバケットが使用され、バケットの同期は、すべての製品が処理され、バケットのルートに新しい製品アイテムが作成されるまで遅延されます。同期後、バケットの内容はメインバケットに移動されます。これにより、バケットの同期中に、新しい製品アイテムがすでに存在するかどうかを確認するために、既存のすべてのバケットアイテムにアクセスするのに費やす時間がなくなります。時間の短縮は、特に大きなカタログでは大幅に削減される可能性があります。遅延バケット同期とパイプラインでの一時バケットの使用を設定できます。設定ファイルを参照してください。 /App_Config/Include/Sitecore.Commerce.Products.Delayed-SyncProductRepository.config.disabled.
マルチスレッド
マルチスレッド
マルチスレッド化は、製品の同期に組み込まれています。デフォルトでは、製品、製造元、タイプ、リソース、部門、および仕様を同期するプロセッサから1つのスレッドが作成されます。スレッドは、同期されるリポジトリごとに作成されます。スレッドの数は、Sitecore.Commerce.Products.configファイルでProductSynchronization.NumberOfThreads設定を追加し、同時スレッドの数を指定することで構成できます。
Sitecore CMSの問題により、複数のスレッドを使用するとSQLサーバーのデッドロックが発生する可能性があります。これが、デフォルト設定で1スレッドが指定されている理由です。
遅延アイテム イベントとインデックス作成
遅延アイテム イベントとインデックス作成
Commerce Connectは、同期中に品目イベントのトリガーとインデックス作成を無効にして、同期が完了する前にイベントを発生させたり、インデックスを維持したりするためにリソースを浪費しないようにします。インデックス作成は、同期の完了後にオンになります。次のコンテキストと無効化は、同期中にインスタンス化されます。
-
Sitecore.SecurityModel.SecurityDisabler()
-
Sitecore.Data.Proxies.EventDisabler()
システム間の通話制限
システム間の通話制限
Commerce Connectのすべての製品エンティティは、Commerce Connectパイプラインを使用して同期され、個々のパイプラインの外部システムからデータを読み取ます。
使用しているサーバーの技術的特性に応じて、次の操作を選択できます。
-
製品データを一度読み取って複数のパイプラインで処理すると、Sitecoreと外部システム間の呼び出し回数が減り、CPU使用率が削減されます。ただし、このオプションを使用すると、メモリ使用量が増加します。
-
1つの製品を同期すると、システム間で多くの呼び出しが発生する可能性があります。各呼び出しには時間がかかり、CPUリソースに影響を与えます。ただし、このオプションを使用すると、メモリ使用量が削減されます。
外部リソース
外部リソース
リソースは外部に配置できます。Sitecoreのリソースは、メディア ライブラリにメディア アイテムとして保存されます。メディア アイテムはバイナリBLOBであり、Sitecoreにインポートするにはサイズが大きく、時間がかかる場合があります。したがって、リソースはSitecoreメディア ライブラリにインポートするか、単に外部から参照することができます。リソースがインポートされた場合、メディアライブラリの下のバケット化されたProductsフォルダに保存されます。インポートされていない場合は、リソース参照アイテムに格納されているURIで参照できます。
製品ID
製品ID
外部製品リポジトリは常にメインリポジトリと見なされ、デフォルトではメインリポジトリが製品を所有します。これにより、外部システム内の製品と成果物のIDが主キーになります。Sitecoreでは、商品とアーティファクトの対応するアイテムのIDは、新しいGUIDを自動的に生成するデフォルトのSitecore実装に依存するのではなく、Commerce Connectによって生成されます。デフォルトの実装はMD5ハッシュアルゴリズムに基づいており、次の形式です。
Item.ID = MD5.ComputeHash(Prefix + ExternalID);
ハッシュ アルゴリズムを使用すると、外部システムからのIDとSitecoreのアイテムIDとの間の直接マッピングが生成されます。これには、次の利点があります。
-
スペースを占有し、保守とクエリに時間がかかるマッピング テーブルは必要ありません。
-
アイテムIDの取得は非常に高速です。
-
Sitecoreでアイテムを検索する必要はありません – ハッシュアルゴリズムへの入力として外部IDを使用することで、SitecoreアイテムIDは即座に計算されます。