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メッセージに
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認定導入コンサルタントとして活躍。 週末は、ミニバスケットボールチームのコーチとして、子供たちを相手に奮闘中。


2009年11月

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
29 30