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