我正在探索如何高效地将客户数据批量导入Netsuite。我想出了多种方法,比如CSV导入、soap API、rest web服务、套件脚本等。
我尝试了所有这些方法,单个线程获得了每秒1.3个请求的吞吐量,当使用4的并发级别时,它们的吞吐量为每秒4.7个请求。
根据这一吞吐量,如果我们必须迁移数百万条记录,比如1000万条,那么完成这一迁移活动大约需要24天。
根据我的分析,我可以得出结论,无论我选择什么批量导入选项,Netsuite都会给我每个线程每秒1个请求的吞吐量(标准帐户并发限制为5(。如果客户需要增加吞吐量,则客户必须增加保费/额外账户数。
我从Netsuite找到了并发治理策略,它说我可以根据帐户类型和高级支持增加并发限制。
Netsuite还说套件脚本2.x支持map reduce,但我发现在这种情况下,这与在不增加并发限制的情况下提高吞吐量无关。虽然使用map reduce的CSV导入可能会给出更好的结果,但对此并不确定。但是CSV导入有25000行的限制,或者每个文件有50MB的大小限制,CSV导入的效率也没有超过该帐户的并发支持。
所以我的问题是:
- CSV导入是否可以超出特定帐户的并发级别
- 有没有办法在2-5天内完成10M记录迁移,而不用担心帐户的并发限制
- 并发限制是这里的控制因素吗
- 我的分析遗漏了什么吗
我不能给出你的问题的确切答案,但我真的认为解决方案是使用Map/Reduce,而不是在内部使用CSV导入(不确定你的意思是什么:虽然使用Map-Reduce的CSV导入可能会给出更好的结果,但不确定。(。
通过设计,可以很容易地制作Map/Reduce脚本,该脚本将逐行读取CSV文件,然后使用脚本逻辑创建记录。Map/Red的优势在于,您可以处理的数据数量没有限制,而且它也是Netsuite Design处理大规模更新的最佳工具。
此外,Map/Red设计用于更好地处理并发进程;尽管默认情况下,它仍然是有限的并发性,并且可能不足以让你达到2-5天的目标,除非你通过更多的";处理器";。
CSV导入很可能是可行的方法。你是否能挤出你需要的表演是另一回事。
如果每行导入1条记录,则可以获得最佳性能。对于多文件导入,您仍然可以通过跳过下面的#1来获得更好的性能(实际上,我还没有尝试跳过多行导入的#1,但如果您正在导入事务,您应该尝试一下。(
当您设置导入模板时,请在导入选项页面上执行以下操作:
- 选中"使用多线程">
- 选择一个队列。您可以为每个Suite Cloud plus许可证选择一个队列。能否顺利实现您的目标可能取决于购买足够的Suite Cloud Plus许可证以满足您的性能需求
- 取消选中"运行服务器脚本和触发器工作流",这意味着设置记录的任何逻辑都需要在CSV准备级别完成
可以通过脚本触发CSV导入。例如,我有一个RESTlet,它接收文件,然后运行配置好的脚本。该脚本接收文件id作为参数,然后处理该文件。在您的情况下,脚本可以将接收到的文件的行进行迭代——请参阅N/file.lines.iterator()
,将其转换为25k行或更少的CSV文件,并使用您在上面设置的CSV导入脚本的循环通过N/task.CsvImportTask
提交。
对于批量导入,我强烈建议使用soap-api方法进行加载,但您是对的,它需要您拥有多个suitecloud plus许可证才能添加并发:
回答您的问题:
- CSV导入是否可以超出特定帐户的并发级别否
- 有没有办法在2-5天内完成10M记录迁移,而不用担心帐户的并发限制否
- 并发限制是这里的控制因素吗并发,以及如何实现集成(使用Boomi、自定义或MuleSoft(
- 我的分析遗漏了什么吗否