【摘要】針對目前煤礦業務系統中,由于各種安全生產的相關數據過于龐大,導致在數據前端展示時導致系統的響應時間和性能以及用戶的體驗度較差的問題,本文設計了一種基于增量歸集的大數據量的數據查詢方法。該方法通過定期把數據增量歸集到中間結果表中的方式,提高了大數據量查詢的性能。應用結果表明,該系統的設計方式可提高數據處理速度,降低數據存儲空間,為查詢結果的展示提供了堅實的數據基礎支撐。
【關鍵詞】增量歸集;數據查詢;大數據;定期;中間結果
引言
目前,在煤礦業務系統中,業務數據量非常龐大[1];每次進行業務數據查詢或統計時,持續時間比較長,消耗資源比較大。傳統的查詢和統計方式,是直接從業務數據表中進行處理,不僅影響應用系統的業務處理性能,而且查詢和統計性能非常差。
為了提升查詢或統計性能,采用定期將查詢結果定期的增量歸集到中間數據表的方式,在歸集查詢結果時,由于數據量比較大,為提升歸集效率,不能采用全量歸集的方式,而采用增量歸集的方式來處理。這種方式,每次進行查詢或統計時,只需要從中間數據表中進行展現即可,而不需要在查詢過程中進行即時計算和歸集,大大減少了查詢的時間,降低了資源消耗,提高了查詢效率。
1.系統設計
本文提出一種基于增量歸集的大數據量的數據查詢方法,通過定期把數據增量歸集到中間結果表中的方式,提高大數據量查詢的性能[2]。本文把基于單個數據表的增量結構稱為增量單元(Increment Unit);把增量數據的捕獲規則稱為增量包(Increment Package)。一個增量包由一個或者多個增量單元組成[3]。
一種基于增量歸集的大數據量的數據查詢方法,其特征在于包括以下四個步驟:A:增量規則設計;B:設置增量捕獲調度執行計劃;C:執行增量數據定期歸集;D:執行數據統計結果查詢。
在步驟A中,為實現定義增量數據捕獲規則,它包括以下內容:
(1)定義增量單元
進一步說明,增量單元的結構包括增量單元對應的數據表、增量的內容字段、數據表的主鍵字段、數據表的時間戳字段,其中數據表的時間戳字段只用于時間戳模式的增量數據捕獲模式[4]。
(2)定義增量包
進一步說明,增量包中需要指定增量數據的捕獲模式,本發明中提供的捕獲模式包括快照表模式、時間戳模式、觸發器模式、數據庫日志模式。
(3)啟用增量包并做增量初始準備
進一步說明,在做增量初始過程中,要根據增量單元的結構,創建增量數據表,增量數據表的結構除了包括增量單元對應的內容字段和主鍵字段,還包括時時間戳字段。
(4)增量訂閱
進一步說明,在訂閱處理中要指定訂閱的用途,訂閱的增量包,訂閱同步過程中需要生成的存儲過程的名稱及參數。
進一步說明,一個增量包可以由一個或多個增量單元組成,一個增量包可被多次訂閱;增量單元、增量包、增量包的實體結構關系所示。
在步驟B中,定義調度計劃,設置調度自動增量歸集的任務,并設置任務執行的頻率和時間周期以及相關的執行策略[5]。
在步驟C中,定期執行增量數據歸集,它包括以下的步驟:
根據步驟A中定義的增量捕獲規則捕獲增量數據;
把增量數據加載到步驟A(3)中定義的增量數據表中;
根據步驟A中增量訂閱的信息,生成增量數據同步到查詢中間結果表中的存儲過程;
執行步驟(3)中創建的存儲過程,創建查詢中間結果表,并把步驟(1)中捕獲的增量數據同步到查詢中間結果表中。
在步驟D中,輸入查詢統計的條件,從步驟C(4)中創建中查詢中間結果表中分頁取出數據進行展現。
2.系統優點
與現有技術相比,本文的優點是:
A.可以把復雜的數據統計查詢過程包分解成兩個過程,統計計算歸集和實時查詢;
B.把費時的統計計算歸集過程放在后臺運行,并且歸集過程只歸集增量數據;
C.大大提高了大數據量統計查詢的執行效率。
本系統的設計中心思路是把復雜數據的統計查詢過程分解為統計計算歸集和實時查詢;統計計算歸集過程通過計劃任務調度在后臺執行,并且中間數據結果的歸集進行增量歸集,實時查詢只實現從中間結果表中分頁取出數據進行展現。
3.實際應用
應用系統A中對業務BizA的數據進行統計查詢。實例特征:BizA的結構比較復雜,包括A_MainTable、A_SubTable、A_DetailTable三個表,A_MainTable是主表,A_SubTable是1級從表,A_DetailTable是2級從表;統計查詢的數據量比較大。
BizA的數據結構如下:
BizA的主表:A_MainTable
字段:A_MainColID、A_MainCol1、A_MainCol2、 A_MainCol3、 A_MainCol4
數據類型:String、String、String、String、String
說明:A_MainColID為主鍵
BizA的1級從表:A_SubTable
字段:A_SubColID、A_SubCol1、A_SubCol2、 A_SubCol3、 A_SubCol4
數據類型:String、String、String、String、String
說明:A_SubColID為主鍵
BizA的2級從表:A_DetailTable
字段:A_DetailCol1、A_DetailCol2、A_DetailCol2、 A_DetailCol3、 A_DetailCol4
數據類型:String、String、String、String、String
說明:A_DetailColID為主鍵
該實例分解為以下四個步驟:
a.設計增量捕獲規則;b.設置增量歸集調度計劃;c.執行增量數據歸集d.執行數據統計結果查詢。
(1)定義增量單元,由于BizA包括三個表,應該定義三個增量單元。
A_MainTable的增量單元,如下所示:
屬性項:增量編號、增量名稱、數據表、主鍵字段、內容字段
屬性值:Inc_A_MainTable、Inc_A_MainTable、A_MainTable、A_MainColID、(A_MainCol1, A_MainCol2, A_MainCol3, A_MainCol4)
A_SubTable的增量單元,如下所示:
屬性項:增量編號、增量名稱、數據表、主鍵字段
屬性值:Inc_A_SubTable、Inc_A_SubTable、A_SubTable、A_SubColID
A_DetailTable的增量單元,如下所示:
屬性項:增量編號、增量名稱、數據表、主鍵字段、內容字段
屬性值:Inc_A_SubTable、Inc_A_SubTable、A_SubTable、A_SubColID、(A_DetailCol1, A_DetailCol2, A_DetailCol3, A_DetailCol4)
(2)定義增量包,增量包結構屬性如下
屬性項:增量包編號、增量名包稱、捕獲模式、增量單元
屬性值:IncPkg_BizA、IncPkg_BizA、數據庫日志、(Inc_A_MainTable, Inc_A_SubTable, Inc_A_DetailTable)
(3)啟用并初始增量,該過程中分別創建3個增量數據表(Inc_A_MainTable, Inc_A_SubTable, Inc_A_DetailTable),用來存儲捕獲的增量數據
(4)訂閱增量,訂閱信息如下:
屬性項:訂閱用途、增量包、同步歸集存儲過程、存儲過程參數字段
屬性值:BizA的數據統計查詢、IncPkg_BizA、SP_BizA_Synch、A_MainCol1,A_MainCol2
在步驟B中,設置計劃調度信息,設置內容如下
屬性項:計劃類別、周期類別、執行開始時間
屬性值:周期計劃、每天執行、2012年2月21日 22:00:00
在步驟C中,執行增量數據歸集,參照附圖6,包括以下內容:
a.通過數據庫日志表,抽取符合條件的增量數據;
b.把增量數據分別加載到增量數據表(Inc_A_MainTable, Inc_A_SubTable, Inc_A_DetailTable)中;
c.生成存儲過程SP_BizA_Synch;
d.執行存儲過程SP_BizA_Synch,(如果不存在)創建查詢中間結果表(TempResult_BizA),并把增量數據表中的數據同步到查詢中間結果表中。
在步驟D中,采用分頁取數邏輯從查詢中間結果表(TempResult_BizA)中取出查詢結果進行展現。
4.結論
本文通過提供一種基于增量歸集的大數據量的數據查詢方法,進行了詳細的描述和實際應用,該方法主要針對大量數據進行查詢統計,可以提高大數據量的查詢統計的性能和效率,在業務數據量非常龐大的系統中具有較高的應用價值。
參考文獻
[1]劉秋香,張永勝.對XPath,XLink和XPointer的分析研究[J].微機發展,2005(10):19-22.
[2]周兆濱.XSLT應用于數據編程的研究[J].制造業自動化,2003(12):93-95.
[3]劉麗靜.綜合信息管理系統在煤炭生產集團中的應用[J].工礦自動化,2011(10).
[4]戴磊,牛光東,等.煤炭企業信息化管理系統的研究[J].工礦自動化,2009(3):75-78.
[5]杜志強,董方.基于XML的網絡課程資源元數據共享研究[J].天中學刊,2011(02).
作者簡介:朱濤(1985—),男,山西夏縣人,工程師,主要從事煤礦監控系統的技術支持及工程管理工作。