我正在构建一个应用程序,它接收来自遗留应用程序的位置平面文件,以及每个细节行,我需要在第三个应用程序中搜索某些数据,然后填满我的数据库。如果文件中存在任何错误形成的行,我需要停止处理并记录格式错误的字符串的行和位置。
至少现在,文件有,最多50MB。
我非常困惑谁最适合这种情况,Biztalk和SSIS有类似的功能,而且我可以看到,两者都适用于这种情况。这是一个我可以很好地利用Biztalk的任务,或者我应该使用ETL解决方案(Integration Services)?
答案 0 :(得分:9)
我通常建议BizTalk左,右和中心,但在这种情况下我会选择SSIS有两个原因:
在50Mb的文件上,无论您使用BTS处理文件中每条记录的方式投入多少资源,您都可以获得更好的SSIS性能。当然,这里有策略,但SSIS将赢得胜利(尽管我认为你的网络服务可能会成为你的瓶颈,无论你选择哪种解决方案);以及
除非您编写自定义平面文件反汇编程序(这几乎是火箭科学,BizTalk上帝的领域),否则标准反汇编程序将在到达格式错误的行时停止,将错误记录到事件日志中将进行进一步的消息处理。
顺便说一下,我已经涉足太多的项目,客户可以在BizTalk中编写使用批处理操作执行的解决方案。最初的开发和测试是在平面文件c上完成的。 1Mb - 10Mb。当50Mb - 100Mb +文件需要很长时间才能处理时,客户会感到困惑!
在项目开始时选择正确的问题解决方案(恕我直言,SSIS)要好得多,而不是将解决方案撬到不合适的产品上。
答案 1 :(得分:8)
我可能会在SSIS中这样做。它似乎是一个ETL工作。考虑到数据的长期来源,BizTalk可能会给你更好的灵活性,但如果你说这是一个Web服务,这可以在SSIS中完成。
一般而言,SSIS =批处理和直接数据翻译。 BizTalk =消息/水平系统请求/响应,可能需要也可能不需要同步。
但是不要相信我的话。包括努力,软件成本,如果它们重要,以及这个过程的寿命。