2011-04-17 24 views
0

有没有人试过在XML中传递5GB的数据。需要通过http传递大量数据的Web服务使用XML传递数据。XML中数据传输的最大大小?

我期待在系统中进行更改以传递数据。如果我应该以XML格式传递5 GB数据的数据,我感到困惑,因为我的主内存仅为2GB。

应用程序是否会中断?

感谢

+0

你的连接速度有多快? 5GB将需要_ages_转移。 – SLaks 2011-04-17 02:02:47

+0

您是否正在从服务器发送或接收5 GB的数据?服务器运行的是什么栈?你是从浏览器,还是通过其他客户端或其他服务器执行此操作?请用更多信息更新您的问题,以便我们能更好地回答您。 XML对这个问题的影响很小(尽管我无法想象解析一个5GB的文档) - 对于任何这种大小的数据,答案可能都是一样的。 – Jason 2011-04-17 02:03:46

回答

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

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

  3. 我会想象大多数通过大量数据的Web服务将而不是使用XML作为数据传输格式。带宽很昂贵,高延迟或较长的上传时间可能会导致较差的用户体验。所以我希望这样的服务更典型地使用优化的二进制格式。在您发送XML文档之前,只需将gzip压缩应用到XML文档即可获得合理的近似值。

0

5gb似乎是一个很大的数量可以通过Web服务进行传输,但是您可以压缩XML,这应该大大缩小为XML。

Compression XML metrics .

或者,你能做到像它呼啸而过>跨越FTP的文件每晚/每周定期使用Windows任务管理器或Linux contrab工作任务不同的做法?然后在另一端有另一个运行时导入数据的计划任务。或者可能有一个网页或Web服务,用于触发导入在接收服务器上启动

1

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

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

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

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

根据网络传输时间,考虑使用可靠的网络传输,如FTP或BitTorrent。如果HTTP丢失连接,则可能必须重新开始。