XML到Avro的转换
我們都知道XML是正確的嗎? 以防萬(wàn)一,這里的一切都沒問題。
現(xiàn)在,計(jì)算機(jī)真正需要的是數(shù)字5及其周圍的環(huán)境。 在XML中,您(人和計(jì)算機(jī))可以看到它如何表示五個(gè)上下文。 現(xiàn)在假設(shè)您有一個(gè)業(yè)務(wù)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>那是很多額外的不必要的數(shù)據(jù)點(diǎn)。 現(xiàn)在,讓我們使用Apache Avro進(jìn)行研究 。
使用Avro,上下文和值是分開的。 這意味著信息的架構(gòu)/結(jié)構(gòu)不會(huì)一遍又一遍地(一遍又一遍)地存儲(chǔ)或流式傳輸。
Avro模式已散列。 因此,數(shù)據(jù)結(jié)構(gòu)僅保留值,并且計(jì)算機(jī)可以理解架構(gòu)的指紋(哈希),并且可以使用指紋來(lái)檢索架構(gòu)。
0x d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592這種類型的實(shí)現(xiàn)在數(shù)據(jù)空間中非常典型。
執(zhí)行此操作時(shí),您可以將數(shù)據(jù)減少20%-80%。 當(dāng)我告訴人們時(shí),他們立即問:“為什么有這么大的未知數(shù)缺口”。 答案是因?yàn)椴⒎敲總€(gè)XML都是一樣的。 但這是問題所在,因?yàn)槟趶?fù)制計(jì)算機(jī)理解數(shù)據(jù)所需的信息。 XML很適合人類閱讀,但是…但這并不是為計(jì)算機(jī)優(yōu)化的。
這是一個(gè)我們正在https://github.com/stealthly/xml-avro上工作的轉(zhuǎn)換器,以幫助人們擺脫XML的束縛,進(jìn)入成本更低的開源系統(tǒng)。 這使您可以使用XML保留系統(tǒng)的某些部分(特別是域業(yè)務(wù)代碼),而不必進(jìn)行更改(減輕風(fēng)險(xiǎn)),而以較少的開銷存儲(chǔ)和傳輸數(shù)據(jù)(優(yōu)化預(yù)算)。
翻譯自: https://www.javacodegeeks.com/2014/03/xml-to-avro-conversion.html
總結(jié)
以上是生活随笔為你收集整理的XML到Avro的转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java八岁生日快乐!
- 下一篇: Java对象实习