本發明專利技術公開了一種數據轉換方法及系統,用于解決現有技術中下游應用無法動態識別上游業務數據格式的技術問題。本發明專利技術基于protobuf開源序列化框架,同時傳遞業務數據文件、業務數據描述文件、protobuf格式的結構描述文件到下游應用,下游應用根據結構描述文件進行動態編譯在內存中生成protobuf::message業務數據對象,然后根據業務數據描述文件在業務數據文件中找到message中各字段對應數據并裝載到message對象中,從而構建出一套可以動態解析數據格式的系統。很好的解決了下游應用動態識別數據格式的難題,增強了擴展性和靈活性,即便下游所需的數據項經常變化,也不再需要重新修改程序代碼,省時省力,極大地提高了效率。
【技術實現步驟摘要】
一種數據轉換方法及系統
本專利技術涉及計算機數據處理技術,尤其涉及一種數據轉換方法及系統。
技術介紹
在數據處理業務中經常遇到如下一種業務狀況:上游的業務數據收集模塊按照一定格式收集數據,傳給下游的數據處理模塊。此時下游的數據處理模塊必需要能識別上游傳遞過來的數據格式,才能進一步對數據進行處理、轉換、計算等操作。那么下游模塊如何正確識別傳遞來的數據格式,就成為一個關鍵問題,現有的技術方案主要有:1、在上游業務模塊和下游的數據處理模塊中共用一個公有的數據結構,在代碼層面硬編碼數據格式。這種技術方案的優點是簡單、快捷、效率高。2、protobuf為谷歌(google)公司提供的一種開源序列化框架,是一種輕便高效的二進制的結構化數據存儲格式,可以用于結構化數據串行化,或者說序列化。它很適合做數據存儲或遠程過程調用(RemoteProcedureCall,RPC)的數據交換格式。可用于通訊協議、數據存儲等領域的語言無關、平臺無關、可擴展的序列化結構數據格式。隨著最近protobuf格式的廣泛使用,出現了另外一種方案:首先在上游應用和下游應用約定好都是用protobuf格式,并公用一個結構描述文件(.proto文件),然后利用工具生成.cc和.h文件,在這兩個文件中就自動根據所述的結構描述文件生成了一個描述類。接下來便可以在上游數據收集模塊代碼和下游數據處理模塊代碼中方便的使用該描述類進行set或者get操作。該方法實際上仍舊是在代碼層面進行操作。以上現有技術的最大缺點就是擴展性和靈活性太差。比如,一旦要多添加一個數據項,將是一件非常困難的事情。需要重新修改代碼,耗時耗力。而隨著業務的不斷發展,不斷的添加數據字段又變得比較普遍。
技術實現思路
有鑒于此,本專利技術的主要目的在于提供一種數據轉換方法及系統,用于解決現有技術中下游應用無法動態識別上游業務數據格式的技術問題。為達到上述目的,本專利技術的技術方案是這樣實現的:一種數據轉換方法,該方法包括:A、上游應用根據業務數據文件配置業務數據描述文件和基于開源序列化框架protobuf的結構描述文件,并將所述業務數據文件、業務數據描述文件和結構描述文件發送給下游應用;B、下游應用根據所述結構描述文件動態在內存中生成業務數據對象;C、下游應用解析上游應用發送的業務數據描述文件,基于所述業務數據描述文件讀取業務數據文件中的數據記錄,并將數據記錄中對應的字段內容裝載到業務數據對象當中。進一步地,所述的業務數據文件用于存儲業務數據;所述業務數據描述文件用于描述業務數據文件的格式及業務數據格式;所述結構描述文件用于描述下游業務應用所需的業務數據在內存中的數據結構。進一步地,步驟B具體為:根據所述結構描述文件的名稱,使用開源序列化框架protobuf中的導入importer類加載所述結構描述文件;使用所述業務數據對象的名稱動態獲取業務數據對象的描述;利用開源序列化框架protobuf中的對象工廠factory類動態構建業務數據對象。進一步地,步驟C中,在將數據記錄中對應的字段內容裝載到業務數據對象當中時,根據所述業務數據描述文件指示的字段類型,對從所述業務數據文件中讀取的字段數據進行類型轉換后,再寫入到所述業務數據對象中對應的字段成員屬性中。進一步地,所述業務數據文件的類型為文本文件類型或二進制文件類型;和/或所述業務數據描述文件類型為可擴展標記語言xml文件類型。本專利技術還公開了一種數據轉換系統,該系統包括:配置模塊,位于上游應用,用于根據業務數據文件配置業務數據描述文件和基于protobuf開源序列化框架的結構描述文件;傳送模塊,位于上游應用,用于將所述業務數據文件、業務數據描述文件和結構描述文件發送給下游應用;動態編譯模塊,位于下游應用,用于根據所述結構描述文件動態在內存中生成業務數據對象;動態裝載模塊,位于下游應用,用于解析上游應用發送的業務數據描述文件,基于所述業務數據描述文件讀取業務數據文件中的數據記錄,并將數據記錄中對應的字段內容裝載到所述業務數據對象當中。進一步地,所述系統中,所述的業務數據文件用于存儲業務數據;所述業務數據描述文件用于描述業務數據文件的格式及業務數據格式;所述結構描述文件用于描述下游業務應用所需的業務數據在內存中的數據結構。進一步地,所述系統中,所述動態編譯模塊根據所述結構描述文件的名稱,使用開源序列化框架protobuf中的導入importer類加載所述結構描述文件,使用所述業務數據對象的名稱動態獲取業務數據對象的描述,使用開源序列化框架protobuf中的對象工廠factory類動態構建業務數據對象。進一步地,所述系統中,所述動態裝載模塊在將數據記錄中對應的字段內容裝載到業務數據對象當中時,根據所述業務數據描述文件指示的字段類型,對從所述業務數據文件中讀取的字段數據進行類型轉換后,再寫入到所述業務數據對象中對應的字段成員屬性中。進一步地,所述系統中,所述業務數據文件的類型為文本文件類型或二進制文件類型;和/或所述業務數據描述文件類型為可擴展標記語言xml文件類型。本專利技術基于protobuf開源序列化框架,同時傳遞業務數據文件、業務數據描述文件、protobuf格式的結構描述文件到下游應用,下游應用根據結構描述文件進行動態編譯在內存中生成protobuf::message業務數據對象,然后根據業務數據描述文件在業務數據文件中找到message中各字段對應數據并裝載到message對象中,從而構建出一套可以動態解析數據格式的系統。很好的解決了下游應用動態識別數據格式的難題,增強了擴展性和靈活性,即便下游所需的數據項經常變化,也不再需要重新修改程序代碼,省時省力,極大地提高了效率。附圖說明圖1為本專利技術提供的數據轉換方法的實現流程圖;圖2為本專利技術protobuf文件格式內容及動態編譯示例;圖3為本專利技術動態讀取轉換技術方法的示例;圖4為本專利技術業務數據描述文件的示例;圖5為本專利技術提供的數據轉換系統的構成圖。具體實施方式本專利技術的基本思想為:基于protobuf的數據交換與存儲框架,上游應用通過結構描述文件(.proto文件)來描述下游應用所需的業務數據在內存中的數據結構,下游應用采用動態編譯技術,基于所接收到的結構描述文件在內存中動態構建用于存儲業務數據的內存對象。上游應用通過業務數據描述文件(.xml文件)來描述業務數據文件的數據格式。上游應用將業務數據文件、業務數據描述文件及結構描述文件發送給下游應用,下游應用基于結構描述文件在內存中構造業務數據對象(message對象),在通過解析業務數據描述文件獲知業務數據文件的數據格式后,從業務數據文件中動態讀取所需的業務數據,并將讀取的業務數據動態轉換為所需的數據類型后裝載到業務數據對象中,從而完成上下游應用之間業務數據的傳送。由于采用了動態編譯和裝載技術,下游應用可以動態解析上游應用傳送的業務數據的數據格式,在需要對業務數據項進行擴展或更新時,只需要重新定制結構描述文件和/或業務數據描述文件即可,而不需要修改上下游應用的代碼,從而大大增強了程序的擴展性和靈活性。為使本專利技術的目的、技術方案和優點更加清楚明白,以下舉實施例并參照附圖,對本專利技術進一步詳細說明。圖1為本專利技術提供的數據轉換方法的實現流程圖,具體步驟如下:本文檔來自技高網...

