【问题标题】:Is Web Service suitable for ETL purpose?Web Service 是否适合 ETL 目的?
【发布时间】:2009-12-24 01:16:00
【问题描述】:
我的公司正在考虑使用 Web 服务作为 ETL 流程的手段。但是,出于以下几个原因,我认为 Web 服务不适合此目的:
1. web 服务在生成大 xml 时可能会消耗大量内存。
2. xml 是一种臃肿的格式。
3.如果服务器需要大量时间来生成数据,可能会超时
4.文件大小限制? (对于 Windows,它是 2Gb,如果我没记错的话)
我不是网络服务专家,所以我需要您的意见。 :)
谢谢。
【问题讨论】:
标签:
java
web-services
etl
【解决方案1】:
Web 服务工具棚中有很多技术可以规避您详细阐述的所有问题。有面向流的 XML 粉碎,有用于交付的 XML 压缩格式,有处理碎片和公平性的协议,还有许多存储系统可以保存数 TB 的数据。
如果您通过网络服务想象一些大学新生的家庭作业混合了一个接口,该接口接受一个带有 2GB 序列化表的 glop 参数,那么您的所有参数都是有效的。但是,如果您将您的要求提供给了解WS-ReliableMessaging 和WS-Transaction 所涉及概念的经验丰富的团队,那么没有理由不围绕Web 服务进行ETL 流程。请注意,我并不提倡 SOAP 协议本身,但我提倡了解和理解所涉及的概念。
话虽如此,面向 Web 服务的 ETL 流程是否对您有意义,这取决于一系列其他原因。但是,您对 Web Service 技术的反驳是站不住脚的。
【解决方案2】:
我不会将 Web 服务用于 ETL 任务。有更适合该任务的专用工具(例如 Ab Initio、Informatica 等)。
如果您有大量数据,我会说网络引入的额外延迟的代价将是令人望而却步的。
【解决方案3】:
这确实取决于您在做什么以及您如何尝试完成它。一般来说,Web 服务比您通常投入到 ETL 过程中需要更多的关注和支持,但它们在任务中也可以非常有效。对于您的方案,我没有获得足够的细节来说明它是否可行。
我从事 Web 服务的工作,它可以传输和接收 100 多 MB 的文档,有些是用 XML 编码的,有些不是,并且可以在几秒钟内完成(在封闭的本地网络上)。这些服务需要大量的调整和规划,但它们确实适用于我们的场景,并且它们允许各种客户端通过相当标准的接口连接和传输不同数量的数据。这与我们拥有的其他一些 ETL 作业不同,该作业是针对每个客户的,并且必须为每个客户进行设置和维护。
这完全取决于你在做什么以及你的限制是什么。
如果您打算采用这条路线,请坐下来从头到尾草拟整个流程,包括您希望客户端如何连接,验证数据是否已收到并验证工作是否已完成。考虑一些场景、客户端和传输的数据类型,然后确定需要什么。将其与其他工具中已有的功能进行对比,以及完成它需要多少时间。
【解决方案5】:
首先查找 MTOM,它允许在 Web 服务中传输任意非 XML 数据。
【解决方案6】:
Web 服务非常适合 ETL 任务。请记住,每个任务都将在其自己的线程中免费处理,并且可以保证在请求之间进行适当的清理。在 Tomcat 之类的内部使用 Web 服务不会像您想象的那么繁重。
如果您担心 XML 的膨胀,请考虑 JSON 格式。