XML到Avro的转换

我们都知道XML是正确的吗? 以防万一,这里的一切都没问题。

<root>
<node>5</node>
</root>

现在,计算机真正需要的是数字5及其周围的环境。 在XML中,您(人和计算机)可以看到它如何表示五个上下文。 现在假设您有一个业务XML文档,例如FPML

<FpML xmlns="http://www.fpml.org/2007/FpML-4-4" xmlns:fpml="http://www.fpml.org/2007/FpML-4-4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="4-4" xsi:schemaLocation="http://www.fpml.org/2007/FpML-4-4 ../fpml-main-4-4.xsd http://www.w3.org/2000/09/xmldsig# ../xmldsig-core-schema.xsd" xsi:type="RequestTradeConfirmation">
<!--  start of distinct  -->
<strike>
<strikePrice>32.00</strikePrice>
</strike>
<numberOfOptions>150000</numberOfOptions>
<optionEntitlement>1.00</optionEntitlement>
<equityPremium>
<payerPartyReference href="party2"/>
<receiverPartyReference href="party1"/>
<paymentAmount>
<currency>EUR</currency>
<amount>405000</amount>
</paymentAmount>
<paymentDate>
<unadjustedDate>2001-07-17Z</unadjustedDate>
<dateAdjustments>
<businessDayConvention>NONE</businessDayConvention>
</dateAdjustments>
</paymentDate>
<pricePerOption>
<currency>EUR</currency>
<amount>2.70</amount>
</pricePerOption>
</equityPremium>
</equityOption>
<calculationAgent>
<calculationAgentPartyReference href="party1"/>
</calculationAgent>
<documentation>
<masterAgreement>
<masterAgreementType>ISDA2002</masterAgreementType>
</masterAgreement>
<contractualDefinitions>ISDA2002Equity</contractualDefinitions>
<!--
 populate credit support document with correct value 
-->
<creditSupportDocument>TODO</creditSupportDocument>
</documentation>
<governingLaw>GBEN</governingLaw>
</trade>
<party id="party1">
<partyId>Party A</partyId>
</party>
<party id="party2">
<partyId>Party B</partyId>
</party>
</FpML>

那是很多额外的不必要的数据点。 现在,让我们使用Apache Avro进行研究

使用Avro,上下文和值是分开的。 这意味着信息的架构/结构不会一遍又一遍地(一遍又一遍)地存储或流式传输。

Avro模式已散列。 因此,数据结构仅保留值,并且计算机可以理解架构的指纹(哈希),并且可以使用指纹来检索架构。

0x d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

这种类型的实现在数据空间中非常典型。

执行此操作时,您可以将数据减少20%-80%。 当我告诉人们时,他们立即问:“为什么有这么大的未知数缺口”。 答案是因为并非每个XML都是一样的。 但这是问题所在,因为您正在复制计算机理解数据所需的信息。 XML很适合人类阅读,但是…但这并不是为计算机优化的。

这是一个我们正在https://github.com/stealthly/xml-avro上工作的转换器,以帮助人们摆脱XML的束缚,进入成本更低的开源系统。 这使您可以使用XML保留系统的某些部分(特别是域业务代码),而不必进行更改(减轻风险),而以较少的开销存储和传输数据(优化预算)。

参考:我们的JCG合作伙伴 Joe Stein在All Things Hadoop博客上提供的XML到Avro转换

翻译自: https://www.javacodegeeks.com/2014/03/xml-to-avro-conversion.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值