1. 加工

バッチ集計

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

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

Sitecore Experience Database (xDB) では、集計プロセスによってコレクション データベースからのライブ データまたは履歴データがグループ化および削減され、レポート データベースとSitecoreレポート アプリケーションで使用できるようになります。スケーラブルなxDBアーキテクチャでは、通常、集約は1つ以上の専用処理サーバーで実行されます。

処理サーバーを集約用に構成する場合、同時に実行するエージェントまたはスレッドの数を指定できます。バッチ集計を使用すると、インタラクションをバッチにグループ化して、集計プロセスのパフォーマンスとスループットを向上させることができます。

バッチ処理:

  • SQL Serverリソースをより最適に使用します。

  • より少ないSQL Serverトランザクションでより多くのインタラクションを処理します。

  • 既存の集約フレームワークのパフォーマンスを向上させることができます。

  • ネットワークトラフィックを削減できます。

  • つまり、相互作用を処理するために必要なデータベース入出力操作が少なくて済みます。

xDBでは、バッチ集計は標準のSitecoreインストールの一部として提供されます。1つのバッチで処理できるインタラクションのデフォルト数は、各トランザクションで行あたりのコストと実行時間が短くなるように設定されています。ただし、解決策は異なる場合があり、独自の要件に合わせてバッチ集計設定を構成する必要がある場合があります。

MaximumBatchSize 設定では、各バッチで処理されるインタラクションのデフォルト数を変更でき、この設定をライブコレクションまたは履歴コレクションに個別に適用できます。

メモ

設定ファイルを直接変更するのではなく、実行時に必要な変更を実行する独自のカスタム設定パッチファイルを作成してください。

バッチ集計コンポーネント

バッチ集計を使用する場合、ソリューションのパフォーマンスを向上させるために変更できる設定を含むいくつかのコンポーネントがあります。

バッチ集計エージェント

バッチ集約エージェントは、ライブインタラクションを処理するために定期的に実行するようにスケジュールできるバックグラウンドサービスです。実行されるたびに、コレクション データベースからインタラクションのバッチが収集され、バッチ アグリゲーターを介して実行されます。アグリゲーターは、完了すると、処理した各インタラクションを完了としてマークし、失敗したインタラクションを再スケジュールします。

バッチ集約エージェントは、Sitecore.Analytics.Processing.Aggregation.Services.configファイルを使用して構成できます。

次の例は、デフォルトのバッチ集約設定を示しています。

<aggregator type="Sitecore.Analytics.Aggregation.InteractionAggregationAgent, Sitecore.Analytics.Aggregation">
                <param desc="xdbContextFactory" type="Sitecore.Analytics.Aggregation.XConnect.DefaultXdbContextFactory, Sitecore.Analytics.Aggregation" />
                <param desc="context" ref="aggregation/aggregatorContexts/interaction/live" />
                <param desc="aggregator" type="Sitecore.Analytics.Aggregation.BatchOptimizedInteractionBatchAggregator, Sitecore.Analytics.Aggregation" singleInstance="true" resolve="true">
                    <MultiplexingTimeout>0.00:00:01</MultiplexingTimeout>
                </param>
                <param desc="dateTimeStrategy" ref="aggregation/dateTimePrecisionStrategy" />
                <param desc="maximumBatchSize" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToShort" arg0="64" />
            </aggregator>

バッチ集約エージェントの構成ファイルで、次の設定を変更できます。

構成ノード

形容

文脈

集計するデータのパスまたは場所、および結果を保存する場所を指定します。

アグリゲーター

インタラクションの処理に使用するバッチアグリゲーターを指定します。

最大バッチサイズ

1つのバッチに含めるインタラクションの最大数を指定します。

バッチ アグリゲーター

バッチアグリゲーターは、一度に1つ以上のインタラクションを取得し、そのバッチまたはプロセッサタイプに応じて一度に1つのインタラクションに対して集約パイプラインを実行し、集約されたデータをより大きなデータセットに結合します。結合されたデータセットは、レポートデータベースに保存されます。

手記

Sitecore 9.3以降では、一度に1つのインタラクションを処理する クラシック プロセッサ と、インタラクションのバッチ全体を反復処理する バッチ プロセッサ の2種類のインタラクション集約プロセッサがサポートされています。クラシックプロセッサには下位互換性がありますが、バッチプロセッサにアップグレードすることをお勧めします。

マルチプレクサ

マルチプレクサは、個々の集計スレッドを1つのバッチまたはデータセットに結合することで、レポート・データベースに対する要求の数を減らし、レポート・データベースに効率的に保存できます。これにより、ネットワーク経由で送信されるトラフィックの量を大幅に削減できます。

MultiplexingTimeout構成設定では、マルチプレクサーが他のバッチ・アグリゲーターを待機してからデータ・セットを保存する最大時間を指定できます。

Microsoft SQL Serverレポート ストレージ プロバイダーは、集計データ セットのバッチの格納をサポートするようになり、その堅牢性が向上しました。これは、1つのトランザクションで大規模なデータ セットを保存すると同時に、システム リソースの使用を最小限に抑えるように最適化されています。

歴史の労働者

履歴ワーカー エージェントを使用すると、レポート データベースを再構築でき、バッチ集計のサポートも付属しています。

履歴ワーカーエージェントは、 Sitecore.Analytics.Processing.Aggregation.Services.configファイルを使用して構成できます。

これには、バッチ集約ライブエージェントと同じパラメーター ( MultiplexingTimeout MaximumBatchSize) が含まれています。

次の例は、履歴ワーカーのデフォルト設定を示しています。

<historyWorker type="Sitecore.Analytics.Aggregation.Data.Processing.InteractionHistoryWorker, Sitecore.Analytics.Aggregation">
                <param desc="aggregator" type="Sitecore.Analytics.Aggregation.BatchOptimizedInteractionBatchAggregator, Sitecore.Analytics.Aggregation" singleInstance="true" resolve="true">
                    <MultiplexingTimeout>0.00:00:01</MultiplexingTimeout>
                </param>
                <param desc="historyTaskManager" ref="aggregation/historyTaskManager" />
                <param desc="aggregatorContext" ref="aggregation/aggregatorContexts/interaction/history" />
                <param desc="dateTimePrecisionStrategy" ref="aggregation/dateTimePrecisionStrategy" />
                <param desc="maximumBatchSize" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToShort" arg0="128" />
</historyWorker>

プロセッサは、同じインタラクションに対して複数回実行できます

一部のシナリオでは、インタラクションが複数回処理される場合があります。証跡テーブルでは、重複データがレポート データベースに追加されないようにしますが、プロセッサが操作ごとに1回だけ実行されるという保証はありません。

バッチがチェックアウトされてからデータがSQLにフラッシュされるまでの間のいずれかの時点でエージェントに障害が発生した場合、バッチの進行状況はエージェントに報告されず、バッチは再度処理されます。

カーソルの有効期限が切れ、他のエージェントが処理のために同じカーソルを選択した場合、履歴集約中に同じことが起こる可能性があります。

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