固定宽度文件格式比XML更有优势吗?我意识到XML可能会占用更多的磁盘空间来存储相同数量的数据,但文件也可以被压缩.从理论上讲,我猜你也可以根据它在文件中的位置读取一段特定的数据(只需抓取那些字节).但除此之外,还有什么?
Tom*_*mmy 22
当数据是大(千兆/泰拉字节),固定宽度的格式的文件可以是MUCH更有效.
由于每个记录和字段都有固定的大小,您可以简单地寻找(例如)第n百万行并从那里读取几个记录.您还可以将整个文件内存映射到内存中,并获得相当高效且随意的随机访问.
XML文件不适合这些情况.
XML很复杂.特别是如果您根据架构进行验证.这可能看起来不重要,因为其他人已经编写了可以使用的XML解析器.但这会增加很多处理,这意味着它需要更长的时间.在许多情况下这可能不是问题,但有时可以.
如果要将一个整数保存为自定义文件格式,则只需4个字节,当您要加载它时,只需将这4个字节复制到内存中(假设文件格式和平台具有相同的字节顺序).但是使用XML,可能需要10-30个字节.加载它意味着比较字符串和解析整数的十进制表示,可能更多.
同样,这些性能和存储大小的差异可能甚至太小,甚至无法考虑(并且设计自定义格式所需的工作可能非常重要),但在许多情况下,这些差异确实很重要.
例如,我遇到了一个使用SMS消息传输某些数据的系统.这意味着每条消息有140个字节(!).发送和接收这些消息的设备没有GB的内存和GHz的CPU.在这种情况下,您确保每个位都有效,并且您当然不使用XML.
我知道这是旧的,但我每天都处理固定宽度和XML.您可以将它总结为:
XML =可读性
固定宽度=速度和低资源消耗
XML主要是为了人类的可读性.我不关心任何人对结构和验证的看法.如果您正在运行一个真正不需要的系统,并且应该让人类读取您来回传递的文件,那么您实际上只是将此作为开销添加到处理文件和处理文件所需的时间.文件的大小,影响文件传输内容所需的时间以及对处理的另一个影响.所有这些也将影响消耗XML文件的系统的内存使用.然而,XML有一些优点.您可以更松散地定义您的结构.如果您的文件和代码都不要求字段长度为255个字符,则有时会更容易.只有您的代码加载了限制期限.另一个优点是XML可以/应该带有一个定义XML内容要求的XML Schema.这有助于拥有多个使用单个API的系统.如果您可以向开发人员提供架构,他们可以非常快速地将类型化对象序列化为适当的格式化和结构化XML.
固定宽度用于速度和最小的资源消耗.设置比XML更繁琐.确保所有系统都知道固定宽度文件中"列"的确切位置.通常并非所有系统都使用相同或所有列,因此您最终只能使用一个完全了解固定宽度内容的系统.这可能会使利用传输的文件内容扩展API或系统变得具有挑战性.但是,由于没有字段标签,没有标签,只有原始数据,您通常可以通过网络发送更小的包.并非总是如此,在某些情况下,您可能会有大量文本字段,这些字段通常会在字段中存储少量数据,但对于输入段落长度的一个关闭情况,必须保留较大的列宽.现在,你的固定宽度文件中有一堆空白位置,XML可能实际上减少了整体包大小.
一般来说,XML是为了便于阅读.您通常不能只选择固定宽度文件甚至是CSV文件,并立即开始掌握数据的含义.哪里有标记的XML文件,你可以.
我没有涉及到许多优点和缺点,但这是我看到差异真正的肉和土豆的地方.
原因之一可能是处理 XML(不仅仅是读取和加载到内存结构中,而是考虑在 XML 文件中进行正则表达式搜索,而不是简单的固定宽度或分隔文件,甚至对错误数据进行手动快速修复)更容易比固定宽度文件复杂。当然,现在有很多库可以为您做到这一点,但如果没有适合您正在使用的平台的库,您是否真的想编写一个 XML 解析器,或者一个只在位置读取n 个字节的程序X?
| 归档时间: |
|
| 查看次数: |
9458 次 |
| 最近记录: |