Bulk API !

| コメント(0) | トラックバック(0)
Salesforceの実に30世代目となるバージョンアップ「Winter '10」で、新たに「Bulk API」が追加されました。
EAIの製品強化(DCSpider)や、APIを利用した開発を多く手掛けるため、新たなAPIの登場はとっても気になりますね。
ということで、遅ればせながら調べてみました。

クラウド上でシステム開発を行った場合、しばしば大量データの初期移行や、大量データを伴う
システム連携(バッチ処理)のパフォーマンスが問題になります。

パフォーマンス問題の多くの理由に、その処理時間の多くを
データ通信時間が占めているケースがあります。
これは、クラウド・サービスがインターネット上にあり、インターネットを介して
データを流通させる以上、避けては通れない課題であります。

Salesforce(Force.com)の場合、APIを介したデータの読取りや更新はSOAPにより行い、
例えば、レコードを追加したい場合には、最大200件のレコードを
1回のSOAPメッセージにまとめて送信できるよう工夫されています。
さらに、gzipやdeflateをサポートしているので、httpリクエスト自体を圧縮し、
データ通信量を減らすことも可能です。

※データ読取りの場合ですと、例えば6000件のデータが読取り対象となった時、
一度に2000件ずつ、3回のSOAPメッセージの交換で読取ることができます。

この工夫により、データ更新時におけるデータ通信量やSOAPメッセージの
交換回数を減らすことが可能となりますが、レコードの追加対象が
数十万や数百万件のレベルに達すると、SOAPメッセージの冗長さや、
SOAPメッセージ交換にかかる通信時間は、見過ごせないレベルに達します。

このような問題を解決するのが、「Bulk API」です。
Bulk APIでは、例えばレコードを更新したい場合、
SOAPメッセージにレコード情報を含めるのではなく、SOAPメッセージにRESTベースでCSV、あるいはXML形式のファイルを添付し、
サーバサイドでファイルをローディングし、非同期にデータ更新を実施します。
この方式により、従来と比較して大幅な処理時間短縮を実現しているわけです。

この処理方式を単純に説明すると、SalesforceにはインポートウィザードというCSVファイルを
会話形式にロードする機能が提供されており、ロードされたデータはインポートキューに
蓄えられてモニタ可能であり、そのインポート処理は非同期に実施されます。

これと似たようなことが、APIを介して実現できるようになったと考えると判り易いでしょう。
実際に、Bulk APIを利用した場合、「一括データ読み込みジョブの監視」としてSalesforceの
管理画面でジョブの実行状況をモニタすることが可能です。

尚、Bulk API は、 Salesforceが無償提供する
ApexDataLoader 17.0 が既に対応済みです。

また、Bulk API を使用するサンプルコードも提供されています。
興味ある人、早速 Bulk API 評価・検証してみましょう!

トラックバック(0)

トラックバックURL: http://www.terrasky.co.jp/cgi-bin/mt/mt-tb.cgi/88

コメントする

今岡純二

株式会社テラスカイ
取締役プロダクトマネージャ

1972年生まれ。1991年よりシステムエンジニアとして基幹系システムの開発/導入を数多く行う。 ここ数年は、SaaSおよびSOAに関わるビジネスを研究し、数多く手掛けるほか、webMethodsも扱う。 SaaSの分野ではSalesforceの導入を得意とし、Salesforce認定導入コンサルタントとして活躍。 週末は、ミニバスケットボールチームのコーチとして、子供たちを相手に奮闘中。


2011年2月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28