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