バッチ処理

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

通常、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 batchUpdate batch、またはUpsert batchの形式です。 これに従って、これらのアクションは新しいレコードのリストを作成し、既存のレコードのリストを更新し、またはレコードのリストをアップサート(レコードが存在しない場合は作成し、存在する場合は更新)します。

バッチ作成アクション

バッチ作成アクションは、単一のアクション(通常は1回のAPI呼び出しに対応)で複数のレコードを作成します。 バッチ作成アクションは通常、レコードのリストを入力として受け入れるため、通常、レシピは次のことを行います:

  • レコードのリストをソースアプリからターゲットアプリに移動する、または
  • カスタムリストでデータを作成および蓄積してレコードのリストを準備し、その準備済みリストをターゲットアプリに移動する

バッチ作成アクションの例

以下は、Bulk insertアクションを通じてBox CSVファイルからSalesforceに新しい製品をインポートするシナリオ例です。

リスト入力を使用するレシピの例リスト入力を使用するレシピの例。

リストを入力として受け取るアクションには、Source listという入力フィールドがあり、これはリストピルのみを受け入れます。 これらのリスト入力フィールドを選択すると、データツリーが変わり、リストピルのみが提供されます。 行リストオブジェクトピルは、Salesforce製品のソースリスト入力フィールドにマッピングされます。

入力ソースリストの例行リストオブジェクトがSalesforce製品の入力ソースリストにマッピングされています

入力ソースリストに渡されたリストオブジェクトについては、レシピでマッピングされたフィールドに基づいて値が転送され、リストがソースアプリからターゲットアプリに転送されます。 3つの在庫品目がBoxからSalesforceに製品として移動されます。

リストピルのマッピングリストデータピルからリスト入力へのマッピング

以下はCSVファイルの内容です。

CSVトリガー出力CSVファイル内の行を表示するトリガー出力の詳細

ジョブ履歴のアクション出力には、これに従って3つの製品がSalesforceに作成されたことが表示されます。

入力リスト経由のSalesforce一括挿入リスト入力経由のSalesforce一括挿入

バッチ処理によるデータスループットの最大化

データスループットを最大化するには、常にバッチトリガーとバッチアクションを組み合わせる必要があります。

レシピ同時実行を増やすことで、スループットをさらに高めることもできます。 これは、Workatoがジョブを1つずつ実行するのではなく、複数のジョブを同時に実行することを意味します。

次の図は、Workatoレシピで同時実行を有効にする方法と、バッチングと同時実行が連携して動作する方法を示しています。

同時実行を有効化Workatoレシピでの同時実行の設定

さまざまなメカニズムによるWorkatoでのスループット向上バッチングと同時実行によるWorkatoでのスループット向上

Last updated: