Bulk API の概要
説明されている機能は、組織で Bulk API 機能が有効化されている場合にのみ使用できます。この機能は、Performance Edition、Unlimited Edition、Enterprise Edition、Developer Edition ではデフォルトで有効になっています。
Bulk API を使用するケース
Bulk API は、REST 規則に基づいており、大規模データセットの読み込みまたは削除用に最適化されています。Bulk API を使用して複数のバッチを送信することにより、多数のレコードを非同期でクエリ、queryAll、挿入、更新、更新/挿入または削除できます。バッチはバックグラウンドで処理されます。
一方、SOAP API は、一度に少数のレコードを更新するリアルタイムのクライアントアプリケーション用に最適化されています。SOAP API を使用しても多数のレコードを処理することはできますが、数十万のレコードがデータセットに含まれている場合には実用性に欠けます。Bulk API は、千から百万単位のレコードのデータを簡単に読み込めるように設計されています。
Bulk API の最も簡単な使用方法は、CSV ファイルを使ってデータローダでレコードの処理ができるようにすることです。データローダを使用すると、独自のクライアントアプリケーションを作成する必要がなくなります。
Bulk API 2.0
Salesforce は追加の API (Bulk API 2.0) を提供します。これは REST API フレームワークを使用して Bulk API と同様の機能を提供します。大規模データセットの挿入、更新、更新/挿入、または削除の簡易化されたプロセスが必要な場合は、Bulk API の代わりに Bulk API 2.0 を使用します。現在、Bulk API 2.0 では、クエリまたは queryAll はサポートされていません。
Bulk API 2.0 の詳細は、『Bulk API 2.0 開発者ガイド』を参照してください。
Bulk API によって可能になること
REST Bulk API では、大量のレコードのクエリ、queryAll 操作、挿入、更新、更新/挿入、削除を非同期で実行できます。レコードには、Attachment オブジェクトや Salesforce CRM Content などのバイナリ添付ファイルを含めることができます。まず、HTTP POST を使用して、サーバに一連のバッチを送信します。バッチを受け取ったサーバは、バックグラウンドで処理を実行します。バッチの処理が行われている間は、HTTP GET コールを使用してジョブの状況を確認し、進行状況を追跡できます。すべての処理では、HTTP GET メソッドまたは HTTP POST メソッドを使用して、CSV データ、XML データ、または JSON データが送受信されます。
Bulk API のしくみ
一連のレコードを処理するには、1 つ以上のバッチを含むジョブを作成します。このジョブは、処理されるオブジェクトと使用される操作の���類を指定します。バッチは、HTTP POST 要求でサーバに送信されるレコードセットです。各バッチはサーバによって独自に処理されます。受信した順序で処理されるとは限りません。バッチは並列処理が可能です。データセット全体をどのように適切な数のバッチに分割するかは、クライアント側で決定されます。
ジョブは JobInfo リソースで表されます。このリソースは、新規ジョブの作成、既存のジョブの状況の取得、ジョブの状況の変更に使用します。バッチを作成するには、レコードのセット、およびバイナリ添付ファイルへの参照を表す、CSV、XML、または JSON を HTTP POST 要求で送信します。作成したバッチの状況は BatchInfo リソースで表されます。バッチの処理が完了すると、各レコードの結果が結果セットのリソースとして提供されます。
- オブジェクトとアクションを指定し、新しいジョブを作成します。
- 複数のバッチに分割されたデータをサーバに送信します。
- すべてのデータが送信されたら、ジョブを終了します。ジョブの終了後は、そのジョブの一部として新たにバッチを送信することはできません。
- 適切な間隔ですべてのバッチの状況を確認します。状況確認では、その都度各バッチの状態が返されます。
- すべてのバッチの処理が完了または失敗した時点で、各バッチの結果を取得します。
- 結果セットと元のデータセットを照合して、失敗したレコードと成功したレコードを特定し、適切な処理を行います。
このプロセス中には、いつでもジョブを中止できます。ジョブを中止すると、その時点で未処理のバッチは処理されなくなります。すでに処理されたバッチが元に戻されることはありません。
データローダを使用した CSV の処理については、『データローダガイド』を参照してください。