竇旭蒙 梁毅 蘇航



摘 要:為克服面向農業企業畫像系統在數據存儲方面存在的弊端,使數據存儲工作達到更加精簡、高效、可擴展目的,對農企畫像系統的業務場景和數據源進行分析,提出一套通用存儲模型。該模型由通用操作算子表達式、解析映射器、操作算子實現集和存儲介質組成,以服務的形式對外開放,對上屏蔽掉底層復雜的存儲工作,對下屏蔽掉上層復雜的業務場景,達到降低系統開發維護成本,提高系統工作效率的目的。為農企畫像系統數據存儲工作提供了一套通用的解決方案,對該領域同類型系統存儲工作具有一定的指導意義。
關鍵詞:農業企業;畫像系統;存儲模型;操作算子;異構數據;服務化
DOI:10. 11907/rjdk. 182810 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP306 文獻標識碼:A 文章編號:1672-7800(2019)008-0036-06
Research on Big Data Storage Model for Portrait System of
Agricultural Enterprises
DOU Xu-meng,LIANG Yi,SU Hang
(Faculty of Information Technology, Beijing University of Technology, Beijing 100124, China)
Abstract: In order to improve the disadvantages of the portrait system for agricultural enterprises in data storage, and make the data storage work more concise, efficient and extensible, this paper analyzes the business scenarios and data sources of the agribusiness portrait system and proposes a general storage model. The model is composed of general operator expression, analytic mapper, operator implementation set and storage medium, and is open to the public as a service. The model can be done to block out the underlying complex storage work and on the upper block complex business scenarios, reduce the system development and maintenance costs, improve the work efficiency of the system to work on agribusiness portrait system data storage provides a general solution, the storage of the same kind of system about the field work has a certain guiding significance.
Key Words: agricultural enterprise; portrait system; storage model; operation primitives; heterogeneous data; servicing
基金項目:國家自然科學基金青年項目(61202074);農業部農業大數據重點實驗室開放基金項目(2017,2018)
作者簡介:竇旭蒙(1994-),男,北京工業大學信息學部計算機學院碩士研究生,研究方向為軟件工程與理論;蘇航(1978-),男,北京工業大學信息學部計算機學院講師、碩士生導師,研究方向為軟件自動化、程序分析與變換;梁毅(1975-),女,北京工業大學信息學部計算機學院副教授、碩士生導師,研究方向為計算機體系結構、海量數據處理、云計算、高性能計算。本文通訊作者:竇旭蒙。
0 引言
大數據應用的主要目的是通過對日志數據的分析得到精確的指標結果[1],基于此需求,畫像概念應運而生。畫像即信息標簽化,是對研究個體進行特征標簽化描述,從而得到精準的信息反饋[2]。畫像系統研究已有不少成果:Chen[3]通過分析網站上用戶的行為數據,得到不同用戶對于環境問題的關心程度;劉廣東[4]通過分析用戶的購買行為,實現對用戶的商品推送;王雪[5]通過分析各企業的公示數據,對企業運營狀況、資產、經營規模等方面進行歸類,為政府、銀行等提供參考。
農業信息化發展帶動了農業企業對信息的需求,因此,以農業企業為研究主體的畫像系統(以下簡稱“農企畫像系統”)也隨之誕生[6]。農企畫像系統有助于對農業企業屬性特征、行為趨勢進行精準評估和分類,確保農業企業管理的公平性和要素配置的高效性,對農業企業發展具有指導意義。本文以中國農業科學院信息所提出的農企畫像系統為依托,進行數據存儲相關技術的研究。
數據存儲在農企畫像系統中起著舉足輕重的作用,整個系統生命周期內數據輪轉都要依賴存儲服務,而存儲服務的架構設計和性能指標直接影響整個系統性能和結果精準度[7]。目前的畫像系統由于各功能模塊都涉及到數據的存儲操作,數據存儲服務大多散落在各功能模塊中并由其獨自維護[8],不但增加了業務模塊與存儲模塊的耦合度,沒有做到上層業務模塊與底層存儲模塊分離,而且不利于系統擴展。系統后期維護和功能迭代無形增加了更多開支[9]。
針對上述弊端,田野[10]提出了異構數據存儲統一管理思想;譚振強[11]等為解決關系型數據庫只能滿足二維關系問題,提出了一種存儲中間處理模塊,實現二維關系與多維關系間的靈活轉變;李林[12]提出了一種基于海量圖片數據的存儲模型。以上研究只是針對某種類型的數據進行存儲模型上的優化,不適應本文多源異構數據的研究背景。劉基陽[13]在汽車行業背景下,對異構數據進行統一管理,提出了通用訪問中間件。但該研究的數據源和業務場景全部基于汽車行業下,對農業領域無法起到直接的指導作用。基于對數據存儲相關工作的研究發現,在農企畫像領域目前尚無學者根據該領域產生的異構數據特點進行研究,實現對該領域異構數據的統一管理和通用訪問,使得農企畫像系統對異構數據的存儲仍使用獨立維護的做法,不利于系統的擴展和穩定。而且農企畫像系統還需考慮數據存儲服務以何種形式對外提供[14],以及存儲服務與存儲工具如何尋址映射[15],存儲服務與其它模塊如何做到高度解耦等問題[16]。
本文提出一種通用存儲模型,該模型與狹義的存儲模型不同[17],可以理解為一套存儲架構,由通用操作算子表達式、解析映射器、操作算子實現集和底層存儲介質4部分組成,以服務的形式對外開放。存儲模型對外服務的實現依賴于通用操作算子表達式,通用操作算子表達式依賴于底層的操作算子實現,集和存儲介質兩者之間通過解析映射器進行尋址映射。該模型可對上屏蔽掉底層復雜的存儲工作,對下屏蔽掉上層復雜的業務場景,降低系統耦合程度和開發維護成本,提高系統工作效率和擴展性[18],為農企畫像系統的數據存儲提供了一套通用解決方案,對該領域同類型系統存儲工作具有一定的指導意義。
1 數據源分析
畫像系統數據來源廣泛、類型復雜、結構多樣。王藝霖[19]研究的電信用戶畫像系統數據主要來源于網絡文本、系統日志以及終端數據,以結構化、半結構化、非結構化結合的形式存在。數據處理流程分為數據獲取、數據加工、數據分析、畫像結果應用等步驟。本文研究的農企畫像系統,在數據處理過程方面與王藝霖所研究的畫像系統大致相同,如圖1所示。
圖1 農企畫像系統數據處理流程
基于對已有畫像系統和農企畫像系統相關工作調研,可對農企畫像系統數據源從4個維度進行分析。數據分為網絡原始文本、企業原始報表、企業行為日志、圖片數據、清洗加工后中間數據、特征項、標簽項、系統配置等類型。數據來源分為網絡爬蟲、批量上傳、清洗加工、分析處理、用戶輸入等。數據結構分為結構化、半結構化、非結構化。從數據操作特點分為定時批量讀寫、實時少量讀寫。表1是對系統中各種數據源特點的歸納總結。
表1 農企畫像系統數據分析
2 通用存儲模型設計
農企畫像系統存儲模型架構如圖2所示,存儲模型由上到下分為3部分。
(1)中間件:由通用操作算子集和解析映射器組成。通用操作算子集由多個基礎操作算子表達式組成,算子表達式代表了數據操作的最細粒度,具有標準性、通用性、穩定性特點。例如算子表達式可以表示數據的增加操作,任何存儲系統都不可能缺少增加數據的操作,且該操作不會因為上層業務邏輯和場景的變化而變化。因此,整套操作算子表達式可以達到通用的效果。算子表達式中會帶有各種操作維度的參數,解析映射器會根據這些參數將算子表達式對數據的操作準確映射到目標算子上。即使上層業務或底層存儲工具動態增減,只要通過算子表達式中的參數配合解析映射器,即可實現相應的數據存儲操作。因此該模型具有通用性、用戶低感知性、高可擴展性和高容錯性等特點。
(2)操作算子實現集:由多個操作算子實現組成。操作算子表達式依賴于操作算子實現,而操作算子實現又依賴于底層異構數據庫提供的操作接口,完成數據與存儲工具之間的交互。操作算子實現集應提供對底層所有存儲工具的操作支持,通過算子實現數據的傳輸或相互組合,完成算子表達式功能。
(3)存儲介質:由多種異構數據庫和文件系統組成,可實現存儲介質的動態增減,能夠對農企畫像系統產生的多源、異構、海量數據進行有效存儲。
3 操作算子定義
由于農企畫像系統中異構數據復雜、業務場景多樣,導致數據操作類型多種多樣。本文從數據源特點與系統應用場景出發,提出一套具有高度通用性的操作算子表達式[20]。操作算子表達式的目的是制定一套標準、通用、穩定的數據操作規范。算子表達式格式如下:
算子表達式定義規則:operationType:returnValue→operationCondition;其中operationCondition=(data,specialCondition)。
operationType代表算子表達式操作類型,returnValue代表算子表達式操作結果,operationCondition代表算子表達式操作條件值,operationCondition由data和specialCondition組成,其中data代表操作數據,specialCondition代表具體的操作條件。用戶在使用算子表達式時,如果operationCondition包含的兩項參數有具體值則可作為操作條件傳入;若某項為空,直接采用置空處理即可。算子表達式中各項指標的值如表2-表5所示。
例如,對于網頁文本數據,若獲取某一時間段內某個網頁的文本數據,算子表達式可以定義為:select:collection
表2 operationType值及含義
表3 returnValue值及含義
表4 data值及含義
表5 specialCondition值及含義
算子表達式的操作請求最終是依靠算子實現集完成的。可以把算子表達式看作是任務策劃者,把算子實現集看作任務的實施者。算子實現集提供了多源異構數據最細粒度的操作實現,是整套存儲模型的中流砥柱。算子表達式和算子實現之間可以是一對多、一對一、多對一、多對多的邏輯關系。
為使存儲模型達到上下屏蔽、動態可擴展,在算子表達式和算子實現集之間引入解析映射器。解析映射器可將算子表達式的傳入參數進行解析,然后通過映射將請求轉交給對應的算子實現。即使上層算子表達式或下層算子實現發生變化,只要解析映射器始終保有一份最新的映射關系,即可完成數據存儲工作,同時也屏蔽了上下層的互相感知。三者關系如圖3所示。
圖3 通用存儲模型架構
以上3種組件協助工作,首先完成多源異構數據的存儲;其次做到上層業務與下層存儲互相屏蔽的解耦效果;最后使整個存儲模型具有通用化、標準化、穩定化、可擴展特點。
4 操作算子實現
本文以農企畫像系統中的特征值處理為例,對存儲模型實現過程進行描述。特征值的分析依賴多種數據源,其中包含網頁文本、企業報表、操作日志等,這些數據結構多樣,讀寫場景也各不相同,需要使用不同的存儲工具,例如不同類型的數據庫。如果不使用本文提出的存儲模型進行數據處理,則需要在業務代碼中嵌入不同數據庫的操作代碼,使得開發人員不能將精力完全集中于業務層面,需要兼顧數據存儲相關功能的代碼開發。使用本文存儲模型時,只需按照算子表達式的規范定義好算子表達式,傳入對應的查詢條件,即可得到多種查詢結果。整個處理流程分為調用存儲模型及數據處理兩部分。
業務層面調用存儲模型偽代碼如下:
Input:compantName公司名稱,startTime查詢起始時間,endTime查詢結束時間,webCrawlerName爬蟲名稱,reportName報表名稱
Output:combineData含有網頁文本,企業報表,操作日志的數據組合
Initialization:combineData, list
1:function dataSelect(webCrawlerName,reportName,compantName,startTime,endTime)
2:list
3:list
4:list
5:list
6:list
7:list
8:combineData.text ← select×collection
9:combineData.report ← select×collection
10:combineData.log ← select×collection
11:return combineData
12:end function
如上偽代碼表示業務邏輯層只需組織好操作所需的條件,按照操作規范對算子表達式進行調用即可得到操作結果。存儲模型內部在接收到用戶的調用請求后,將算子表達式進行拆分解析,按照解析條件調用映射器,得到對應的映射地址,然后調用算子完成目標地址的數據操作,流程如圖4所示。
解析映射器是用動態可配置方式實現對目標數據庫、目標表、目標字段的記錄和修改,確保算子表達式請求能準確對應到某個算子實現上,并且算子實現能夠準確操作對應地址的數據庫、表名以及字段。本文解析映射器實現主要通過幾張記錄關鍵維度信息的表,具體關聯關系如圖5所示。
存儲模型內部處理偽代碼如下(以操作日志查詢為例,無論數據類型數據結構如何變化,存儲模型內部的工作原理都是相同的):
Input:operationType操作類型,operationCondition操作算子條件
Output:combineData.log日志數據(可能為空)
Initialization:combineData
1:function select(operationType,operationCondition)
2:desTableId ← tableMapping(operationCondition.compantName)
3:desDatabase ← databaseMapping(desTableId)
4:combineData.log← databaseMapping(desTableId)
5:log← databaseMapping(desTableId)
6:if log.isEmpty(),goto step 7,else goto step 8
7:combineData.log ← text
8:combineData.log ← null
9:return combineData.log
10:end function
5 結語
本文以中國農業科學院信息所農企畫像系統為基礎,提出農企領域的通用存儲模型,將數據存儲工作從業務邏輯中拆分出來,實現模塊間的松耦合,增強系統的可迭代和可維護性。提出的操作算子表達式具有標準性、通用性、穩定性特點,可為該領域同類系統提供一種數據存儲的通用解決方案和操作規范;使用者只需按規范對算子表達式進行調用,即可實現特定業務場景下的數據存儲工作。算子表達式底層依賴算子實現集支持,算子實現集從農業領域的數據源和操作場景出發,完成對多源異構數據的各類型存儲操作。有了算子表達式和算子實現集的共同協作,整個存儲模型就可做到對上屏蔽底層數據源,對下屏蔽上層業務邏輯的效果,實現對異構數據的統一存儲、統一管理。進一步提出解析映射器概念,將解析映射器作為算子表達式與算子實現集溝通的橋梁,滿足用戶數據源的尋址映射、底層數據源的地址切換、存儲工具的動態擴增等需求;提升了通用存儲模型的靈活性、低感知度,增強了存儲模型的通用性。
本文研究還可延伸,未來可在通用存儲模型響應性能方面實現優化,加入多級緩存手段,同時對緩存命中率進一步優化,實現性能和數據訪問準確性方面的提升和突破。
參考文獻:
[1] H G, J W, Z W, et al. Modeling of user portrait through social media[C]. 2018 IEEE International Conference on Multimedia and Expo (ICME), 2018: 1-6.
[2] NIE J, HUANG L, CUI P, et al. Social media profiler: inferring your social media personality from visual attributes in portrait[M]. China: Springer Verlag, 2016.
[3] CHEN Z M, HU Z Y. User portrait study on UGC website[J]. Computer Systems & Applications,2017,26(1):24-30.
[4] 劉廣東. 基于“用戶畫像”的商品推送系統設計與實現[D]. 西安:西安電子科技大學, 2017.
[5] 王雪. 基于企業畫像的公示數據查詢系統設計與實現[D]. 大連:大連海事大學, 2017.
[6] 趙恒. “互聯網+稅務”:用大數據為企業“畫像”[N]. 中國稅務報,2015-08-28 (A2).
[7] KHAN F A,REHMAN M U,KHALID A,et al. An intelligent data service framework for heterogeneous data sources[J]. Journal of Grid Computing,2018(2): 1-13.
[8] KIM H S, RAVINDRA P, ANYANWU K. A semantics-aware storage framework for scalable processing of knowledge graphs on Hadoop[C]. Boston, MA:2017 IEEE International Conference on Big Data, 2017:193-202.
[9] 張銳,趙瑞鋒,王海柱,等. 基于統一模型的電網大數據存儲與分析服務平臺的實現[J]. 電子技術與軟件工程,2018(21): 153-154.
[10] 田野,袁博,李廷力. 物聯網海量異構數據存儲與共享策略研究[J]. 電子學報,2016, 44(2): 247-257.
[11] 譚振強,陳莘萌,馮舸. 基于關系數據庫的多維數據存儲模型[J]. 小型微型計算機系統, 2001, 22(7): 885-888.
[12] 李林. 基于hadoop的海量圖片存儲模型的分析和設計[D]. 杭州: 杭州電子科技大學, 2011.
[13] 劉基陽. 面向多源異構數據的數據集成中間件的設計與開發[D]. 成都: 電子科技大學, 2018.
[14] M C N, H? S W. Data storage adapter in big data platform[C]. 2015 8th International Conference on Database Theory and Application (DTA),2015:6-9.
[15] J R, S V. A study on storage mechanism for heterogeneous sensor data on big data paradigm[C]. 2017 International Conference on Electrical, Electronics, Communication, Computer, and Optimization Techniques (ICEECCOT),2017: 342-345.
[16] ALKHELAIWI A, DAN G. Smart city data storage optimization in the cloud[C]. 2018 IEEE Fourth International Conference on Big Data Computing Service and Applications,2018:153-160.
[17] N N,M N,M K. Application sensitive energy management framework for storage systems[J]. IEEE Transactions on Knowledge and Data Engineering,2015, 27(9): 2335-2348.
[18] JIANG L, XU L D, CAI H, et al. An iot-oriented data storage framework in cloud computing platform[J]. IEEE Transactions on Industrial Informatics, 2014, 10(2): 1443-1451.
[19] 王藝霖. 基于大數據技術的電信用戶畫像系統的實現與應用[D]. 北京:北京郵電大學, 2018.
[20] COWEN C C, GALLARDO-GUTIéRREZ E A. A new class of operators and a description of adjoints of composition operators[J]. Journal of Functional Analysis,2006, 238(2): 447-462.
(責任編輯:杜能鋼)