バッチ処理
通常、1つのWorkatoジョブは1行のデータまたは1つのレコードを処理します。 バッチ処理とは、簡単に言うと1つのジョブが複数行のデータまたは複数のレコードを処理することです。 これにより、多数のレコードをあるアプリから別のアプリに移動する際の速度とデータスループットが向上します。
バッチ処理(またはバッチング)の概念を理解するために、以下の例を見てみましょう。
バッチングの簡単な例
バッチサイズが大きいほど、同じ量のデータを移動するために必要なジョブとAPI呼び出しが少なくなります。 その結果、多くの場合、レシピの実行時間が短縮されます。 次のグラフは、Workatoが100,000行のデータを移動する際に、バッチサイズの違いによって実行時間がどのように短縮されるかを示しています。
バッチングによる時間の節約
データベースコネクター(SQL Server、MySQLなど)、CSVファイルを扱うクラウドストレージコネクター(たとえばBox、Amazon S3)、Salesforceコネクターなど、特定のコネクターでバッチングをサポートするトリガーとアクションを見つけることができます。 最良の結果を得るには、常にバッチトリガーとバッチアクションを組み合わせてください。
バッチトリガーの例
バッチアクションの例
バッチトリガー
通常のトリガーでは、1つのトリガーイベントに1つのデータレコードが含まれることがよくあります。 たとえば、"Salesforceで新しいアカウントが作成される"は1つのトリガーイベントです。 これによりWorkatoレシピがトリガーされ、ジョブが作成されて1つのデータレコード(つまり、Salesforceのその新しいアカウント)が処理されます。
バッチトリガーでは、1つのトリガーイベントに複数のレコード(たとえば、Salesforceの50件のアカウント)が含まれます。 そのため、1つのジョブで複数のレコードを一度に処理します。 Batch sizeは、1つのトリガーイベント内のレコードの最大数を決定します。
バッチトリガーの例
Salesforceバッチトリガーのデフォルト値は100です。 この場合、各トリガーイベントには最大100件のアカウントレコードが含まれます。
バッチサイズ100のバッチトリガー
各トリガーイベントのジョブ詳細には、リスト内の最初と最後のレコードの具体的な詳細のみが含まれます。
ジョブの詳細: Salesforceの新しいアカウントのバッチに対するトリガー出力
たとえば、次のレシピが最初に開始されたとき、2015年1月1日深夜PST以降の843件のレコードが取得されました。 これらのレコードは、100件ずつの8つのトリガーイベントと、43件の1つのトリガーイベントに分割されました。 5分後の次のポーリングでは、作成された新しいアカウントレコードは2件のみ取得されました。
アカウントバッチの詳細を表示するカスタムジョブレポート: バッチ内の最初と最後のアカウント名、およびバッチサイズ
バッチアクション
バッチアクションは通常、Create batch、Update batch、またはUpsert batchの形式です。 これに従って、これらのアクションは新しいレコードのリストを作成し、既存のレコードのリストを更新し、またはレコードのリストをアップサート(レコードが存在しない場合は作成し、存在する場合は更新)します。
バッチ作成アクション
バッチ作成アクションは、単一のアクション(通常は1回のAPI呼び出しに対応)で複数のレコードを作成します。 バッチ作成アクションは通常、レコードのリストを入力として受け入れるため、通常、レシピは次のことを行います:
- レコードのリストをソースアプリからターゲットアプリに移動する、または
- カスタムリストでデータを作成および蓄積してレコードのリストを準備し、その準備済みリストをターゲットアプリに移動する
バッチ作成アクションの例
以下は、Bulk insertアクションを通じてBox CSVファイルからSalesforceに新しい製品をインポートするシナリオ例です。
リスト入力を使用するレシピの例。
リストを入力として受け取るアクションには、Source listという入力フィールドがあり、これはリストピルのみを受け入れます。 これらのリスト入力フィールドを選択すると、データツリーが変わり、リストピルのみが提供されます。 行リストオブジェクトピルは、Salesforce製品のソースリスト入力フィールドにマッピングされます。
行リストオブジェクトがSalesforce製品の入力ソースリストにマッピングされています
入力ソースリストに渡されたリストオブジェクトについては、レシピでマッピングされたフィールドに基づいて値が転送され、リストがソースアプリからターゲットアプリに転送されます。 3つの在庫品目がBoxからSalesforceに製品として移動されます。
リストデータピルからリスト入力へのマッピング
以下はCSVファイルの内容です。
CSVファイル内の行を表示するトリガー出力の詳細
ジョブ履歴のアクション出力には、これに従って3つの製品がSalesforceに作成されたことが表示されます。
リスト入力経由のSalesforce一括挿入
バッチ処理によるデータスループットの最大化
データスループットを最大化するには、常にバッチトリガーとバッチアクションを組み合わせる必要があります。
レシピ同時実行を増やすことで、スループットをさらに高めることもできます。 これは、Workatoがジョブを1つずつ実行するのではなく、複数のジョブを同時に実行することを意味します。
次の図は、Workatoレシピで同時実行を有効にする方法と、バッチングと同時実行が連携して動作する方法を示しています。
Workatoレシピでの同時実行の設定
バッチングと同時実行によるWorkatoでのスループット向上
Last updated: