---
title: "バッチ集約"
slug: "batch-aggregation"
abstract: "バッチ集約プロセスの概要。"
---
# バッチ集約

Sitecore Experience Database(xDB)では、集約プロセスがコレクションデータベースからライブまたは過去データをグループ化・削減することで、報告データベースやSitecore報告アプリケーションで利用できるようにします。スケーラブルなxDBアーキテクチャでは、集約は通常、1台以上の専用処理サーバーで行われます。

処理サーバーを集約用に設定する際、同時に実行したいエージェントやスレッドの数を指定できます。バッチ集約は、インタラクションをバッチごとにまとめて集約プロセスのパフォーマンスとスループットを向上させることを可能にします。

バッチ処理:

-   SQL Serverリソースをより効率的に活用できます。
-   より少ないSQL Serverトランザクションでより多くのやり取りを処理できます。
-   既存の集約フレームワークのパフォーマンスを向上させることができます。
-   ネットワークトラフィックを減らすことができます。
-   つまり、インタラクションを処理するためのデータベースの入出力操作が少なくて済みます。

xDBでは、バッチ集約は標準のSitecoreインストールの一部として含まれています。1回のバッチで処理できるデフォルトのやり取り数は、各トランザクションのコストと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つのインタラクションを処理する [クラシックプロセッサ](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/walkthrough--using-the-interactions-pipeline-to-aggregate-and-store-reporting-data.html "Walkthrough: Using the interactions pipeline to aggregate and store reporting data") と、すべてのインタラクションをイテレートする [バッチプロセッサ](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-platform/the-interactions-batch-pipeline.html "The interactions batch pipeline") の2種類のインタラクションアグリゲーションプロセッサをサポートしています。クラシックプロセッサは後方互換性がありますが、バッチプロセッサへのアップグレードを推奨します。

### マルチプレクサ

マルチプレクサは、個々の集約スレッドを単一のバッチまたはデータセットに統合することで、報告データベースへのリクエスト数を減らし、それらをより効率的に報告データベースに保存できます。これにより、ネットワークを横断するトラフィック量を大幅に削減できます。

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

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

### 歴史研究者

履歴ワーカーエージェントはレポートデータベースの再構築を可能にし、バッチ集約のサポートも備えています。

履歴ワーカーエージェントは 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回のインタラクションで1回だけ実行される保証はありません。

バッチのチェックアウトからSQLへのフラッシュの間の任意の時点でエージェントが失敗した場合、バッチの進行状況はエージェントに報告されず、バッチは再度処理されます。

履歴集約中も、カーソルが切れて他のエージェントが同じカーソルを処理に行った場合、同じことが起こり得ます。