【技術保護點】
一種數據轉換方法,其特征在于,該方法包括:A、上游應用根據業務數據文件配置業務數據描述文件和基于開源序列化框架protobuf的結構描述文件,并將所述業務數據文件、業務數據描述文件和結構描述文件發送給下游應用;B、下游應用根據所述結構描述文件動態在內存中生成業務數據對象;C、下游應用解析上游應用發送的業務數據描述文件,基于所述業務數據描述文件讀取業務數據文件中的數據記錄,并將數據記錄中對應的字段內容裝載到業務數據對象當中。
【技術特征摘要】
1.一種數據轉換方法,其特征在于,該方法包括:A、上游應用根據業務數據文件配置業務數據描述文件和基于開源序列化框架protobuf的結構描述文件,并將所述業務數據文件、業務數據描述文件和結構描述文件發送給下游應用;所述結構描述文件包含對應下游應用所需的業務數據的數據結構的描述;所述業務數據描述文件用于描述業務數據文件的格式及業務數據格式;B、下游應用根據所述結構描述文件動態在內存中生成業務數據對象;C、下游應用接收到上游應用發送的業務數據描述文件及業務數據文件后,解析所述業務數據描述文件,通過業務數據描述文件獲知業務數據文件的格式及業務數據文件中包含的業務數據的格式,讀取業務數據文件中的數據記錄,并將數據記錄中對應的字段內容裝載到業務數據對象當中。2.根據權利要求1所述的方法,其特征在于,所述的業務數據文件用于存儲業務數據;所述結構描述文件用于描述下游業務應用所需的業務數據在內存中的數據結構。3.根據權利要求2所述的方法,其特征在于,步驟B具體為:根據所述結構描述文件的名稱,使用開源序列化框架protobuf中的導入importer類加載所述結構描述文件;使用所述業務數據對象的名稱動態獲取業務數據對象的描述;利用開源序列化框架protobuf中的對象工廠factory類動態構建業務數據對象。4.根據權利要求2所述的方法,其特征在于,步驟C中,在將數據記錄中對應的字段內容裝載到業務數據對象當中時,根據所述業務數據描述文件指示的字段類型,對從所述業務數據文件中讀取的字段數據進行類型轉換后,再寫入到所述業務數據對象中對應的字段成員屬性中。5.根據權利要求1所述的方法,其特征在于,所述業務數據文件的類型為文本文件類型或二進制文件類型;和/或所述業務數據描述文件類型為可擴展標記語言xml文件類型。6.一種數據轉換系統,其特征在于,該系統包括:配...
【專利技術屬性】
技術研發人員:伍劉,
申請(專利權)人:騰訊科技深圳有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。