将TB级数据写入xml

时间:2014-05-09 00:20:47

标签: xml bigdata

我在考虑项目的数据格式。它可能会在未来增长到太字节。我只是为使用xml写这么大的数据而感到内疚,但我真的不知道为什么不这样做。

你还有其他建议吗?

3 个答案:

答案 0 :(得分:1)

你在问题​​中说过

  

你还有其他建议吗?

我建议您查看HDF5 technologies for storing large and complex data。它是科学计算社区和行业(包括NCSA,NASA,Northrop Grumman,波音,卡特彼勒和通用电气公司)建立的格式。 Python,IDL和Matlab都具有出色的库/模块/功能,可以与这些文件进行交互,并且可以在许多操作系统平台上(免费)使用该软件将该技术整合到您的产品中。它处理所有数据类型,但由于它是二进制数据格式,因此它允许比等效XML更大的压缩。

从以上链接:

  

HDF5技术套件包括:

     


- 一种多功能数据模型,可以表示非常复杂的数据对象   和各种各样的元数据。
- 一个完全可移植的文件格式   对数据对象的数量或大小没有限制
- A.   在一系列计算平台上运行的软件库   笔记本电脑大规模并行系统,并实现高级API   使用C,C ++,Fortran 90和Java接口。
- 丰富的集成   允许访问时间和存储空间的性能功能   优化
- 用于管理,操作的工具和应用程序   查看和分析集合中的数据。

您可以在http://www.hdfgroup.org/about/HDF5Brochure_2012.pdf

找到更多信息

免责声明我与HDF5集团无关;但我的公司确实将他们的技术用于我们最苛刻的数据存储应用程序。

我们有相当大的文件(远远超过TB的数据,但不可否认并不是全部存储在一个文件中;因为我们的很多数据都是“相似但不同” - 想想“每个200的校准文件”相同的工具“为了得到这个想法 - 我们有一个驱动顶层的数据库”,我们在什么文件中查找数据“决策,然后是单独的HDF5文件,用于高度结构化,压缩和高性能的数据表示。 )

底线:

  1. HDF5是存储自描述复杂数据格式的XML的良好替代品
  2. 与XML不同,它允许数据压缩(当你有TB时很重要)
  3. 我建议您考虑是否可以将问题分解为数据库+较小文件的集合。

答案 1 :(得分:0)

对于任何这么大的东西,您可能想要做的是将其存储在特定于应用程序的数据库中以提高访问效率,并仅在您希望与其他应用程序交换时将其序列化为XML(或其选定部分)

作为折衷方案,您可能希望查看类似DB2的“Pure XML”功能。这实现了真正的XML数据模型,同时利用了IBM在数据库访问优化方面的传统DB2专业知识。 (Claimer:我和IBM在一起,我提出了一些数据结构建议,这些建议可能已经或可能没有在该设计的最终版本中使用过。)

答案 2 :(得分:0)

如果您只是意味着与二进制文件相反,那么您在XML中失去的就是压缩。由于标记,编码和转义字符,XML更大。但是,XML也会传达您的数据布局。二进制没有。这就是使XML可移植的原因。因此,XML无缘无故。它实际上做得更多。

如果您不关心可移植性(因为您既控制创建和使用应用程序又看不到未来需求),那么二进制文件就可以了。它更小更快。如果您感觉很慷慨,请使用代码之外的其他内容记录未来开发人员的格式。

如果您不想丢失XML的可移植性但又不想要大型XML文件,那么请将它们压缩。由于数据不再可立即使用,因此节省了空间。这是经典的时间/空间权衡。

XML既不比二进制更快也不小。尽管在计算机上更难,XML通常会获胜,因为它对开发人员来说很容易。开发人员比雇主花费的费用远远超过计算机。摩尔定律并没有让开发商变得更便宜。什么驱动膨胀不是比特,它是雄鹿。

除了传统的二进制,原始xml和压缩的xml之外,还有一些混合体试图在这三个极端之间找到平衡点。如果你这样选择一个众所周知的,因为你的数据只有在它活着的时候才是可移植的。仔细选择您的依赖项。

请注意,操作系统会施加文件大小限制。如果您的数据使用的概念边界很好,可以将其分解为较小的文件。

如果你使用zipped xml,这应该是你的应用程序的数据文件,给它自己的文件扩展名,并自己处理压缩和解压缩。

如果正如你在评论中所说的那样,你没有进行更改或进行查询,只是想将其交给其他也没有进行更改或对其进行查询的内容,那么我看不到数据库的重点。

如果是这些,那么下次会提供更多有关您情况的详细信息。 :)