# バッチ処理
通常、Workato の1つのジョブは、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 の新規アカウントのバッチに関するトリガー出力
たとえば、次のレシピが最初に開始されたとき、843件のレコードが2015年1月1日午前0時 (米国太平洋標準時) から取得され、それぞれ100レコードの8つのトリガーイベントと、43レコードの1つのトリガーイベントに分けられました。続く5分後のポーリングでは、作成された2つの新規アカウントレコードのみが取得されています。
アカウントバッチの詳細 (バッチ内の最初と最後のアカウントの名前とバッチサイズ) を表示するカスタムジョブレポート
# バッチアクション
バッチアクションは通常、 バッチでの作成 、 バッチでの更新 、または バッチでのアップサート という形を取ります。したがってこれらのアクションでは、新規レコードのリストの作成、既存レコードのリストの更新、またはレコードのリストのアップサート (レコードが存在しない場合は作成、レコードが存在する場合は更新) が行われます。
# バッチでの作成アクション
バッチでの作成アクションは、1つのアクション (通常は1つの API 呼び出しに対応) で複数のレコードを作成します。多くの場合、レコードのリストを入力として受け取るため、レシピは通常以下のようになります。
- レコードのリストをソースアプリからターゲットアプリに移動する
- カスタムリストでデータを作成および蓄積してレコードのリストを用意し、そのリストをターゲットアプリに移動する
# バッチでの作成アクションの例
以下に、 Bulk insert アクションによって Box の CSV ファイルから Salesforce に新製品をインポートするシナリオの例を示します。
リスト入力を使用したレシピの例
リストを入力として受け取るアクションには、リストピルのみを受け取る ソースリスト という入力項目があります。このリスト入力項目を選択すると、データツリーがリストピルのみを提供するように変更されます。[Rows] リストオブジェクトピルは、Salesforce の [Products source list] 入力項目にマッピングされています。
[Rows] リストオブジェクトが Salesforce の [Products source list] 入力項目にマッピングされている
入力ソースリストに渡されるリストオブジェクトの場合、リストがソースアプリからターゲットアプリに転送され、値がレシピでマッピングされた項目に基づいて転送されます。ここでは、3つの在庫品目が Box から Salesforce に製品として移動されます。
リストデータピルからリスト入力へのマッピング
CSV ファイルの内容を以下に示します。
CSV ファイル内の行を表示するトリガー出力の詳細
ジョブレポートのアクション出力は、Salesforce で3つの製品が作成されたことを示しています。
リスト入力による Salesforce の一括挿入
# バッチ処理でデータスループットを最大化
データスループットを最大化するには、バッチトリガーをバッチアクションと常に一致させる必要があります。
レシピの並列処理数を増やすことでスループットをさらに上げることも可能です。これは、Workato が複数のジョブを1つずつ実行するのではなく、同時に実行することを意味します。
以下の図は、Workato レシピで並列処理を有効にする方法、およびバッチ処理と並列処理を連携させる方法について示しています。
Workato レシピでの並列処理の設定
バッチ処理と並列処理による Workato のスループットの向上
Last updated: 2023/8/31 1:07:14