function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Kazumasa SaikiKazumasa Saiki 

Streaming APIの制限回避方法について

はじめまして。佐伯と申します。

現在、SFDCから、全データを随時バックアップする手法を考えています。

手段の一つとして、Streaming APIの使用を検討中です。
これは、リアルタイムでデータの取得が行え、以下の2点で良いかなと思いました。
・SFDCとバックアップ環境の差異を少なくできる
・バックアップの負荷の平準化が出来る

しかし、リファレンスを見る限りだと、以下の制限に引っ掛かってしまいそうな感じです。
1.組織辺りのトピック:20
2.1日あたりのイベント最大数:10,000

具体的には、以下のような引っ掛かり方をすると見ています。
1は、トピック数=オブジェクト数になるので、20オブジェクト数を上回ったら使えない
2は、ある程度ユーザー数が増え、追加・更新数が増えた時点で使えなくなる

おそらく、トピック数やイベント数を追加購入すれば制限を緩和できると思うのですが、予算的な面から、出来る限り避けたいと考えています。
例えば、以下のような回避策は可能でしょうか?
1.1トピックに複数オブジェクトを登録
2.イベント検知の割合を減らしつつ、データの漏れなく登録

上記回避策も含め、実現は厳しいとは思ってはいます。
しかし、それでも何か妙案がございましたら、ご教授頂けたらと思います。

※「アプリケーションロジック」の方に投稿してしまっていたため、こちらに再投稿させていただきます。

Best Answer chosen by Mitch Okamoto
Mitch OkamotoMitch Okamoto

Salesforce内の全データをバックアップするのにStreaming APIはあまり適していないと思います。

ご指摘の通りSpring '13リリースで多少制限が緩和されましたが、全てを取得するのには厳しいですね。

 

http://jp.force.com/releases/release/Spring13/Bulk+Metadata+and+Streaming+API+Updates

 

基本的なバックアップはWeekly Exportサービスを利用頂けば十分だと思っていますが、どうしても手動で抜きたい場合にはWebサービスAPIをお勧めします。

SOAP WebサービスAPIには getupdatedというメソッドコールがあり、ある所定の時間から更新されたデータを引っ張って来る事が可能です。

 

http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_getupdated.htm

 

このコールを定期的にバックアップする側のクライアントから呼び出すのが良いかと思います。

ちなみに外部システムとのデータインテグレーションでもこの手法はよく使いますね。

 

 

ウィークリーエクスポート

http://help.salesforce.com/apex/HTViewHelpDoc?id=admin_exportdata.htm&language=ja

All Answers

Mitch OkamotoMitch Okamoto

Salesforce内の全データをバックアップするのにStreaming APIはあまり適していないと思います。

ご指摘の通りSpring '13リリースで多少制限が緩和されましたが、全てを取得するのには厳しいですね。

 

http://jp.force.com/releases/release/Spring13/Bulk+Metadata+and+Streaming+API+Updates

 

基本的なバックアップはWeekly Exportサービスを利用頂けば十分だと思っていますが、どうしても手動で抜きたい場合にはWebサービスAPIをお勧めします。

SOAP WebサービスAPIには getupdatedというメソッドコールがあり、ある所定の時間から更新されたデータを引っ張って来る事が可能です。

 

http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_getupdated.htm

 

このコールを定期的にバックアップする側のクライアントから呼び出すのが良いかと思います。

ちなみに外部システムとのデータインテグレーションでもこの手法はよく使いますね。

 

 

ウィークリーエクスポート

http://help.salesforce.com/apex/HTViewHelpDoc?id=admin_exportdata.htm&language=ja

This was selected as the best answer
Kazumasa SaikiKazumasa Saiki

ご返答ありがとうございます。

 

やはり、Streaming APIでは無理のようですね。

他システムと連携してのバックアップとなりますので、getupdatedコールの使用を検討してみようと思います。 

 

事例情報も併せて、非常に助かります。

重ね重ね、どうもありがとうございました。