XML的简要历史-从炒作到有用的数据格式

XML真的死了吗?

大约20年前,当XML首次流行时,它被认为是序列化,封装和交换数据的唯一格式。 可以说所有序列化格式都以序列化格式结束。 这是一个大胆的主张。 它实现了吗? 在过去的几年中,很明显,申办“世界大国”是一座遥不可及的桥梁。 对于交换简单的信息,XML太冗长了。 开发人员讨厌它。 JSON现在已取代XML作为Web上选择的序列化格式。 大多数(如果不是全部)REST Web服务都已切换为JSON。 这是很合理的。 XML标记太多,这会使它变慢。 JSON更适合序列化编程语言对象。

数据分析呢? 在大肆宣传的日子里,有些人甚至认为XML将取代关系数据库。 回顾过去看起来像是个坏笑话,在当时是一个严肃的主张。 关于该主题的书籍不计其数,并且尝试创建XML数据库。 很快就很清楚,XML不适合这些情况。 用XPath查询XML是绝对的麻烦。 只需将此与SQL进行比较即可。 无法利用索引或基于成本的优化器,并且必须将整个XML文档加载到内存中才能使查询操作高效。 除了关系数据库,我们现在还拥有一些开源的列式压缩数据格式,例如Parquet或ORC,它们比XML更适合数据分析。

XML失败了吗?

说XML未能兑现其承诺是一回事,而另一种说法则是断言XML失败或已失效。 是的,它不适合在网络上交换数据,也不适合用于数据分析。 但是,至今有无数成功使用XML的例子。 XML的故事告诉我们的是,没有一种数据序列化格式可以完全统治它们。 现在,我们可以使用多种格式。 Avro,Thrift,协议缓冲区仅举几例。 有关完整列表和说明,请查看此Wikipedia文章https://en.wikipedia.org/wiki/Comparison_of_data_serialization_formats。 每一个都有其自己的用例(实际上,Wiki文章中的某些确实过时了)。

XML成功案例

XML成功的一些用例是什么?

  • 大量企业使用XML作为数据交换格式。 XML是在面向服务的体系结构中的企业应用程序之间交换消息的事实标准。 符合规范模型的消息会来回转换为XML。 如果您曾经在企业环境中工作过,那么您就会知道生活并不简单,您遇到的数据类型及其关系也不是那么简单。 在这种环境中,XML以具有可扩展模式的数据格式发光,以表示现实世界中的复杂业务流程。
  • 在全球范围内,企业之间的业务流程比以往任何时候都相互关联。 B2B数据中心通常将XML标准化为其数据交换格式。
  • 多年来,许多基于XML的行业标准都在发展。 多年的工作和专业知识已融入这些标准。 特别是在金融(ESMA TRACE,MIFID,XBRL)零售,医疗保健(HL7),生命科学(CDISC)和公共部门(EU)中就是这样。
  • XML在语义Web上下文中用作RDF(RDF / XML)的序列化格式。
  • 在出版业中,整个文档处理流程都使用XML。 它也是Office文件格式(如Word,Excel,PowerPoint或Google Docs等效文件)的标准。

XML =痛苦

我们已经看到XML可能非常有用,并且找到了自己的利基。 最初的炒作没有实现。 尽管它并不普遍存在,但仍被广泛使用,特别是在企业环境可能会变得复杂的情况下。 众所周知,当事情变得复杂时,事情就会变得困难。

理论上,XML是人类可读的。 不幸的是,我们在实践中没有看到这种情况(好吧,仅适用于在配置文件或类似文件中找到的最简单的XML文件)。 XML模式(XSD)可能变得非常复杂。 我们已经看到XSD实际上包含数百个实体/表。 当我们可视化这些架构时,它们看起来就像是一个复杂的ERP系统的架构,让人联想起蜘蛛网。 这种复杂性使数据分析师和开发人员很难与之合作。 随着XSD的复杂性,花在分析和处理XML上的人日成倍增加。 使问题复杂化的一个因素是,大多数XSD的设计都没有考虑到分析,例如,交易附带了冗余的参考数据,现实世界的关系没有正确建模等。

那么,将复杂的XML文件处理为关系格式或大数据格式(例如Parquet / ORC)(两种格式都适合数据分析)的方法是什么?

  • 您可以雇用一群开发人员和数据分析人员,他们试图理解复杂的架构,并尝试通过编写自定义代码从XML中手动提取数据。 如果您拥有ETL工具,则迟早会发现它不能处理大多数行业标准的复杂性,或者只能使过程半自动化,或者性能令人震惊。
  • 您可以使用Flexter Data Liberator for XML。 一天之内就能完成您的开发人员/ ETL工具六个月后的工作(如果有的话)。 不必担心数据量,SLA或性能。 伸缩器线性缩放。 故事结局。

我们知道您讨厌使用XML。 为什么不尝试Flexter来发现处理XML有多有趣。 Flexter是我们的平台,它消除了将XML文件转换为关系格式或Parquet的麻烦。