1. 製品同期

性能向上

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore Commerce Connectのパフォーマンス向上には以下が含まれます:

  • 即時または遅延バケット同期。新しいアイテムがバケットに作成されると、すぐにルートフォルダーに置かれます。正しい場所に移動させるには、バケットを同期させる必要があります。これを行う方法は以下の通りです:

    • 単一の積を同期させることで、その積はすぐにバケット内の正しい場所に移動できます。これは SynchronizeProduct を単一の操作として呼び出すことで行われます。 BucketManager.MoveItemIntoBucket(entityItem, root);
    • 一括同期を行うことで。これは SynchronizeProducts や SynchronizeProductListを呼び出しることで行われますが、同期が必要な多くの新しいアイテムが作成される可能性があります。バルク同期を行う場合、すべての新しい製品アイテムが処理されるまで同期を遅らせる方が速いです。製品バケットの同期時間をさらに短縮するために、新しい製品アイテムには一時的なバケットが使用されます。一時バケットはすべての製品が処理され、バケットの内容がメインバケットに移動された後に同期されます。これにより、バケット内の既存のすべてのアイテムに触れる時間が省かれます。例えば、1,000,000件の製品品目があるバケットに1,000件の新しい商品を追加した場合、1,001,000件のアイテムに触れて変更がないことを確認します。

    遅延バケット化を有効にする方法については、「 遅延バケット同期」を参照してください。

  • マルチスレッド同期。デフォルトでは、製品、メーカー、タイプ、リソース、部門、仕様を並列に同期するために単一のスレッドが作成されます。スレッドは同期される各リポジトリごとに作成されます。 Sitecore.Commerce.Products.configファイルで使用するスレッド数を設定できます。デフォルトは1です。

    !注Sitecore CMSの問題により、複数のスレッドを使用するとSQLサーバーのデッドロックが発生することがあり、そのためデフォルト設定ではスレッドは1つのみを指定しています。

  • インデックス作成、イベント、キャッシュの無効化。同期中はリソースを節約し、同期完了前のインデックス作成を避けるため、項目イベントのトリガーやインデックス作成は無効化されます。同期終了後にインデックス作成が有効になります。詳細は インデックス作成をご覧ください。

  • 製品データを一度読み込み、複数のパイプラインで処理することで、Sitecoreと外部システム間の通話回数が減ります。Connectのすべての製品エンティティはそれぞれ独自のパイプラインで同期されており、これにより外部システムから個別のパイプラインからデータを読み取ることが自然に適しています。この場合、単一の製品を同期させるだけでシステム間でかなりの通話数が増し、各通話に時間とリソースがかかります。この設計は、製品データを最初に一度読み込み、処理のために個々のサブパイプラインに渡すことを妨げないため、システム間の通話回数を減らします。

  • リソースは外部に配置可能です。Sitecoreのリソースはメディアライブラリ内のメディアアイテムとして保存されます。メディアアイテムはバイナリの塊であり、Sitecoreへのインポートはかなり大きく時間がかかるため、リソースはSitecoreメディアライブラリにインポートするか、外部で参照するかのいずれかです。リソースがインポートされた場合、メディアライブラリの下にあるProductsというバケットフォルダーに格納されます。インポートしない場合は、リソース参照アイテムに保存されたURIで参照できます。Connectのデフォルト実装は両方のシナリオをサポートしています。

この記事を改善するための提案がある場合は、 お知らせください!