本發(fā)明涉及數(shù)據(jù)庫
技術(shù)領(lǐng)域:
:,具體來說,涉及一種基于內(nèi)存數(shù)據(jù)庫的HBase二級索引構(gòu)建與查詢的裝置及方法。
背景技術(shù):
::隨著信息時代的迅速發(fā)展,互聯(lián)網(wǎng)應(yīng)用的不斷深入,使得非結(jié)構(gòu)化的數(shù)據(jù)規(guī)模日益龐大。HBase(HadoopDatabase,Hadoop數(shù)據(jù)庫)是參照GoogleBigtable實現(xiàn)的開源NoSQL數(shù)據(jù)庫,它具有強一致性、高性能隨機寫、面向字段且可動態(tài)修改、可水平伸縮的特性。HBase是基于Rowkey(行鍵)的有序存儲,對Rowkey支持毫秒級的快速檢索。然而,隨著HBase的應(yīng)用不斷深入,單一的通過Rowkey檢索數(shù)據(jù)的方式,不再滿足應(yīng)用的需求,在實際應(yīng)用中,需要根據(jù)指定字段,或者幾個字段進行組合檢索,這就提出了建立HBase二級索引的需求。由于HBase基于行健有序存儲,在查詢時使用行健十分高效,然后想要實現(xiàn)關(guān)系型數(shù)據(jù)庫那樣可以隨意組合的多條件查詢、查詢總記錄數(shù)、分頁等就比較麻煩了。想要實現(xiàn)這樣的功能,一般采用以下兩種方法和裝置:1.第一種方法和裝置是使用HBase提供的過濾器。通過這個過濾器可以在HBase中的數(shù)據(jù)的多個維度(行,字段,數(shù)據(jù)版本)上進行對數(shù)據(jù)的篩選操作。該方法和裝置使用起來很方便,但是局限性也很大,HBase的過濾器是直接掃記錄的,如果數(shù)據(jù)范圍很大,會導致查詢速度很慢;2.第二種方法和裝置是通過構(gòu)建二級索引,查詢符合條件的Rowkey,然后再查詢HBase。該方法和裝置適用范圍就比較廣泛,目前的HBase二級索引構(gòu)建方案主要有以下兩種方案:1)第一種方案是將索引數(shù)據(jù)單獨存儲為一張表,通過HBase協(xié)處理器生成并訪問索引數(shù)據(jù);2)第二種方案是將索引數(shù)據(jù)與源數(shù)據(jù)存儲在相同的Region(分區(qū))里,索引數(shù)據(jù)定義為一個單獨的字段族,也是利用協(xié)處理器來生成并訪問索引數(shù)據(jù)。對于第一種方案,源數(shù)據(jù)表與索引表的數(shù)據(jù)一致性很難保證,訪問兩張不同的表也會增加IO開銷和遠程調(diào)用的次數(shù)。對于第二種方案,單表的數(shù)據(jù)容量會急劇增加,對同一Region里的多個字段族進行拆分或合并等操作時可能會造成數(shù)據(jù)丟失或不一致。針對相關(guān)技術(shù)中的問題,目前尚未提出有效的解決方案。技術(shù)實現(xiàn)要素:針對相關(guān)技術(shù)中的上述技術(shù)問題,本發(fā)明提出一種基于內(nèi)存數(shù)據(jù)庫的HBase二級索引構(gòu)建與查詢的裝置及方法,能夠?qū)崿F(xiàn)多級查詢的二級索引,索引字段的靈活配置,二級索引快速插入和存儲。為實現(xiàn)上述技術(shù)目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:一種基于內(nèi)存數(shù)據(jù)庫的HBase二級索引構(gòu)建與查詢的裝置,包括:客戶端,其用于發(fā)出二級索引規(guī)則創(chuàng)建請求、二級索引規(guī)則刪除請求、數(shù)據(jù)更新請求和數(shù)據(jù)查詢請求;數(shù)據(jù)處理模塊,其接收客戶端發(fā)送的請求,用于對客戶端發(fā)出的請求進行分別處理,進行數(shù)據(jù)的更新、查詢和刪除;二級索引模塊,對客戶端發(fā)出的請求進行二級索引的更新、查詢和刪除。進一步的,所述數(shù)據(jù)處理模塊主要是對HBase中的數(shù)據(jù)進行處理。進一步的,所述數(shù)據(jù)處理模塊包括:客戶端接口:用于接收客戶端發(fā)送的各種數(shù)據(jù)請求,將對數(shù)據(jù)的請求轉(zhuǎn)移到數(shù)據(jù)請求處理組件,對索引規(guī)則的請求轉(zhuǎn)移到索引規(guī)則組件,接收相應(yīng)的查詢結(jié)果返回到客戶端;數(shù)據(jù)請求處理組件:用于接收客戶端接口的數(shù)據(jù)處理請求,在數(shù)據(jù)庫存儲組件中更新和刪除數(shù)據(jù)庫的數(shù)據(jù),數(shù)據(jù)更新后,觸發(fā)協(xié)處理器,進行二級索引的處理;數(shù)據(jù)存儲組件:主要對數(shù)據(jù)進行存儲,根據(jù)不同的操作及時更新數(shù)據(jù);索引規(guī)則組件:接收客戶端接口的索引規(guī)則請求,包括索引規(guī)則的創(chuàng)建和刪除;協(xié)處理器組件:在數(shù)據(jù)請求處理組件在對數(shù)據(jù)進行處理后觸發(fā)該協(xié)處理器組件,該該協(xié)處理器組件讀取索引規(guī)則組件中的索引規(guī)則,根據(jù)索引規(guī)則對二級索引進行處理;二級索引接口:根據(jù)協(xié)處理組件讀取到的索引規(guī)則,將對二級索引的處理轉(zhuǎn)移到二級索引模塊。進一步的,所述二級索引模塊主要是對二級索引進行處理,包括二級索引查詢、更新和存儲,所述二級索引模塊主要包含:客戶端接口:接收客戶端發(fā)送的數(shù)據(jù)請求,將對數(shù)據(jù)的查詢請求轉(zhuǎn)移到二級索引查詢組件,更新請求轉(zhuǎn)移到二級索引更新組件,接收相應(yīng)的查詢結(jié)果返回到客戶端;二級索引更新組件:接收客戶端接口的更新請求,及時更新二級索引存儲組件中的二級索引;二級索引查詢組件:接收客戶端接口的查詢請求,通過向二級索引存儲組件查詢二級索引獲得Rowkey,將其返回到客戶端接口;二級索引查詢組件:接收客戶端接口的刪除請求,及時刪除二級索引存儲組件中的二級索引;二級索引存儲組件:對二級索引進行存儲;數(shù)據(jù)處理接口:接收數(shù)據(jù)處理模塊對二級索引的操作,將回調(diào)函數(shù)所獲得的數(shù)據(jù)轉(zhuǎn)移給二級索引模塊。一種基于內(nèi)存數(shù)據(jù)庫的HBase二級索引構(gòu)建與查詢的方法,包括以下步驟:S1客戶端發(fā)送二級索引規(guī)則創(chuàng)建請求,協(xié)處理器調(diào)用二級索引模塊接口,將二級索引信息和二級索引數(shù)據(jù)寫入二級索引模塊;S2客戶端發(fā)送二級索引規(guī)則刪除請求,協(xié)處理器調(diào)用二級索引模塊接口,刪除二級索引規(guī)則信息和索引數(shù)據(jù);S3客戶端發(fā)送數(shù)據(jù)更新請求,數(shù)據(jù)處理模塊確定數(shù)據(jù)更新類型為插入,數(shù)據(jù)處理模塊將更新數(shù)據(jù)直接寫入HBase,協(xié)處理器調(diào)用二級索引模塊接口修改二級索引數(shù)據(jù);S4客戶端發(fā)送數(shù)據(jù)更新請求,數(shù)據(jù)處理模塊確定數(shù)據(jù)更新類型為修改或刪除,協(xié)處理器協(xié)助數(shù)據(jù)處理模塊搜索到需要更新的數(shù)據(jù),數(shù)據(jù)處理模塊更新數(shù)據(jù),協(xié)處理器調(diào)用二級索引模塊接口修改索引數(shù)據(jù);S5客戶端發(fā)送數(shù)據(jù)查詢請求,協(xié)處理器協(xié)助數(shù)據(jù)處理模塊搜索到需要查詢的數(shù)據(jù),數(shù)據(jù)處理模塊獲取查詢數(shù)據(jù)并將獲取的數(shù)據(jù)返回給客戶端。進一步的,步驟S1包括:S11客戶端發(fā)送二級索引規(guī)則創(chuàng)建請求;S12數(shù)據(jù)處理模塊接受二級索引規(guī)則創(chuàng)建請求,數(shù)據(jù)請求處理組件將二級索引創(chuàng)建情況分配給協(xié)處理器組件進行處理;S13協(xié)處理器組件對收到的二級索引創(chuàng)建請求中的表名和字段進行解析;S14協(xié)處理器組件根據(jù)索引創(chuàng)建請求的解析結(jié)果調(diào)用二級索引模塊接口寫入索引規(guī)則信息,并在二級索引模塊中根據(jù)表名和索引字段創(chuàng)建二級索引對應(yīng)的Key值;S15協(xié)處理器組件掃描HBase中索引歸屬的表,將每條記錄的Rowkey和對應(yīng)索引字段的權(quán)值寫入二級索引模塊。進一步的,步驟S2包括:S21客戶端發(fā)送二級索引規(guī)則刪除請求;S22數(shù)據(jù)處理模塊接收索引刪除請求,分配給協(xié)處理器組件進行處理;S23協(xié)處理器組件對收到索引刪除請求中的索引名稱進行解析;S24協(xié)處理器組件根據(jù)解析結(jié)果調(diào)用二級索引模塊接口,刪除索引規(guī)則信息和索引數(shù)據(jù)。進一步的,步驟S3包括:S31客戶端發(fā)送數(shù)據(jù)更新請求;S32數(shù)據(jù)處理模塊接收到數(shù)據(jù)更新請求后,經(jīng)判斷,確定數(shù)據(jù)更新類型為插入,將更新數(shù)據(jù)直接寫入HBase,并將數(shù)據(jù)更新請求轉(zhuǎn)發(fā)給協(xié)處理器;S33協(xié)處理器判斷更新字段是否為索引字段,若數(shù)據(jù)更新字段是索引字段,協(xié)處理器調(diào)用二級索引模塊更新索引數(shù)據(jù);若數(shù)據(jù)更新字段不是索引字段,數(shù)據(jù)更新結(jié)束。進一步的,步驟S4包括:S41客戶端發(fā)送數(shù)據(jù)更新請求;S42數(shù)據(jù)處理模塊接收到數(shù)據(jù)更新請求后,經(jīng)判斷,確定數(shù)據(jù)更新類型為修改或刪除,并將數(shù)據(jù)更新請求轉(zhuǎn)發(fā)給協(xié)處理器;S43協(xié)處理器判斷更新條件是否為索引字段,若更新條件為索引字段,協(xié)處理器遍歷HBase,獲取符合條件的Rowkey;若更新條件不為索引字段,協(xié)處理器將更新條件提交給二級索引模塊,二級索引模塊根據(jù)不同的更新條件進行精確、范圍或組合查詢,返回符合條件的Rowkey;S44協(xié)處理器將二級索引模塊返回的Rowkey返回給數(shù)據(jù)處理模塊,數(shù)據(jù)處理模塊根據(jù)協(xié)處理器返回的Rowkey更新數(shù)據(jù);S45協(xié)處理器判斷更新字段是否為索引字段,若數(shù)據(jù)更新字段是索引字段,協(xié)處理器調(diào)用二級索引模塊更新索引數(shù)據(jù);若數(shù)據(jù)更新字段不是索引字段,數(shù)據(jù)更新結(jié)束。進一步的,步驟S5包括:S51客戶端發(fā)送數(shù)據(jù)查詢請求;S52數(shù)據(jù)處理模塊接收到數(shù)據(jù)查詢請求后,將數(shù)據(jù)查詢請求轉(zhuǎn)發(fā)給協(xié)處理器;S53協(xié)處理器判斷更新條件是否為索引字段,若更新條件為索引字段,協(xié)處理器遍歷HBase,獲取符合條件的Rowkey;若更新條件不為索引字段,協(xié)處理器將查詢條件提交給二級索引模塊,二級索引模塊根據(jù)不同的查詢條件進行精確、范圍或組合查詢,返回符合條件的Rowkey;S54協(xié)處理器將二級索引模塊返回的Rowkey返回給數(shù)據(jù)處理模塊;S55數(shù)據(jù)處理模塊根據(jù)協(xié)處理器返回的Rowkey獲取數(shù)據(jù),并將數(shù)據(jù)返回給客戶端。本發(fā)明的有益效果:1)實現(xiàn)多表對應(yīng)一個協(xié)處理器的機制;可對索引字段進行靈活配置,以滿足多級查詢粒度的需求;2)實現(xiàn)基于內(nèi)存數(shù)據(jù)庫連接池的二級索引快速插入機制;當客戶端向HBase中更新數(shù)據(jù)時,觸發(fā)協(xié)處理器,根據(jù)操作的當前表的索引規(guī)則在內(nèi)存數(shù)據(jù)庫中創(chuàng)建二級索引,通過使用內(nèi)存數(shù)據(jù)庫連接池,可減少由于不斷創(chuàng)建新連接的開銷,快速構(gòu)建相應(yīng)的二級索引;3)實現(xiàn)基于內(nèi)存數(shù)據(jù)庫的二級索引存儲機制;對HBase數(shù)據(jù)表生成的二級索引存儲在內(nèi)存數(shù)據(jù)庫,當客戶端發(fā)出查詢或者刪除請求時,可以快速查詢二級索引,大幅提升訪問效率;4)實現(xiàn)支持多級查詢粒度的二級索引。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是根據(jù)本發(fā)明實施例所述的基于內(nèi)存數(shù)據(jù)庫的HBase二級索引構(gòu)建與查詢的裝置組成結(jié)構(gòu)示意圖;圖2是根據(jù)本發(fā)明實施例所述的數(shù)據(jù)處理模塊的結(jié)構(gòu)示意圖;圖3是根據(jù)本發(fā)明實施例所述的二級索引模塊的結(jié)構(gòu)示意圖;圖4是根據(jù)本發(fā)明實施例的二級索引規(guī)則構(gòu)建流程圖;圖5是根據(jù)本發(fā)明實施例的二級索引規(guī)則刪除流程圖;圖6是根據(jù)本發(fā)明實施例的數(shù)據(jù)更新流程圖;圖7是根據(jù)本發(fā)明實施例的數(shù)據(jù)查詢流程圖。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。如圖1-7所示,根據(jù)本發(fā)明實施例所述的一種基于內(nèi)存數(shù)據(jù)庫的HBase二級索引構(gòu)建與查詢的裝置,包括:客戶端,其用于發(fā)出二級索引規(guī)則創(chuàng)建請求、二級索引規(guī)則刪除請求、數(shù)據(jù)更新請求和數(shù)據(jù)查詢請求;數(shù)據(jù)處理模塊,其接收客戶端發(fā)送的請求,用于對客戶端發(fā)出的請求進行分別處理,進行數(shù)據(jù)的更新、查詢和刪除;二級索引模塊,對客戶端發(fā)出的請求進行二級索引的更新、查詢和刪除。其中,所述數(shù)據(jù)處理模塊主要是對HBase中的數(shù)據(jù)進行處理。其中,所述數(shù)據(jù)處理模塊包括:客戶端接口:用于接收客戶端發(fā)送的各種數(shù)據(jù)請求,將對數(shù)據(jù)的請求轉(zhuǎn)移到數(shù)據(jù)請求處理組件,對索引規(guī)則的請求轉(zhuǎn)移到索引規(guī)則組件,接收相應(yīng)的查詢結(jié)果返回到客戶端;數(shù)據(jù)請求處理組件:用于接收客戶端接口的數(shù)據(jù)處理請求,在數(shù)據(jù)庫存儲組件中更新和刪除數(shù)據(jù)庫的數(shù)據(jù),數(shù)據(jù)更新后,觸發(fā)協(xié)處理器,進行二級索引的處理;數(shù)據(jù)存儲組件:主要對數(shù)據(jù)進行存儲,根據(jù)不同的操作及時更新數(shù)據(jù);索引規(guī)則組件:接收客戶端接口的索引規(guī)則請求,包括索引規(guī)則的創(chuàng)建和刪除;協(xié)處理器組件:在數(shù)據(jù)請求處理組件在對數(shù)據(jù)進行處理后觸發(fā)該協(xié)處理器組件,該該協(xié)處理器組件讀取索引規(guī)則組件中的索引規(guī)則,根據(jù)索引規(guī)則對二級索引進行處理;和二級索引接口:根據(jù)協(xié)處理組件讀取到的索引規(guī)則,將對二級索引的處理轉(zhuǎn)移到二級索引模塊。其中,所述二級索引模塊主要是對二級索引進行處理,包括二級索引查詢、更新和存儲,所述二級索引模塊主要包含:客戶端接口:接收客戶端發(fā)送的數(shù)據(jù)請求,將對數(shù)據(jù)的查詢請求轉(zhuǎn)移到二級索引查詢組件,更新請求轉(zhuǎn)移到二級索引更新組件,接收相應(yīng)的查詢結(jié)果返回到客戶端;二級索引更新組件:接收客戶端接口的更新請求,及時更新二級索引存儲組件中的二級索引;二級索引查詢組件:接收客戶端接口的查詢請求,通過向二級索引存儲組件查詢二級索引獲得Rowkey,將其返回到客戶端接口;二級索引查詢組件:接收客戶端接口的刪除請求,及時刪除二級索引存儲組件中的二級索引;二級索引存儲組件:對二級索引進行存儲;數(shù)據(jù)處理接口:接收數(shù)據(jù)處理模塊對二級索引的操作,將回調(diào)函數(shù)所獲得的數(shù)據(jù)轉(zhuǎn)移給二級索引模塊。一種基于內(nèi)存數(shù)據(jù)庫的HBase二級索引構(gòu)建與查詢的方法,包括以下步驟:S1客戶端發(fā)送二級索引規(guī)則創(chuàng)建請求,協(xié)處理器調(diào)用二級索引模塊接口,將二級索引信息和二級索引數(shù)據(jù)寫入二級索引模塊;S2客戶端發(fā)送二級索引規(guī)則刪除請求,協(xié)處理器調(diào)用二級索引模塊接口,刪除二級索引規(guī)則信息和索引數(shù)據(jù);S3客戶端發(fā)送數(shù)據(jù)更新請求,數(shù)據(jù)處理模塊確定數(shù)據(jù)更新類型為插入,數(shù)據(jù)處理模塊將更新數(shù)據(jù)直接寫入HBase,協(xié)處理器調(diào)用二級索引模塊接口修改二級索引數(shù)據(jù);S4客戶端發(fā)送數(shù)據(jù)更新請求,數(shù)據(jù)處理模塊確定數(shù)據(jù)更新類型為修改或刪除,協(xié)處理器協(xié)助數(shù)據(jù)處理模塊搜索到需要更新的數(shù)據(jù),數(shù)據(jù)處理模塊更新數(shù)據(jù),協(xié)處理器調(diào)用二級索引模塊接口修改索引數(shù)據(jù);S5客戶端發(fā)送數(shù)據(jù)查詢請求,協(xié)處理器協(xié)助數(shù)據(jù)處理模塊搜索到需要查詢的數(shù)據(jù),數(shù)據(jù)處理模塊獲取查詢數(shù)據(jù)并將獲取的數(shù)據(jù)返回給客戶端。其中,步驟S1進一步包括:S11客戶端發(fā)送二級索引規(guī)則創(chuàng)建請求;S12數(shù)據(jù)處理模塊接受二級索引規(guī)則創(chuàng)建請求,數(shù)據(jù)請求處理組件將二級索引創(chuàng)建情況分配給協(xié)處理器組件進行處理;S13協(xié)處理器組件對收到的二級索引創(chuàng)建請求中的表名和字段進行解析;S14協(xié)處理器組件根據(jù)索引創(chuàng)建請求的解析結(jié)果調(diào)用二級索引模塊接口寫入索引規(guī)則信息,并在二級索引模塊中根據(jù)表名和索引字段創(chuàng)建二級索引對應(yīng)的Key值;S15協(xié)處理器組件掃描HBase中索引歸屬的表,將每條記錄的Rowkey和對應(yīng)索引字段的權(quán)值寫入二級索引模塊。其中,步驟S2進一步包括:S21客戶端發(fā)送二級索引規(guī)則刪除請求;S22數(shù)據(jù)處理模塊接收索引刪除請求,分配給協(xié)處理器組件進行處理;S23協(xié)處理器組件對收到索引刪除請求中的索引名稱進行解析;S24協(xié)處理器組件根據(jù)解析結(jié)果調(diào)用二級索引模塊接口,刪除索引規(guī)則信息和索引數(shù)據(jù)。其中,步驟S3進一步包括:S31客戶端發(fā)送數(shù)據(jù)更新請求;S32數(shù)據(jù)處理模塊接收到數(shù)據(jù)更新請求后,經(jīng)判斷,確定數(shù)據(jù)更新類型為插入,將更新數(shù)據(jù)直接寫入HBase,并將數(shù)據(jù)更新請求轉(zhuǎn)發(fā)給協(xié)處理器;S33協(xié)處理器判斷更新字段是否為索引字段,若數(shù)據(jù)更新字段是索引字段,協(xié)處理器調(diào)用二級索引模塊更新索引數(shù)據(jù);若數(shù)據(jù)更新字段不是索引字段,數(shù)據(jù)更新結(jié)束。其中,步驟S4進一步包括:S41客戶端發(fā)送數(shù)據(jù)更新請求;S42數(shù)據(jù)處理模塊接收到數(shù)據(jù)更新請求后,經(jīng)判斷,確定數(shù)據(jù)更新類型為修改或刪除,并將數(shù)據(jù)更新請求轉(zhuǎn)發(fā)給協(xié)處理器;S43協(xié)處理器判斷更新條件是否為索引字段,若更新條件為索引字段,協(xié)處理器遍歷HBase,獲取符合條件的Rowkey;若更新條件不為索引字段,協(xié)處理器將更新條件提交給二級索引模塊,二級索引模塊根據(jù)不同的更新條件進行精確、范圍或組合查詢,返回符合條件的Rowkey;S44協(xié)處理器將二級索引模塊返回的Rowkey返回給數(shù)據(jù)處理模塊,數(shù)據(jù)處理模塊根據(jù)協(xié)處理器返回的Rowkey更新數(shù)據(jù);S45協(xié)處理器判斷更新字段是否為索引字段,若數(shù)據(jù)更新字段是索引字段,協(xié)處理器調(diào)用二級索引模塊更新索引數(shù)據(jù);若數(shù)據(jù)更新字段不是索引字段,數(shù)據(jù)更新結(jié)束。其中,所述步驟S5進一步包括:S51客戶端發(fā)送數(shù)據(jù)查詢請求;S52數(shù)據(jù)處理模塊接收到數(shù)據(jù)查詢請求后,將數(shù)據(jù)查詢請求轉(zhuǎn)發(fā)給協(xié)處理器;S53協(xié)處理器判斷更新條件是否為索引字段,若更新條件為索引字段,協(xié)處理器遍歷HBase,獲取符合條件的Rowkey;若更新條件不為索引字段,協(xié)處理器將查詢條件提交給二級索引模塊,二級索引模塊根據(jù)不同的查詢條件進行精確、范圍或組合查詢,返回符合條件的Rowkey;S54協(xié)處理器將二級索引模塊返回的Rowkey返回給數(shù)據(jù)處理模塊;S55數(shù)據(jù)處理模塊根據(jù)協(xié)處理器返回的Rowkey獲取數(shù)據(jù),并將數(shù)據(jù)返回給客戶端。在本發(fā)明中,數(shù)據(jù)處理模塊主要是對HBase中的數(shù)據(jù)進行處理;客戶端接口主要用于接收客戶端發(fā)送的各種數(shù)據(jù)請求,將對數(shù)據(jù)的請求轉(zhuǎn)移到數(shù)據(jù)請求處理組件,對索引規(guī)則的請求轉(zhuǎn)移到索引規(guī)則組件,接收相應(yīng)的查詢結(jié)果返回到客戶端;數(shù)據(jù)請求處理組件用于接收客戶端接口的數(shù)據(jù)處理請求,在數(shù)據(jù)庫存儲組件中更新和刪除數(shù)據(jù)庫的數(shù)據(jù),數(shù)據(jù)更新后,觸發(fā)協(xié)處理器,進行二級索引的處理;HBase主要用于對數(shù)據(jù)進行存儲,根據(jù)不同的操作及時更新數(shù)據(jù);索引規(guī)則組件用于接收客戶端接口的索引規(guī)則請求,包括索引規(guī)則的創(chuàng)建和刪除;協(xié)處理器組件用于讀取索引規(guī)則組件中的索引規(guī)則,根據(jù)索引規(guī)則對二級索引進行處理;二級索引接口用于根據(jù)協(xié)處理組件讀取到的索引規(guī)則,將對二級索引的處理轉(zhuǎn)移到二級索引模塊。在本發(fā)明中,二級索引模塊主要是對二級索引進行處理,包括二級索引查詢、更新和存儲;客戶端接口用于接收客戶端發(fā)送的數(shù)據(jù)請求,將對數(shù)據(jù)的查詢請求轉(zhuǎn)移到二級索引查詢組件,更新請求轉(zhuǎn)移到二級索引更新組件,接收相應(yīng)的查詢結(jié)果返回到客戶端;二級索引更新組件用于接收客戶端接口的更新請求,及時更新內(nèi)存數(shù)據(jù)庫中的二級索引;二級索引查詢組件用于接收客戶端接口的查詢請求,通過向內(nèi)存數(shù)據(jù)庫查詢二級索引獲得Rowkey,將其返回到客戶端接口;二級索引查詢組件用于接收客戶端接口的刪除請求,及時刪除內(nèi)存數(shù)據(jù)庫中的二級索引;內(nèi)存數(shù)據(jù)庫用于對二級索引進行存儲;數(shù)據(jù)處理接口用于接收數(shù)據(jù)處理模塊對二級索引的操作,將回調(diào)函數(shù)所獲得的數(shù)據(jù)轉(zhuǎn)移給二級索引模塊。在本發(fā)明中,內(nèi)存數(shù)據(jù)庫是可以將數(shù)據(jù)放在內(nèi)存中直接操作的數(shù)據(jù)庫。主流的內(nèi)存數(shù)據(jù)庫包括Redis、FastDB、Memcached等。通過使用內(nèi)存數(shù)據(jù)庫實現(xiàn)對多級查詢粒度的二級索引構(gòu)建與查詢的方法和裝置,多級查詢粒度包括對數(shù)據(jù)的精確查詢、組合查詢和范圍查詢。其方法和裝置為:客戶端發(fā)出更新、查詢、刪除請求,對涉及條件過濾的字段和Rowkey在內(nèi)存數(shù)據(jù)庫中更新、查詢、刪除索引,在處理查詢請求時,客戶端通過查詢二級索引快速獲得符合過濾條件的Rowkey,在HBase中通過獲得的Rowkey進行查詢,提高查詢的效率和性能。本發(fā)明是基于內(nèi)存數(shù)據(jù)庫實現(xiàn)HBase二級索引的構(gòu)建、存儲和查詢,可以實現(xiàn)二級索引的快速生成和對HBase數(shù)據(jù)庫的高效查詢;本專利充分分析了對HBase的查詢操作種類,針對不同的查詢操作,使用內(nèi)存數(shù)據(jù)庫不同的數(shù)據(jù)結(jié)構(gòu),構(gòu)建相應(yīng)的二級索引,從而實現(xiàn)快速檢索;本發(fā)明中,當需求發(fā)生變化時,對HBase需要構(gòu)建二級索引的字段進行配置,以滿足其需求。實現(xiàn)支持多級查詢粒度的二級索引構(gòu)建方法如下:精準查詢:根據(jù)查詢條件,對索引字段直接進行精準查詢,查詢結(jié)果為HBase的Rowkey,再根據(jù)Rowkey對HBase進行查詢。其構(gòu)建的二級索引形式為Key-Value,Key是HBase表名、字段名的組合,Value是HBase的Rowkey。范圍查詢:根據(jù)查詢條件,通過HBase的查詢條件,對內(nèi)存數(shù)據(jù)庫構(gòu)建二級索引方法和裝置中的有序參數(shù)進行范圍查詢,查詢結(jié)果為HBase的Rowkey,再根據(jù)Rowkey對HBase進行查詢。其構(gòu)建的二級索引形式為Key-Score-Value,Key是HBase表名、字段名的組合,Score是HBase的字段值,Value為HBase的Rowkey。組合查詢:根據(jù)查詢條件,分別對精準查詢和范圍查詢進行組合,結(jié)果集進行差集或者交集,其結(jié)果為HBase的Rowkey,再根據(jù)Rowkey對HBase進行查詢。其構(gòu)建的二級索引是Key-Value和Key-Value的組合,查詢結(jié)果求交集或者差集。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。當前第1頁1 2 3 當前第1頁1 2 3