Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SalesForce API-批量与REST之争_Salesforce - Fatal编程技术网

SalesForce API-批量与REST之争

SalesForce API-批量与REST之争,salesforce,Salesforce,我有一个满是用户的数据库和一个查询所有用户的Java代码(大约有5000个),为每个用户创建一个包含相关详细信息的字典,并将其发送给SalesForce,以确保我拥有的数据与数据库中的数据是最新的 这是一个每天运行的cron作业 我的问题是——哪种选择更好 继续使用此方法,每天调用SalesForce的API 5000次 创建一个包含所有5000个用户字典的大字典,并使用SalesForce的批量API一次插入/更新所有字典,只需一个API调用 你觉得怎么样? 每种API的优点/缺点?我认为您对

我有一个满是用户的数据库和一个查询所有用户的
Java
代码(大约有5000个),为每个用户创建一个包含相关详细信息的字典,并将其发送给SalesForce,以确保我拥有的数据与数据库中的数据是最新的

这是一个每天运行的cron作业

我的问题是——哪种选择更好

  • 继续使用此方法,每天调用SalesForce的API 5000次
  • 创建一个包含所有5000个用户字典的大字典,并使用SalesForce的批量API一次插入/更新所有字典,只需一个API调用
  • 你觉得怎么样?
    每种API的优点/缺点?

    我认为您对API的看法是错误的。暂时忘记批量API

    SOAP API和REST API具有相同或几乎相同的功能。选择您觉得更适合使用的Java库/您更了解的Java库。列举几个关键因素:

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

    错误处理:如果您的更新失败,它们都会在返回的消息(第5条输入记录->第5条成功/错误记录)中的相同位置向您提供错误,因此您可以匹配内容,即使是插入而不是更新(因为更新时错误也包括ID)

    “全部或无”:您想在那批N条记录中保存您能保存的内容,还是应该全部保存,或者什么都不保存,如果出现问题,请进行适当的数据库回滚?在SOAP API中,您可以在消息头中,在REST中,将其指定为HTTP头

    我认为RESTAPI的一个优点是身份验证。使用SOAP,您需要用户名+密码+令牌。REST将允许您使用OAuth流-不必在程序中保存密码不会有任何伤害。。。如果这是一个cron任务,可能就不那么重要了

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


    批量API可以让您在1块多达10K的记录中完成这项工作。但它是异步的。你提交一个作业,它排队等待处理,你得到作业id,你需要定期检查状态,下载结果,处理它们(解压等)。这是可行的,但对于你的情况来说似乎有点过头了。当你谈论+100K记录时,考虑大容量API。

    即使这样,你也可能不会手工制作,但可能会重复使用一些东西。您知道吗,您可以编写数据加载器的脚本以从控制台运行(包括cron作业/windows任务调度器?)。这个数据加载器是一个非常薄的UI包装器,它覆盖了一个您可以直接使用的JAR文件?它支持您需要的所有操作



    也许您甚至会决定使用一些集成解决方案,如dataloader.io、jitterbit、informatica。。。(同样,这也可能是一种过度的杀伤力)。。。见鬼,甚至有一个SQL Server插件假装Salesforce只是一个带有ODBC驱动程序的常规数据库,因此您可以启动常规SQL查询、更新等。

    非常感谢您的详细回答!我想我将使用RESTAPI,主要是因为,正如您所提到的,批量API是异步的。当你说我必须定期检查状态时,根据你的经验,处理一个5000-10000条记录的工作通常需要多长时间?应该还是几秒钟,我预计最多30秒?这取决于它是一个直接加载还是在这个对象上有很多触发器和其他功能。在做最后决定之前,请随意试验。准备一个CSV文件并将其提供给DataLoader(在“设置”中会有一个“批量api”复选框)。或者访问workbench.developerforce.com。您可以在本地计算时间,但也可以在加载后,在Setup->“批量数据加载作业”中查看处理服务器端所花的时间