SalesForce API - 批量与REST争论

时间:2018-01-12 20:33:24

标签: salesforce

我有一个充满用户的数据库和一个查询所有用户的Java代码(大约有5,000个),创建一个包含每个代码相关详细信息的字典,并将其发送到SalesForce以确保我所拥有的数据与数据库中的数据保持同步。

这是一项每天运行的cron-job。

我的问题是 - 哪个选项更好?

  1. 继续使用此方法,每天调用SalesForce的API 5,000次。
  2. 创建一个由5,000个用户的所有词典组成的大型词典,并使用SalesForce的Bulk API只需一次API调用即可一次性插入/更新它们。
  3. 你怎么看? 各自的优点/缺点?

1 个答案:

答案 0 :(得分:1)

我认为你在API上看错了。暂时忘记批量API。

SOAP API和REST API具有相同或几乎相同的功能。选择您感觉更舒适的/您更了解哪些Java库。仅举几个关键因素:

请求大小:它们都支持一次发送多条记录,实际上最多可以发送200条记录。因此,首先考虑重构代码以在每次更新中发送更多内容。您将节省API调用(滚动限制到24小时),它会更快(网络流量引入的开销更少)......

错误处理:如果您的更新失败 - 他们都会在返回的邮件中提供相同位置的错误(第5条输入记录 - >第5条成功/错误记录),这样您就可以匹配东西,即使它是插入而不是更新(因为更新时错误也包括ID)。

“全部或全部”:你想保存那批 N 记录中的内容,或者它应该是全部或全部,正确的数据库回滚,如果有的话出错?在SOAP API中,您可以在消息头中将其指定在REST中 - 作为HTTP标头。

我认为REST API的一个优点是身份验证。使用SOAP,您需要用户名+密码+有时候是令牌。 REST可以让你使用OAuth流程 - 不必在你的程序中保存密码就不会受到伤害......如果它是一个cron工作,可能不那么重要。

是的,所以我们可能会看到5K / 200 = 25个请求/天。好多了。

批量API可让您在最多10K记录的1个块中执行此操作。但它是异步的。你提交了一份工作,它排队等待处理,你得到了工作ID,你需要定期检查状态,下载结果,处理它们(解压缩等)。这是可行的,但似乎对你的情况有点矫枉过正。当您谈论+ 100K记录时,请考虑批量API。

即便如此,你可能也不会手工制作它,但可能会重复使用。您是否知道可以编写DataLoader脚本以从控制台运行(包括cron jobs / windows任务调度程序?)。 DataLoader几乎是一个可以直接使用的JAR文件的瘦UI包装器?它支持您需要的所有操作。

也许你甚至决定使用某些集成解决方案,比如dataloader.io,jitterbit,informatica ......(然后这些也可能是一种过度杀伤)......天哪,甚至还有一个假装Salesforce的SQL Server插件只是一个带有ODBC驱动程序的常规数据库,因此您可以触发正常的SQL查询,更新等。