【问题标题】:Maximum size for data transfer in XML?XML 中数据传输的最大大小?
【发布时间】:2011-04-17 17:37:23
【问题描述】:

有没有人尝试过在 xml 中传递 5GB 的数据。需要传递大量数据的 Web 服务是否使用 XML over http 来传递数据。

我期待对系统进行更改以传递数据。如果我应该为 5 GB 的数据传递 XML 格式的数据,我很困惑,因为我的主内存只有 2 GB。

应用程序会中断吗?

谢谢

【问题讨论】:

  • 您的连接速度有多快? 5GB 需要 ages 才能传输。
  • 您是否正在从服务器发送或接收 5 GB 的数据?服务器正在运行什么堆栈?您是通过浏览器执行此操作,还是通过其他客户端或其他服务器执行此操作?请用更多信息更新您的问题,以便我们更好地回答您。 XML 对这个问题的影响真的很小(虽然我无法想象解析一个 5 GB 的文档)——对于那种大小的任何类型的数据,答案可能都是一样的。

标签: xml xmlhttprequest data-transfer


【解决方案1】:
  1. XML 只是一种标记语言/数据格式,没有任何固有的大小限制。如果需要,您可以制作一个 1000 GB 的 XML 文件。

  2. 处理 5 GB XML 文件(或任何其他类型的 5 GB 文件)的东西可能如果不是为处理大文件而设计的。一般来说,如果您只是将大文件上传到 Web 服务,您应该没问题,因为几乎所有现代文件上传模块都将支持在收到上传时将上传缓存到磁盘,这样整个文件就不需要留在记忆中。但是,一旦将文档放在服务器上,您可能会在解析文档时遇到一些问题,具体取决于您用于解析的库。您可能想查看哪些类型的流式 XML 解析器可用于您的 Web 服务/平台(或者甚至编写您自己的专门针对您的 XML 文档格式的解析器,从那时起您可以进行简化假设,让您限制内存量在任何给定时间都需要)。

  3. 我认为大多数传递大量数据的 Web 服务不会使用 XML 作为数据传输格式。带宽昂贵,高延迟或长上传时间会导致糟糕的用户体验。因此,我希望此类服务更典型地使用优化的二进制格式。一个合理的近似值可以通过在发送之前简单地对 XML 文档应用 gzip 压缩来获得。

【讨论】:

    【解决方案2】:

    我有一些处理大型 XML 文件的经验,但可能不是 5GB。

    如果这是一个使用 XML 的现有系统,那么在从 XML 更改为其他格式之前要三思而后行,因为更改本身可能比它的价值更麻烦。压缩文件将大大有助于网络传输。 gzip 压缩的 XML 文件可以与专有的二进制格式一样高效。

    您可能的瓶颈将是文件的解析和处理。如果 XML“记录”彼此独立(例如,如果这是一长串 xml 类型),那么您应该能够使用流式 XML 解析器来避免将所有内容加载到内存中。还可以考虑使用“非验证”解析器(或关闭验证)来提高性能。

    如果您可以在 XSLT 中进行任何文件处理,那么您可能会发现这比将整个文件解析到一个程序中进行操作要好。

    根据网络传输时间,考虑使用可靠的网络传输,例如 FTP 或 BitTorrent。如果 HTTP 断开连接,您可能需要重新开始。

    【讨论】:

      【解决方案3】:

      通过 Web 服务传输 5gb 似乎很大,但您可以压缩 XML,这应该会显着减小 XML 的大小。

      Compression XML metrics .

      或者,您是否可以使用 Windows 任务管理器或 linux 的 contrab 作业以一种不同的方法来执行此操作,例如每晚/每周的计划任务,其中压缩 > FTP 的文件?然后在另一端有另一个计划任务运行以导入数据。或者可以有一个网页或网络服务,用于触发在接收服务器上启动导入

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多