我正在尝试构建Spring / Spring Boot-RESTful Web服务,
它接受一个CSV文件,该文件具有100万行/每行40列作为输入(来自基于Angular的前端),并且将是一个同步调用。进入其他屏幕之前,必须先通知用户上传状态。因此,等待时间不能超过几分钟(例如5分钟)。
这些行中的每一行都必须根据DB中的内容进行验证,如果发现有效,则将其插入DB中。简而言之,每一行可以是一个单独的独立事务。
您能否建议实现此目标的最佳方法是什么?
当前的遗留系统在存储过程中实现了相同的功能,这使得解决方案与数据库紧密结合,如果需要直接更改RDBMS,这将是一个问题。
有什么方法可以在异步Web服务调用中以块(例如20k)的形式处理这100万个数据?
Spring批?
存储过程是否可以比上述两个选项更合适且性能更好(猜测不行!)?
您能否提供一些至少与存储过程一样好的方法,以及如何根据建议的解决方案进行水平扩展?
您选择了三个建议选项,这是对的。不幸的是,您的问题的答案 取决于 。
以上任何一种方法都可以为您服务。我个人更喜欢Spring Batch,因为我发现编程模型简单直观。
Spring批处理指南
另一种方法是使用消息传递来并行处理行:
简而言之,您对自己领域的了解最终将指导您为企业找到最佳解决方案。