龍鳳+王凡+鮮鵬+唐堂



【摘 要】現(xiàn)有大數(shù)據(jù)集實(shí)時查詢和分頁展示的兩種方法存在時延大、適用場景有限等問題,為支撐4G用戶海量流量話單的查詢,構(gòu)建對應(yīng)于大數(shù)據(jù)表的統(tǒng)計(jì)信息索引小表,同時設(shè)計(jì)一套異步數(shù)據(jù)頁緩存裝置,實(shí)現(xiàn)對數(shù)據(jù)服務(wù)器查詢出的數(shù)據(jù)的緩存,供用戶對后續(xù)頁面的查詢使用,以提高查詢和展示效率。
【關(guān)鍵詞】HBASE 流量話單 分頁展示
中圖分類號:TN929 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-1010(2017)19-0024-05
Method of Real-time Inquiry and Pagination Display of 4G Traffic Bill Based on HBASE
LONG Feng, WANG Fan, XIAN Peng, TANG Tang
[Abstract] The two methods of existing big data set real-time inquiry and pagination display suffer from large delay and limited application scenario. In order to support the massive 4G user traffic bill inquiry, a small statistical information index table was constructed according to the big data table. A set of asynchronous data page buffer device was designed. Data buffer of data server inquiry output was realized. It can be provided to user to inquire the subsequent page. The efficiency of inquiry and display is enhanced.
[Key words]HBASE traffic bill pagination display
1 引言
隨著4G業(yè)務(wù)的快速發(fā)展,電信運(yùn)營商計(jì)費(fèi)系統(tǒng)中用戶的流量清單飛速增長,目前占到用戶清單總存儲量的70%以上,在查詢用戶月流量清單時,需要對超過10萬條的結(jié)果集進(jìn)行查詢及展示,用戶等待時間較長,滿意度低。因此本文接下來將介紹一種新的大量數(shù)據(jù)實(shí)時查詢及分頁展示的方法,提高查詢效率,提升用戶滿意度。
2 分頁查詢展示方法的現(xiàn)狀研究
目前常見的大數(shù)據(jù)實(shí)時查詢和分頁展示有兩種方法:
(1)方法一:客戶端發(fā)送請求到數(shù)據(jù)服務(wù)器,數(shù)據(jù)服務(wù)器將查詢結(jié)果返回給客戶端,客戶端根據(jù)獲取的數(shù)據(jù)集進(jìn)行處理,統(tǒng)計(jì)數(shù)據(jù)集的一些相關(guān)信息,然后在前臺界面分頁展示給用戶。該種方法易管理、易維護(hù),技術(shù)體系成熟,但是當(dāng)查詢的數(shù)據(jù)集過大時,超過10萬條記錄,服務(wù)端的查詢時間長,網(wǎng)絡(luò)數(shù)據(jù)傳輸量大,用戶等待時間長。
(2)方法二:客戶端在發(fā)送請求到數(shù)據(jù)服務(wù)器時,采用頁碼索引的方式,每次只發(fā)送需要查詢的頁碼給數(shù)據(jù)服務(wù)器,數(shù)據(jù)服務(wù)器根據(jù)特定算法,每次根據(jù)頁碼范圍進(jìn)行查詢,將查詢的結(jié)果集返回給客戶端。該種方法適用于只展示明細(xì)數(shù)據(jù)、不需要展示統(tǒng)計(jì)數(shù)據(jù)的場景。
3 統(tǒng)計(jì)信息索引表和異步數(shù)據(jù)緩存的技術(shù)
原理
本文介紹一種大數(shù)據(jù)實(shí)時查詢分頁展示的方法,通過建立統(tǒng)計(jì)信息索引表和異步數(shù)據(jù)頁緩存裝置方式解決現(xiàn)有的數(shù)據(jù)查詢與分頁展示方法存在的問題。
在數(shù)據(jù)查詢系統(tǒng)(本文以HBASE數(shù)據(jù)庫為例)中,構(gòu)建對應(yīng)于大數(shù)據(jù)表的統(tǒng)計(jì)信息索引小表,并通過相關(guān)技術(shù)保證統(tǒng)計(jì)索引小表與清單大表間的數(shù)據(jù)實(shí)時同步。同時設(shè)計(jì)一套異步數(shù)據(jù)頁緩存裝置,實(shí)現(xiàn)對數(shù)據(jù)服務(wù)器查詢出的結(jié)果集數(shù)據(jù)的緩存,供用戶對后續(xù)頁面查詢使用。從索引統(tǒng)計(jì)小表中查詢出統(tǒng)計(jì)信息,在清單查詢填充程序完成初始設(shè)定的展示頁碼緩存容器填充時,HBASE服務(wù)器端查詢應(yīng)用程序就可以對客戶端展示程序進(jìn)行結(jié)果響應(yīng),客戶端展示程序在收到返回的報(bào)文后,給用戶展現(xiàn)統(tǒng)計(jì)信息及經(jīng)過排序后的前幾頁清單數(shù)據(jù)。
同時,對完整結(jié)果集的查詢并行進(jìn)行,并不斷填充到空的頁碼緩存容器中。當(dāng)用戶需要檢索未展示的清單頁時,頁碼索引信息被發(fā)送到HBASE服務(wù)端查詢程序,HBASE服務(wù)端查詢程序通過算法分析其對應(yīng)的頁碼緩存容器是否已填完數(shù)據(jù),如完成則從相關(guān)頁碼緩存容器中取出數(shù)據(jù),對客戶端進(jìn)行響應(yīng),如未完成則等待頁碼容器被填充。由于采用了異步并行技術(shù),頁碼容器未填充的概率較低,即使出現(xiàn),其等待填充的時間也遠(yuǎn)遠(yuǎn)小于全量數(shù)據(jù)查詢的時間,故采用本方法后,大大改善了用戶在查詢大數(shù)據(jù)清單時的查詢展示時間,能提升用戶感知及滿意度,同時避免了全量查詢數(shù)據(jù)結(jié)果集的網(wǎng)絡(luò)傳輸。
4 統(tǒng)計(jì)信息索引表和異步數(shù)據(jù)緩存的技術(shù)
實(shí)現(xiàn)
下面以用戶GPRS海量清單實(shí)時查詢與分頁展示的設(shè)計(jì)為實(shí)例進(jìn)行說明。
4.1 邏輯結(jié)構(gòu)
本方法實(shí)現(xiàn)的邏輯與物理結(jié)構(gòu)如圖1所示:
步驟1:HBASE服務(wù)器端查詢程序收到客戶端展示程序的請求,根據(jù)查詢條件檢索索引統(tǒng)計(jì)小表,獲取用戶查詢結(jié)果集的統(tǒng)計(jì)信息,如GPRS清單的總條數(shù)、總費(fèi)用、總流量。
步驟2:HBASE服務(wù)器端查詢程序初始化異步數(shù)據(jù)緩沖池中的頁碼緩沖器鏈表,調(diào)用2個查詢填充程序?qū)η鍐螖?shù)據(jù)大表按HBASE的key-value方式進(jìn)行檢索,一個順序查、一個逆序查。
步驟3:查詢填充程序?qū)@得的查詢結(jié)果不斷填充到異步數(shù)據(jù)緩沖池中對應(yīng)的頁碼緩沖器鏈表上的頁碼緩沖容器中,一個順序填充、一個逆序填充。endprint
步驟4:HBASE服務(wù)器端查詢程序在從索引統(tǒng)計(jì)小表中獲取結(jié)果集統(tǒng)計(jì)信息且啟動了查詢填充程序后,監(jiān)控其對應(yīng)的頁緩沖鏈表上,前幾個頁緩沖容器是否被填滿(展示幾個頁可以通過配置文件配置)。
步驟5:當(dāng)HBASE服務(wù)器端查詢程序發(fā)現(xiàn)前幾個頁緩沖容器已經(jīng)被填滿后,HBASE服務(wù)器端查詢程序讀取相關(guān)頁緩沖容器中的數(shù)據(jù),結(jié)合前面獲得的結(jié)果集統(tǒng)計(jì)信息,生成XML返回報(bào)文對客戶端展示程序進(jìn)行響應(yīng),客戶端展示程序獲取到返回報(bào)文后,給用戶進(jìn)行初步展示。
步驟6、7:和HBASE存儲程序在對原始清單文件進(jìn)行解析存儲,在向HBASE數(shù)據(jù)庫清單大表存入清單數(shù)據(jù)時,同時存入統(tǒng)計(jì)項(xiàng)信息,兩個操作同時成功方認(rèn)為數(shù)據(jù)存儲成功。
步驟8:索引統(tǒng)計(jì)小表同步程序?qū)崿F(xiàn)清單大表與索引小表的信息同步,在帳期切換時,對索引小表進(jìn)行合并,合并后一個用戶號碼只對應(yīng)一條統(tǒng)計(jì)信息,加快了索引小表的檢索速度。
步驟9:頁碼緩沖容器內(nèi)存回收程序根據(jù)配置設(shè)定的緩沖失效時間,在失效時間到達(dá)時,清理頁碼緩沖容器鏈表,釋放相關(guān)的內(nèi)存。
4.2 HBASE數(shù)據(jù)庫設(shè)計(jì)
(1)用戶清單索引統(tǒng)計(jì)小表歷史月HBASE存儲格式設(shè)計(jì)
1)RowKey設(shè)計(jì)
MSISDN+日期+業(yè)務(wù)類型;
MSISDN:計(jì)費(fèi)號碼;
日期:處理時間字段,精確到天;
業(yè)務(wù)類型:兩位計(jì)費(fèi)業(yè)務(wù)類型。
2)Column Family設(shè)計(jì)
一個Column Family、3個column,分別為話單總條數(shù)、總流量和總金額。
(2)用戶清單索引統(tǒng)計(jì)小表當(dāng)前月HBASE存儲格式設(shè)計(jì)
1)RowKey設(shè)計(jì)
MSISDN+日期+業(yè)務(wù)類型;
MSISDN:計(jì)費(fèi)號碼;
日期:處理時間字段,精確到天;
業(yè)務(wù)類型:兩位計(jì)費(fèi)業(yè)務(wù)類型。
2)Column Family設(shè)計(jì)
一個Column Family、2個column,分別為流量和金額。
該類表存儲需要在前臺進(jìn)行展示的統(tǒng)計(jì)信息,存儲量很小,如用戶GPRS的總流量、總條數(shù)、總金額,對于歷史月的GPRS清單查詢,如果是比當(dāng)期帳期小一月,會在月初由后臺同步程序,即圖1的步驟8完成統(tǒng)計(jì)信息的初始化工作。
(3)用戶清單大表HBASE存儲格式設(shè)計(jì)
1)RowKey設(shè)計(jì)
MSISDN+日期+業(yè)務(wù)類型;
MSISDN:計(jì)費(fèi)號碼;
日期:處理時間字段,精確到天;
業(yè)務(wù)類型:兩位計(jì)費(fèi)業(yè)務(wù)類型。
2)Column Family設(shè)計(jì)
一個Column Family、多個column,單條話單整體存入column。
該表為用戶清單實(shí)際數(shù)據(jù)的存儲表,存儲海量的用戶清單相關(guān)信息,在進(jìn)行用戶清單查詢時,如遇到用戶清單量非常大時,由HBASE客戶端查詢程序調(diào)度的并發(fā)查詢子程序?qū)崿F(xiàn)將結(jié)果集異步緩存到數(shù)據(jù)緩存池中,如步驟3所示。
4.3 HBASE服務(wù)器端查詢程序設(shè)計(jì)
HBASE服務(wù)器端查詢程序根據(jù)前端展示程序要求構(gòu)造,響應(yīng)前段查詢請求時,與客戶端展示程序間通過XML報(bào)文進(jìn)行通信
HBASE服務(wù)器端查詢程序收到客戶端展示程序發(fā)送的清單查詢請求報(bào)文后,判斷是否為首次查詢,如為首次查詢則從統(tǒng)計(jì)信息索引小表中查詢對應(yīng)用戶的統(tǒng)計(jì)信息,然后初始化頁碼緩存容器鏈表,同時啟動2個查詢填充進(jìn)程對HBASE中的清單大表進(jìn)行并發(fā)查詢,并發(fā)程序從HBASE大表中查詢出數(shù)據(jù)后,將數(shù)據(jù)放入頁碼緩存容器鏈表中,HBASE服務(wù)器端程序在從索引統(tǒng)計(jì)小表中獲取了用戶的統(tǒng)計(jì)信息后,循環(huán)掃描頁碼緩存容器鏈表中的前n個容器是否已填滿(n的數(shù)量可以通過配置文件定義),如都已填滿,則產(chǎn)生XML報(bào)文進(jìn)行響應(yīng),其響應(yīng)報(bào)文見上述響應(yīng)報(bào)文體,此時所有結(jié)果集的頁碼緩存容器并未填滿,兩個查詢填充程序仍然在順序和逆序的兩個方向上填充頁碼緩存容器鏈表,但前臺展示程序已經(jīng)可以給用戶進(jìn)行展示了,大大提升了展示的效率。
當(dāng)用戶點(diǎn)擊頁碼進(jìn)行展示選擇時,展示端程序發(fā)送請求報(bào)文,報(bào)文中的beginpage和endpage不為空,此時HBASE服務(wù)器端程序知曉為非首次查詢,其到頁碼數(shù)據(jù)緩沖池中進(jìn)行查詢,通過傳入的頁碼范圍匹配到對應(yīng)的頁碼緩存容器,并檢查查詢填充進(jìn)程是否已將其所需的頁碼緩存容器填滿,如填滿則讀取相關(guān)數(shù)據(jù)生成XML報(bào)文進(jìn)行響應(yīng),如未填滿則繼續(xù)等待,直到其需要的頁碼緩沖器全部被填滿后,生成XML報(bào)文進(jìn)行響應(yīng)。由于用戶要求展示的內(nèi)容為全部結(jié)果集的片段,且這些片段的填充被2個并行服務(wù)器同時進(jìn)行,用戶的請求也是分多次進(jìn)行且是順序增長的,其時間間隔足以讓并行服務(wù)器將頁碼緩存容器鏈表填滿,故查詢效率大大提升,另外用戶很可能只瀏覽結(jié)果全集里的很少一部分關(guān)注的內(nèi)容,所以網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量也大大降低,上述處理流程結(jié)構(gòu)如圖2所示:
4.4 頁碼緩存容器結(jié)構(gòu)及查詢填充程序設(shè)計(jì)
頁碼緩存容器是一種內(nèi)存結(jié)構(gòu),所有的頁碼緩存容器串成一個雙向鏈表,其結(jié)構(gòu)如圖3所示:
頁緩存容器頭內(nèi)存結(jié)構(gòu)包括指向第一個頁碼緩存器的指針和指向最后一個頁碼緩存器的指針,正序查詢填充程序的填充進(jìn)度指針及倒序查詢填充程序的填充進(jìn)度指針(其中正序查詢填充程序的填充進(jìn)度指針初始指向第一個頁碼緩存容器,逆序查詢填充程序進(jìn)度指針初始指向最后一個頁碼緩存容器),兩個查詢填充進(jìn)程從鏈表的兩端對鏈表的頁碼緩存容器進(jìn)行數(shù)據(jù)填充,其處理流程如圖4所示:
4.5 頁碼緩存容器內(nèi)存回收程序設(shè)計(jì)
該程序根據(jù)緩存超時時間設(shè)定,回收頁碼緩存容器占用的內(nèi)存,其處理流程如圖5所示。endprint
4.6 HBASE存儲程序設(shè)計(jì)
HBASE存儲程序在進(jìn)行話單存儲時,同時向HBASE數(shù)據(jù)庫清單大表與索引統(tǒng)計(jì)小表進(jìn)行插入,類似關(guān)系數(shù)據(jù)庫中的表與索引的關(guān)系,在HBASE數(shù)據(jù)庫調(diào)用HBASE接口存儲全量清單數(shù)據(jù)進(jìn)清單大表中,在索引統(tǒng)計(jì)小表中根據(jù)字段過濾存入統(tǒng)計(jì)字段數(shù)據(jù),索引統(tǒng)計(jì)小表占全量清單數(shù)據(jù)的比重一般控制在5%以內(nèi),否則異步展示的效果將打折扣,本例中只有2個字段:流量和金額,其占全量清單數(shù)據(jù)比重不到1%。
4.7 索引統(tǒng)計(jì)小表信息同步程序
當(dāng)帳期切換時,索引統(tǒng)計(jì)小表信息同步程序?qū)ι显碌乃饕”磉M(jìn)行處理,實(shí)現(xiàn)每個用戶號碼只對應(yīng)一條統(tǒng)計(jì)信息,提升索引小表查詢效率。
5 結(jié)論
本文提供了一種大數(shù)據(jù)實(shí)時查詢分頁展示的方法,通過數(shù)據(jù)的異步處理技術(shù),使清單數(shù)據(jù)可以異步按用戶需要展示,而統(tǒng)計(jì)數(shù)據(jù)通過小表查詢同步展示,節(jié)約了查詢和展示時間,同時設(shè)計(jì)了頁數(shù)據(jù)緩存容器裝置,降低了數(shù)據(jù)服務(wù)器的訪問量,并提升了用戶查詢與分頁展示的速度,特別是在查詢分頁展示超過上百頁或上千頁的數(shù)據(jù)時,具備很高的應(yīng)用價值。該方法在某省移動公司的業(yè)務(wù)支撐系統(tǒng)HBASE用戶詳單數(shù)據(jù)庫中已進(jìn)行使用,降低了數(shù)據(jù)服務(wù)器的訪問負(fù)荷,提高了用戶的查詢效率。
參考文獻(xiàn):
[1] 楊志. 一種實(shí)時大數(shù)據(jù)查詢技術(shù)——對象分布式查詢[J]. 計(jì)算機(jī)與數(shù)字工程, 2015,43(10): 1851-1856.
[2] 涂新莉,劉波,林偉偉. 大數(shù)據(jù)研究綜述[J]. 計(jì)算機(jī)應(yīng)用研究, 2014,31(6): 1612-1616.
[3] 衛(wèi)長安. 大數(shù)據(jù)環(huán)境下數(shù)據(jù)的查詢優(yōu)化研究[J]. 長治學(xué)院學(xué)報(bào), 2015,32(5): 56-57.
[4] 蔡志剛,閻潔. 基于緩存框架的Web緩存研究[J]. 計(jì)算機(jī)教學(xué)與教育信息化, 2009,5(31): 8737-8739.
[5] 嚴(yán)霄鳳,張德馨. 大數(shù)據(jù)研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2013,23(4): 168-172.
[6] 萬虎,徐遠(yuǎn)超,孫鳳蕓,等. 面向大數(shù)據(jù)應(yīng)用的眾核處理器緩存結(jié)構(gòu)設(shè)計(jì)[J]. 計(jì)算機(jī)工程與科學(xué), 2015,37(1): 28-35.
[7] 陳潔,陳冬杰,黃幫明. 基于HBASE的大數(shù)據(jù)壓縮算法的研究[J]. 電腦知識與技術(shù), 2014,10(13): 3146-3147.
[8] 張雄彪. Hibernate數(shù)據(jù)緩存技術(shù)[J]. 湖北第二師范學(xué)院學(xué)報(bào), 2013,30(8): 69-70.
[9] 張輝,趙郁亮,徐江,等. 基于Oracle數(shù)據(jù)庫海量數(shù)據(jù)的查詢優(yōu)化研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2012,22(2): 165-167.
[10] 王珊,王會舉,覃雄派,等. 架構(gòu)大數(shù)據(jù):挑戰(zhàn)、現(xiàn)狀與展望[J]. 計(jì)算機(jī)學(xué)報(bào), 2011,34(10): 1741-1752.endprint