Bulk API の概要
説明されている機能は、組織で Bulk API 機能が有効化されている場合にのみ使用できます。この機能は、Performance Edition、Unlimited Edition、Enterprise Edition、Developer Edition ではデフォルトで有効になっています。
Bulk API を使用するケース
Bulk API は、REST 規則に基づいており、大規模データセットの読み込みまたは削除用に最適化されています。Bulk API を使用して複数のバッチを送信することにより、多数のレコードを非同期でクエリ、挿入、更新、更新/挿入または削除できます。バッチはバックグラウンドで処理されます。
一方、SOAP API は、一度に少数のレコードを更新するリアルタイムのクライアントアプリケーション用に最適化されています。SOAP API を使用しても多数のレコードを処理することはできますが、数十万のレコードがデータセットに含まれている場合には実用性に欠けます。Bulk API は、千から百万単位のレコードのデータを簡単に読み込めるように設計されています。
Bulk API の最も簡単な使用方法は、CSV ファイルを使ってデータローダでレコードの処理ができるようにすることです。データローダを使用すると、独自のクラ��アントアプリケーションを作成する必要がなくなります。
SOAP API を使用するケース
SOAP API では、Salesforce を操作するための強力かつ便利で、シンプルな SOAP ベースの Web サービスインターフェースを提供します。SOAP API を使用して、レコードを作成、取得、更新、または削除できます。また、SOAP API を使用して、検索の実行などを行うことができます。SOAP API は、Web サービスをサポートしている言語で使用できます。
たとえば、SOAP API を使用して、Salesforce を組織の ERP や会計システムと統合できます。また、リアルタイムの販売情報やサポート情報を会社のポータルに配信し、重要なビジネスシステムに顧客情報を入力することもできます。
REST API を使用するケース
REST API では、Salesforce を操作するための強力かつ便利で、シンプルな REST ベースの Web サービスインターフェースを提供します。インテグレーションや開発が容易になるという利点があり、モバイルアプリケーションや Web プロジェクトで使用するためのテクノロジの選択としては最適です。ただし、処理するレコード件数が多い場合は、REST 規則に基づいており、大規模データセットの処理用に最適化されている Bulk API の使用を検討してください。
メタデータ API を使用するケース
メタデータ API を使用して、組織のカスタマイズを取得、リリース、作成、更新、または削除します。最も一般的な使い方は、Sandbox またはテスト組織から本番環境への変更の移行です。メタデータ API は、カスタマイズを管理し、データ自体ではなくメタデータモデルを管理可能なツールを構築するためのものです。
- Force.com IDE は、Eclipse プラットフォーム上に構築され、統合された開発環境に慣れているプログラマを対象としています。IDE 内でコード記述、コンパイル、テスト、リリースを行います。
- Force.com 移行ツールは、スクリプトまたはコマンドラインを使用してローカルディレクトリと Salesforce 組織間でメタデータを移動する場合に最適です。
Bulk API によって可能になること
REST Bulk API では、大量のレコードを非同期でクエリ、挿入、更新、更新/挿入、削除できます。レコードには、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 の処理について��、『データローダガイド』を参照してください。