Salesforceアダプタシリーズの違いについて教えてください
Q.
Salesforceアダプタシリーズ(Salesforceアダプタ、Salesforce Bulkアダプタ、Salesforce Metadataアダプタ)の違いについて教えてください。
A.
Salesforceアダプタシリーズは、3つのアダプタに大別され、またその中に多くのアイコンを含んでいます。
ここでは、どのアイコンを選択すべきかについて、説明いたします。
3つのアダプタ
まず他と大きく異なるのは、Salesforce Metadataアダプタです。他の2つはオブジェクトに格納されているレコードに対する操作をするのに対して、Metadataアダプタではオブジェクトの定義情報を変更するアダプタになります。オブジェクトの定義情報としては、テーブル名、項目名、選択リスト項目/複数選択リスト項目の選択肢などが含まれますが、Metadataアダプタで操作できるのは、選択リスト項目/複数選択リスト項目の定義です。
次にSalesforceアダプタとSalesforce Bulkアダプタの違いを説明いたします。
Salesforce Bulkアダプタは主に大量データの操作に適したアダプタになります。ただしレコードの取得はできません。よって、データがそれほど大量ではない場合、レコードの取得を行いたい場合は、Salesforceアダプタを使用することになります。またSalesfoceアダプタには、ユーザーのパスワードリセットやメール送信など、ユーティリティ系の機能も備えています。
以上をまとめると、次のようになります。
アダプタ名 | 操作対象 | 説明 |
---|---|---|
Salesforce | レコード(RDBでのDMLに相当) | 以下の操作が可能 |
Salesforce Bulk | レコード(RDBでのDMLに相当) | 大量レコードの操作(INSERT、UPDATE、UPSERT、DELETE)が高速
|
Salesforce Metadata | オブジェクトの定義(RDBでのDDLに相当) | 選択リスト項目/複数選択リスト項目の選択肢の追加、更新、削除、並び替えが可能 |
Salesforceアダプタにあるレコードの取得処理
Salesforceアダプタには複数のレコード取得処理があります。どれを使うかは次の表をみて、上から検討するのが一般的です。
また「ファイル出力」欄に○ヶ付いているものは、ドキュメントや添付ファイルをダウンロードする機能があります。
アイコン名 | 説明 | ファイル出力 |
---|---|---|
データ読み取り(IDによる検索) | IDをキーにしてレコードを取得する場合に使用します。 | ○ |
データ読み取り(レプリケーション) | 一定期間に挿入・更新されたレコード もしくは 一定期間に削除されたレコード を取得する場合に使用します。 | |
データ読み取り(クエリー) | 1つのオブジェクトに対して、条件を指定してレコードを抽出する場合に使用します。 | ○ |
データ読み取り(親→子リレーション) | 2つのオブジェクト(1つのオブジェクトおよびその子オブジェクト)からレコードを抽出します。 | ○ |
データ読み取り(子→親リレーション) | 1つのオブジェクトからレコードを抽出すると同時に、リレーションシップ項目の場合にリレーション先の値をとることができます。 | ○ |
データ読み取り(SOQL実行) | 最も汎用的な操作です。SalesforceのSOAP APIで定義されているSOQLの構文をそのまま記述することができます。 | ○ |
INSERT、UPDATE、UPSERTの使い分け
INSERTはレコードの挿入、UPDATEはレコードの更新を行う操作です。UPSERTは「外部キーに指定したある項目をキーにして、同じキー値があればUPDATE、なければINSERTを行う」という操作になります。
以上により、UPDATEおよびUPSERTの場合は、キーとして使う項目を1つ指定する必要があります。
またUPDATEの場合、複数の項目をキーとして利用することが可能になっています。ただしその場合は、セールスフォースに対してクエリを発行してキーと合致するレコードがあるかを確認するため、処理速度は遅くなります。またこの設定において、「キーと合致するレコードがなければINSERTを行い、合致するレコードはUPDATEを行う」というUPSERTのような挙動となる設定も可能です。
以上をまとめると、次のようになります。
実行したいこと | キー項目 | 利用するアイコン |
---|---|---|
レコードの挿入 | 不要 | INSERT |
レコードの更新 | 1項目以上 | UPDATE |
同じキーのレコードがあれば更新、なければ挿入 | 1項目 | UPSERT |
2項目以上 | UPDATE |