基于HBase的海量交易數(shù)據(jù)檢索及系統(tǒng)的制作方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及檢索技術(shù),更為具體地,涉及基于HBase的海量交易數(shù)據(jù)檢索技術(shù)?!?br>背景技術(shù):
】[0002]在銀行卡組織的日常運(yùn)營中,會存在一些交易上的問題,需要以秒級的速度檢索出對應(yīng)的交易報(bào)文信息,以便分析排查問題所在?!?br/>發(fā)明內(nèi)容】[0003]有鑒于此,本發(fā)明提供基于HBase的海量交易數(shù)據(jù)檢索方法。該方法包括a.接收用戶通過查詢界面輸入的查詢請求;b.將所接收的查詢請求傳送給HBase主節(jié)點(diǎn);c.所述HBase主節(jié)點(diǎn)根據(jù)查詢請求中的開始鍵與結(jié)束鍵所表征的范圍,將所述查詢請求發(fā)送到與該范圍對應(yīng)的區(qū)域的區(qū)域服務(wù)器;d.由該服務(wù)器基于該查詢請求在所述交易數(shù)據(jù)中完成查詢。[0004]所述的基于HBase的海量交易數(shù)據(jù)檢索方法,示例地,與所述區(qū)域的構(gòu)建相關(guān)的行鍵按照預(yù)定格式設(shè)置,其中所述行鍵的兩個(gè)最高字節(jié)是表示交易日期的日期域,且所述交易日期是對世界標(biāo)準(zhǔn)時(shí)間UTC取31模后的值。[0005]所述的基于HBase的海量交易數(shù)據(jù)檢索方法,示例地,所述行鍵中的條件域緊跟在表示小時(shí)的小時(shí)域之后,而所述小時(shí)域緊跟在所述日期域的后面。[0006]所述的基于HBase的海量交易數(shù)據(jù)檢索方法,示例地,還包括建立次級索引表,用于記錄每筆交易報(bào)文的索引值與所述行鍵的映射關(guān)系,該映射關(guān)系是一一對應(yīng)的關(guān)系,所述步驟d包括:dl.由該服務(wù)器基于該查詢請求在所述次級索引表中基于每筆交易報(bào)文的索引值與所述行鍵的映射關(guān)系獲得待查詢數(shù)據(jù)在所述區(qū)域中的行鍵;d2.基于該行鍵,在所述交易數(shù)據(jù)中完成查詢。[0007]本發(fā)明還提供一種基于HBase的海量交易數(shù)據(jù)檢索系統(tǒng),所述系統(tǒng)包括:查詢界面,用于用戶輸入查詢請求;接收模塊,其設(shè)置于HBase主節(jié)點(diǎn),用于接收用戶輸入的查詢請求;區(qū)域確定模塊,其設(shè)置于所述HBase主節(jié)點(diǎn),用于根據(jù)查詢請求中的開始鍵與結(jié)束鍵所表征的范圍,將所述查詢請求發(fā)送到與該范圍對應(yīng)的區(qū)域的區(qū)域服務(wù)器;多個(gè)檢索模塊,分別設(shè)置在各區(qū)域服務(wù)器中,用于基于所述區(qū)域服務(wù)器所接收的查詢請求在交易數(shù)據(jù)中完成查詢。[0008]基于HBase的海量交易數(shù)據(jù)檢索系統(tǒng),示例地,所述系統(tǒng)還包括設(shè)置模塊,其用于將決定所述區(qū)域大小的行鍵按照預(yù)定格式設(shè)置,其中所述行鍵的兩個(gè)最高位是表示交易日期的日期域,且所述交易日期是對世界標(biāo)準(zhǔn)時(shí)間UTC取31模后的值,所述行鍵中的條件域緊跟在表示小時(shí)的小時(shí)域之后,而所述小時(shí)域緊跟在所述日期域的后面。[0009]基于HBase的海量交易數(shù)據(jù)檢索系統(tǒng),示例地,還包括索引表建立單元,其用于建立次級索引表,用于記錄每筆交易報(bào)文的索引值與所述行鍵的映射關(guān)系,該映射關(guān)系是一一對應(yīng)的關(guān)系,所述多個(gè)檢索模塊設(shè)置成由該服務(wù)器基于該查詢請求在所述次級索引表中基于每筆交易報(bào)文的索引值與所述行鍵的映射關(guān)系獲得待查詢數(shù)據(jù)在所述區(qū)域中的行鍵,以及基于該行鍵,在所述交易數(shù)據(jù)中完成查詢?!靖綀D說明】[0010]圖1是根據(jù)本發(fā)明示例的基于HBase的海量交易數(shù)據(jù)檢索方法的流程圖。[0011]圖2是根據(jù)本發(fā)明示例的HBase的集群環(huán)境示意圖。[0012]圖3示出了文件、HBase次級索引表以及HBase報(bào)文日志表之間的關(guān)系。[0013]圖4是根據(jù)本發(fā)明示例的基于HBase的海量交易數(shù)據(jù)檢索系統(tǒng)的結(jié)構(gòu)示意圖?!揪唧w實(shí)施方式】[0014]現(xiàn)在參照附圖描述本發(fā)明的示意性示例,相同的附圖標(biāo)號表示相同的元件。下文描述的各實(shí)施例有助于本領(lǐng)域技術(shù)人員透徹理解本發(fā)明,且意在示例而非限制。除非另有限定,文中使用的術(shù)語(包括科學(xué)、技術(shù)和行業(yè)術(shù)語)具有與本發(fā)明所屬領(lǐng)域的技術(shù)人員普遍理解的含義相同的含義。[0015]HBase全稱為HadoopDatabase,是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術(shù)可在廉價(jià)PCServer上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。HBase技術(shù)來源于FayChang所撰寫的Google論文"Bigtable:-個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲系統(tǒng)"。有關(guān)HBase的基本介紹可在許多資料上獲取,例如可參見http://baike.baidu.com/link?url=ZZH4mj7uoS2hd77AxZDszb0Tfflcqt5u0_cmF0oraNCPjgls-IPAaGxlDyDtca0pXbfDUfhPx45zxQBpl0_J54q上的介紹。[0016]圖1是根據(jù)本發(fā)明示例的基于HBase的海量交易數(shù)據(jù)檢索方法的流程圖。在步驟10,接收用戶通過查詢界面輸入的查詢請求。將該接收的查詢請求傳送給HBase的主節(jié)點(diǎn),見步驟12。該HBase主節(jié)點(diǎn)根據(jù)查詢請求中的開始鍵(即startkey)與結(jié)束鍵(即endkey)所表征的范圍,將所述查詢請求發(fā)送到與該范圍對應(yīng)的區(qū)域(region)的區(qū)域服務(wù)器(regionserver),見步驟14。區(qū)域包含多個(gè)區(qū)域,在本文下面示意而非限制性的示例中,包含30個(gè)區(qū)域。一個(gè)或一個(gè)以上的區(qū)域由一個(gè)區(qū)域服務(wù)器管理。例如一個(gè)區(qū)域服務(wù)器管理兩個(gè)區(qū)域,則30個(gè)區(qū)域的話,就有15個(gè)區(qū)域服務(wù)器。由該服務(wù)器基于該查詢請求在所述交易數(shù)據(jù)中完成查詢,見步驟16。更進(jìn)一步,將所查詢的交易數(shù)據(jù)傳送給用戶。[0017]圖2是根據(jù)本發(fā)明示例的HBase的集群環(huán)境示意圖。如圖所示,用戶通過查詢界面20輸入查詢請求。該查詢請求傳送到HBase主節(jié)點(diǎn)22。如圖1的步驟14所描述的那樣,HBase主節(jié)點(diǎn)22根據(jù)查詢請求中的開始鍵與結(jié)束鍵所表征的范圍,將所述查詢請求發(fā)送到與該范圍對應(yīng)的區(qū)域的區(qū)域服務(wù)器。例如在本示例中,開始鍵與結(jié)束鍵所表征的范圍,也就是表征的要查詢的報(bào)文存儲的區(qū)間是在第七區(qū)域中,則HBase主節(jié)點(diǎn)22將查詢請求發(fā)送給管理該第七區(qū)域的區(qū)域服務(wù)器242。區(qū)域服務(wù)器在接收到該查詢請求后,即在第七區(qū)域中存儲的交易報(bào)文中查找請求的數(shù)據(jù),并最終將所查找到的數(shù)據(jù)返回給用戶。[0018]根據(jù)本發(fā)明的示例,與區(qū)域構(gòu)建相關(guān)的行鍵按照預(yù)定格式設(shè)定,在此與區(qū)域的構(gòu)建相關(guān)指的是行鍵(rowkey)按照HBase的原理據(jù)決定了區(qū)域的大小、數(shù)據(jù)寫入速度等。其中,行鍵的兩個(gè)最高字節(jié)是表示交易日期的日期域,其中,寫在該日期域的交易日期是對世界標(biāo)準(zhǔn)時(shí)間UTC取31模后的值。與常規(guī)的日期占據(jù)8個(gè)字節(jié)的方式相比,根據(jù)本發(fā)明的日期域顯然節(jié)省了存儲空間。行鍵中的條件域緊跟在表示小時(shí)的小時(shí)域之后,而所述小時(shí)域緊跟在所述日期域的后面。表1表示了根據(jù)本發(fā)明示例的行鍵的設(shè)置格式:表1其中,F(xiàn)100表示報(bào)文接收機(jī)構(gòu),F(xiàn)33表示報(bào)文發(fā)送機(jī)構(gòu),F(xiàn)11表示系統(tǒng)跟蹤號。[0019]由于按照如上所述的方式設(shè)置行鍵,將日期位從常規(guī)的8位(yyyy_dd)縮短到2位。此外,將最常用的查詢條件F100域設(shè)置在表示小時(shí)的小時(shí)域之后,使得系統(tǒng)不需要額外作業(yè)就能按照日期和F100域?qū)?bào)文進(jìn)行快速檢索。根據(jù)region的規(guī)劃,每天350G數(shù)據(jù),每個(gè)Region是4G,則該有29-30個(gè)region。根據(jù)rowkey的分布原理,當(dāng)對一天上萬個(gè)報(bào)文進(jìn)行分布式解析入庫時(shí),每個(gè)報(bào)文所在的小時(shí)是隨機(jī)的,因此可從多個(gè)區(qū)域中隨機(jī)選取區(qū)域以將報(bào)文寫入,從而達(dá)到理想的寫入速度。[0020]根據(jù)本發(fā)明的示例,還設(shè)置了次級索引表,用于記錄每筆交易報(bào)文的索引值與所述行鍵的映射關(guān)系,該映射關(guān)系是一一對應(yīng)的關(guān)系。次級索引表例如按照發(fā)送方F33為查詢方式建立,該次級索引表記錄的每筆報(bào)文的索引值,亦即,索引表行鍵如表2所示:表2其中,交易日期同表1中的交易日期一樣,是UTC日期對31取模后的值。[0021]報(bào)文日志表的行鍵如前文表1所示。根據(jù)本發(fā)明的示例,該次級索引表的建立是讀取文本形式的原始數(shù)據(jù),通過MAP/Reduce過程生成索引數(shù)據(jù),再將該索引數(shù)據(jù)寫入到索引表中。[0022]圖3示出了文件、HBase次級索引表以及HBase報(bào)文日志表之間的關(guān)系。如圖3中,從文件1、文件2、…、文件η讀取文本形式的原始數(shù)據(jù),通過MAP/Reduce產(chǎn)生索引數(shù)據(jù),并將該索引數(shù)據(jù)寫人到HBase次級索引表30。在該次級索引表30中,所建立的針對每筆報(bào)文的索引值與HBase報(bào)文日志表32中的行鍵是對應(yīng)的。圖3中所不的HBase報(bào)文日志表32對應(yīng)于圖2中所示的多個(gè)區(qū)域。由于受HBase固有屬性的影響,通過Rowkey直接進(jìn)行檢索時(shí)所能給出的檢索條件是有限的,次級索引表的引入,則可以多索引條件進(jìn)行擴(kuò)展,甚至可支持全文檢索。[0023]在引入次級索引表的情況下,圖1所示意的步驟16進(jìn)一步細(xì)化為由該服務(wù)器基于該查詢請求在所述次級索引表中基于每筆交易報(bào)文的索引值與所述行鍵的映射關(guān)系獲得待查詢數(shù)據(jù)在所述區(qū)域中的行鍵以及基于該行鍵,在所述當(dāng)前第1頁1 2