韓?;ǎ跣V,劉佩賢,趙 燕
(1. 北京化工大學 北方學院,廊坊 065201;2. 北京中交通信科技有限公司,北京 100011)
海量數據批量寫庫方法的研究與實現
韓?;?,王孝廣2,劉佩賢1,趙 燕1
(1. 北京化工大學 北方學院,廊坊 065201;2. 北京中交通信科技有限公司,北京 100011)
目前,大多數應用系統的并發數據量較少,對數據庫寫庫性能要求不高,即在小數據量并發的情況下,數據庫以接收一條,分析一條,寫入一條的方式入庫,基本可以滿足系統應用要求。但在大數據量并發情況下,由于數據庫寫庫瓶頸的存在,寫庫效率大大降低。本方法將應用系統中的應用數據進行預處理和數據寫入數據庫的過程并行,即數據經過預處理后存入緩存,當緩存中的數據達到預設數據量時,將該數據一次性寫入數據庫,并將該數據從緩存中刪除。此方法的數據處理速度和寫入速度較快,尤其適用于海量數據并發的應用系統。
該方案設計的批量寫庫方法采用已成熟的TCP/IP協議及數據庫存儲方面的知識,主要服務于應用系統相關運行模塊,為應用系統產生的海量數據提供獨立的數據預處理、寫庫服務的功能。
主要由TCP通訊組件、協議分析組件、寫庫管理組件、寫庫組件等模塊構成。對外主要通過入庫接口的收取應用數據,通過批量寫庫組件將數據實時入庫。
本方法降低了應用系統與數據庫之間的耦合關系;同時也為入庫的操作提供數據緩沖,通過緩沖數據結構降低對數據庫的海量沖擊,從而提升數據庫的整體運行性能。

圖1 系統架構
該組件接采用TCP協議接收來自應用系統的不同協議數據包,即將拆分為很多IP數據包的車輛GPS定位信息,按照封包序號將IP數據包重新順序排列,并一層層剝離PDU的包頭數據,提取出里面的應用數據,重構定位數據。然后采用哈希模式來實現不同包的動態分配,且哈希函數采用數字分析法來構建,即當分析一組數據,平臺在較短時間內接收到的車輛GPS定位數據時,平臺接收的定位點中的年、月、日、小時的這幾位數據大體相同,這樣的話,出現沖突的幾率就會很大。但是年、月、日、小時的后幾位表示分鐘和秒的數據差別較大,如果用后面的數據來構成散列地址,則沖突的幾率就會降低。因此采用數字分析法找出數字的規律,盡可能利用這些數據來構造沖突幾率較低的散列地址。

圖2 TCP通訊組件結構
本組件主要與應用系統進行數據對接,主要實現應用程序與本方法之間按照自定協議的方式,實現數據的正常通信。
本組件主要完成對接收的不同協議數據包根據不同的業務類型調用不同的業務類完成業務數據包的拆解。主要算法如下:依據字節流模式,通過字節流的解析,完成對數據包的解析。
主要分析流程過程如圖3所示。

圖3 協議分析組件數據分析流程
從消息流中可以看出,收到消息包后,進行消息包的header進行解析,然后,根據解析的情況進行分解業務細節。
本組件主要完成將分解后的數據包,調用不同的存儲過程,實現數據的入庫動作。本組件主要通過獨立的線程,完成數據的獨立入庫過程,每個寫庫任務對象(CWriteDataTask)對應一個獨立的會話對象。寫庫任務對象將解析后的數據完成數據的批量入庫。
批量寫庫類定義如下:

本組件算法主要實現將數據包寫入緩沖,當緩沖滿了后,則進行入庫,入庫的過程就是調用在數據庫中已經建立好的數據庫存儲過程對象實現。主要過程如下:組件收到數據后,將數據依次提交到隊列中,不同的業務字段提交到不同的字段隊列中,然后針對不同的字段隊列調用不同的業務存儲過程,實現數據的批量入庫。

圖4 批量寫庫組件的寫庫流程
系統測試采用20000個并發業務數據包,每個協議包由30個字節組成,按照自定義協議格式,往數據庫入庫接口同時發送。
方案一:insert循環插入
采用foreach循環函數,將20000條數據經解包后,采用insert into的方式,循環插入數據庫中,共耗時00:00:29.7336000。
方案二:批量入庫方式
采用本方案,將20000條數據,解包、處理寫入緩存后,調用業務存儲過程,批量插入數據庫中,共耗時00:00:00.3276000。
根據上述比對結果,批量寫庫的方案與循環插入的方式相比,寫庫時間大大縮短、寫庫效率明顯提高。
本文所討論的方法是項目實施過程中總結出的一種有效的大批數據錄入的方法。我們在公司GPS車輛監管項目(系統設計的并發GPS數據為15000條/S)中利用此方法成功實施了大批量GPS數據的入庫。實踐證明在大批量數據錄入時,采用本文提出批量數據插入的方法,可以大大提高數據錄入效率,提高系統運行效率。
[1]湯庸,毛承潔.信息系統批量數據錄入的工程方法[J].微機發展,1996,6.
[2]湯庸.教據庫應用系統開發指南[M].人民郵電出版社,1996.
[3]A.Segev,J.L.Zhao. Data management for large ruleSystems.In:Proceed-ings of 17th International Conference on Very Large Data Bases.1991.
[4]Simson W.The Point-to-Point Protocol(PPP),RFC1661,July 1994.
The research of batch writing massive amounts of data and implementation of database method
HAN Hai-hua1, WANG Xiao-guang2, LIU Pei-xian1, ZHAO Yan1
本文研究了一種將海量數據寫入數據庫的方法,提出了一種數據處理及數據入庫并行的方法,解決了海量數據寫庫效率較低的問題,提高了應用系統中海量數據的數據處理速度和寫庫速度,大幅度提高了系統的運行效率。
海量數據;寫庫;批量存儲
韓?;ǎ?982 -),女,山東人,助教,碩士研究生,研究方向為智能控制。
TP391
A
1009-0134(2011)5(上)-0029-03
10.3969/j.issn.1009-0134.2011.5(上).11
2010-11-01