本發(fā)明涉及數(shù)據(jù)處理
技術(shù)領(lǐng)域:
,尤其涉及一種基于hbase的告警數(shù)據(jù)存儲(chǔ)方法及裝置。
背景技術(shù):
:故障管理系統(tǒng)是一個(gè)面向全專業(yè)的復(fù)雜的通信網(wǎng)絡(luò)的實(shí)時(shí)監(jiān)控系統(tǒng),主要用于全網(wǎng)的設(shè)備故障監(jiān)控,對(duì)故障信息進(jìn)行處理,輔助故障定位和解決。隨著網(wǎng)絡(luò)規(guī)模的增長,系統(tǒng)所需要處理和存儲(chǔ)的數(shù)據(jù)越來越多,對(duì)數(shù)據(jù)庫的查詢性能影響越來越大,盡管對(duì)數(shù)據(jù)庫進(jìn)行了各方面的優(yōu)化,仍然無法很好的滿足用戶需要。特別是,目前數(shù)據(jù)分析需求的需要,從告警數(shù)據(jù)庫中獲取大量數(shù)據(jù)時(shí)對(duì)服務(wù)器產(chǎn)生了很大的壓力。現(xiàn)有的故障管理系統(tǒng)的告警數(shù)據(jù)通常是在經(jīng)過處理后存儲(chǔ)在oracle、informix等關(guān)系型數(shù)據(jù)庫中,在需要時(shí)從數(shù)據(jù)庫查詢將滿足條件的數(shù)據(jù)返回給應(yīng)用層,并隨著這幾年用戶對(duì)數(shù)據(jù)價(jià)值的重視,逐漸開始對(duì)告警數(shù)據(jù)的進(jìn)行一些關(guān)聯(lián)規(guī)則的挖掘分析。而且,目前電信運(yùn)營支撐系統(tǒng)oss相關(guān)系統(tǒng)中,經(jīng)過故障管理系統(tǒng)處理后的告警數(shù)據(jù)仍然以oracle等關(guān)系型數(shù)據(jù)庫為主,主要是通過對(duì)告警數(shù)據(jù)庫進(jìn)行一些優(yōu)化措施來盡可能的滿足系統(tǒng)和用戶的需要?,F(xiàn)有技術(shù)中對(duì)于關(guān)系型數(shù)據(jù)庫在存儲(chǔ)海量告警后的查詢性能問題,當(dāng)前流行的解決方案是通過使用企業(yè)級(jí)搜索應(yīng)用服務(wù)器solr來進(jìn)行告警數(shù)據(jù)的輔助查詢。通過solr定時(shí)的對(duì)告警數(shù)據(jù)庫中的告警數(shù)據(jù)建立全文索引,這樣可以通過solr來查詢滿足條件的告警數(shù)據(jù),緩解告警數(shù)據(jù)庫壓力,保證告警查詢的性能。但是,這種方案的缺點(diǎn)為告警是實(shí)時(shí)的數(shù)據(jù),而solr的索引則是通過任務(wù)來定時(shí)生成,造成了最新的告警數(shù)據(jù)沒有被創(chuàng)建索引,也就無法通過solr查詢到最新的告警數(shù)據(jù),存在一定的時(shí)延。鑒于此,如何對(duì)告警數(shù)據(jù)進(jìn)行存儲(chǔ),以使后續(xù)能查詢到最新的告警數(shù)據(jù),滿足告警數(shù)據(jù)存取需求成為目前需要解決的技術(shù)問題。技術(shù)實(shí)現(xiàn)要素:為解決上述的技術(shù)問題,本發(fā)明實(shí)施例提供一種基于hbase的告警數(shù)據(jù)存儲(chǔ)方法及裝置,能夠?qū)崿F(xiàn)對(duì)告警數(shù)據(jù)進(jìn)行存儲(chǔ),以使后續(xù)能查詢到最新的告警數(shù)據(jù),滿足告警數(shù)據(jù)存取需求。第一方面,本發(fā)明實(shí)施例提供一種基于hbase的告警數(shù)據(jù)存儲(chǔ)方法,包括:獲取告警數(shù)據(jù)和所述告警數(shù)據(jù)中的告警字段在預(yù)設(shè)時(shí)間段內(nèi)的使用頻率;根據(jù)所述使用頻率,將所述告警數(shù)據(jù)中的所有告警字段劃分為熱字段和冷字段,并將劃分為熱字段的告警字段和劃分為冷字段的告警字段分別歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的不同列族;根據(jù)告警發(fā)生時(shí)間,對(duì)所述告警數(shù)據(jù)中的每條告警記錄進(jìn)行散列處理,并根據(jù)散列處理結(jié)果,按照預(yù)設(shè)行主鍵格式生成每一條告警記錄在所述hbase告警數(shù)據(jù)表中的行主鍵rowkey,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上,同時(shí)向預(yù)先創(chuàng)建的輔助索引表寫入索引數(shù)據(jù)??蛇x地,所述熱字段至少包括網(wǎng)管告警流水號(hào),同時(shí)所述熱字段還包括以下告警字段中的一個(gè)或多個(gè):網(wǎng)管告警級(jí)別、網(wǎng)元名稱、設(shè)備類型、專業(yè)、告警發(fā)生時(shí)間、告警清除時(shí)間、告警定位對(duì)象名稱、告警定位對(duì)象類型、告警標(biāo)題、告警可能原因、告警類別、告警正文、告警清除狀態(tài)、省、地區(qū)、縣、廠家、是否需要上報(bào)集團(tuán)、告警工程狀態(tài)、派單狀態(tài)、工單狀態(tài)、工單號(hào)、機(jī)房名稱、關(guān)聯(lián)方式、定位信息、退服原因、退服類型、該事件對(duì)設(shè)備的影響、該事件對(duì)業(yè)務(wù)的影響、是否前轉(zhuǎn)聲光告警牌和/或短信前傳標(biāo)記??蛇x地,所述冷字段包括以下告警字段中的一個(gè)或多個(gè):接口版本號(hào)、連續(xù)消息序號(hào)、廠家告警唯一標(biāo)識(shí)、網(wǎng)元ip和/或告警來源。可選地,在將劃分為熱字段的告警字段和劃分為冷字段的告警字段分別歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的不同列族之前,所述方法還包括:創(chuàng)建具有預(yù)設(shè)數(shù)量個(gè)region的hbase告警數(shù)據(jù)表,所述預(yù)設(shè)數(shù)量個(gè)region均勻分布在hbase集群的各個(gè)區(qū)域服務(wù)器regionserver上;根據(jù)索引名或索引名的前n個(gè)字母確定所述hbase告警數(shù)據(jù)表的輔助索引表的region數(shù)量m,創(chuàng)建具有m個(gè)region的所述輔助索引表,使所述hbase告警數(shù)據(jù)表中的每條告警記錄的每類索引均對(duì)應(yīng)所述輔助索引表中的一條索引數(shù)據(jù),所述m個(gè)region均勻分布在hbase集群的各個(gè)區(qū)域服務(wù)器regionserver上,n和m均為正整數(shù);其中,所述hbase告警數(shù)據(jù)表的字段包括:行主鍵rowkey、時(shí)間戳timestamp、第一列族和第二列族;所述輔助索引表的字段包括:rowkey、timestamp和第三列族,索引數(shù)據(jù)的所有字段均歸屬于所述第三列族??蛇x地,所述第一列族的名稱為h,所述第二列族的名稱為c,相應(yīng)地,所述將劃分為熱字段的告警字段和劃分為冷字段的告警字段分別歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的不同列族,包括:將劃分為熱字段的告警字段歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的第一列族,將劃分為冷字段的告警字段歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的第二列族??蛇x地,所述根據(jù)告警發(fā)生時(shí)間,對(duì)所述告警數(shù)據(jù)中的每條告警記錄進(jìn)行散列處理,并根據(jù)散列處理結(jié)果,按照預(yù)設(shè)行主鍵格式生成每一條告警記錄在所述hbase告警數(shù)據(jù)表中的行主鍵rowkey,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上,包括:針對(duì)所述告警數(shù)據(jù)中的每條告警記錄:按照預(yù)設(shè)網(wǎng)管告警流水號(hào)格式,在該條告警記錄中的通過計(jì)數(shù)器生成的網(wǎng)管告警流水號(hào)中添加該條告警記錄的告警發(fā)生時(shí)間,獲得該條告警記錄的新的網(wǎng)管告警流水號(hào),其中,所述預(yù)設(shè)格式為:告警發(fā)生時(shí)間+通過計(jì)數(shù)器生成的序列號(hào),其中所述告警發(fā)生時(shí)間的格式為:年+月+日+時(shí)+分+秒;以秒為粒度,將該條告警記錄的告警發(fā)生時(shí)間中的各個(gè)部分按照秒、分、時(shí)、日、月、年的順序排列,作為該條告警記錄的散列值;將該條告警記錄的散列值作為該條告警記錄在所述hbase告警數(shù)據(jù)表的行主鍵rowkey的前綴,將該條告警記錄的新的網(wǎng)管告警流水號(hào)中的通過計(jì)數(shù)器生成的序列號(hào)作為該條告警記錄在所述hbase告警數(shù)據(jù)表的rowkey的后綴,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上。可選地,所述輔助索引表中的rowkey由索引名+索引值+所述新的網(wǎng)管告警流水號(hào)組成;其中,所述索引名為查詢條件的組合的字母或數(shù)字標(biāo)識(shí),用于唯一標(biāo)識(shí)一類索引,所述索引值為查詢條件的組合。可選地,所述查詢條件的字段包括:網(wǎng)管告警流水號(hào)、開始時(shí)間、結(jié)束時(shí)間、地市、設(shè)備廠商、設(shè)備類型、告警專業(yè)、告警級(jí)別、告警標(biāo)題、告警類別、響應(yīng)級(jí)別、工程狀態(tài)、工單狀態(tài)、派單狀態(tài)、清除狀態(tài)和/或網(wǎng)元在網(wǎng)狀態(tài);相應(yīng)地,所述查詢條件的組合為:將網(wǎng)管告警流水號(hào)、開始時(shí)間和結(jié)束時(shí)間三個(gè)查詢條件之外的其他查詢條件進(jìn)行組合作為索引值,然后去掉重復(fù)組合、前綴組合以及不需要的組合,得到全部查詢條件的組合;其中,所述重復(fù)組合為條件相同但順序不同的組合類型,所述前綴組合為一個(gè)查詢條件的組合是另一個(gè)查詢條件的組合的前綴。可選地,在向預(yù)先創(chuàng)建的輔助索引表寫入索引數(shù)據(jù)之后,所述方法還包括:獲取查詢條件并進(jìn)行組合,獲得查詢組合的索引名,將所獲取的查詢條件按照該索引名所對(duì)應(yīng)的索引類型的預(yù)設(shè)條件順序進(jìn)行拼接以計(jì)算出索引值,并將所獲取的查詢條件中的開始時(shí)間和結(jié)束時(shí)間分別轉(zhuǎn)化為所述新的網(wǎng)管告警流水號(hào)的格式,獲得滿足所獲取的查詢條件的rowkey范圍;利用scan操作,獲取所述滿足所獲取的查詢條件的rowkey范圍對(duì)應(yīng)的索引數(shù)據(jù),并利用該索引數(shù)據(jù)rowkey中的網(wǎng)管告警流水號(hào)對(duì)所述hbase告警數(shù)據(jù)表進(jìn)行查詢,以獲得滿足所獲取的查詢條件的告警數(shù)據(jù)。第二方面,本發(fā)明實(shí)施例提供一種基于hbase的告警數(shù)據(jù)存儲(chǔ)裝置,包括:第一獲取模塊,用于獲取告警數(shù)據(jù)和所述告警數(shù)據(jù)中的告警字段在預(yù)設(shè)時(shí)間段內(nèi)的使用頻率;劃分模塊,用于根據(jù)所述使用頻率,將所述告警數(shù)據(jù)中的所有告警字段劃分為熱字段和冷字段,并將劃分為熱字段的告警字段和劃分為冷字段的告警字段分別歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的不同列族;處理模塊,用于根據(jù)告警發(fā)生時(shí)間,對(duì)所述告警數(shù)據(jù)中的每條告警記錄進(jìn)行散列處理,并根據(jù)散列處理結(jié)果,按照預(yù)設(shè)行主鍵格式生成每一條告警記錄在所述hbase告警數(shù)據(jù)表中的行主鍵rowkey,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上,同時(shí)向預(yù)先創(chuàng)建的輔助索引表寫入索引數(shù)據(jù)。第三方面,本發(fā)明實(shí)施例提供一種電子設(shè)備,包括:處理器、存儲(chǔ)器、總線及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序;其中,所述處理器,存儲(chǔ)器通過所述總線完成相互間的通信;所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)上述方法。第四方面,本發(fā)明實(shí)施例提供一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述方法。由上述技術(shù)方案可知,本發(fā)明實(shí)施例的基于hbase的告警數(shù)據(jù)存儲(chǔ)方法及裝置,通過獲取告警數(shù)據(jù)和所述告警數(shù)據(jù)中的告警字段在預(yù)設(shè)時(shí)間段內(nèi)的使用頻率;根據(jù)所述使用頻率,將所述告警數(shù)據(jù)中的所有告警字段劃分為熱字段和冷字段,并將劃分為熱字段的告警字段和劃分為冷字段的告警字段分別歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的不同列族;根據(jù)告警發(fā)生時(shí)間,對(duì)所述告警數(shù)據(jù)中的每條告警記錄進(jìn)行散列處理,并根據(jù)散列處理結(jié)果,按照預(yù)設(shè)行主鍵格式生成每一條告警記錄在所述hbase告警數(shù)據(jù)表中的行主鍵rowkey,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上,同時(shí)向預(yù)先創(chuàng)建的輔助索引表寫入索引數(shù)據(jù),由此,能夠?qū)崿F(xiàn)對(duì)告警數(shù)據(jù)進(jìn)行存儲(chǔ),以使后續(xù)能查詢到最新的告警數(shù)據(jù),滿足告警數(shù)據(jù)存取需求,可以顯著提高后續(xù)對(duì)告警數(shù)據(jù)查詢的效率。附圖說明圖1為本發(fā)明一實(shí)施例提供的一種基于hbase的告警數(shù)據(jù)存儲(chǔ)方法的流程示意圖;圖2為本發(fā)明實(shí)施例提供的一種基于時(shí)間的散列分布示意圖;圖3為本發(fā)明實(shí)施例提供的一舉例的網(wǎng)管告警流水號(hào)查詢耗時(shí)示意圖;圖4為本發(fā)明實(shí)施例提供的方法與現(xiàn)有技術(shù)的條件查詢平均耗時(shí)對(duì)比示意圖;圖5為本發(fā)明一實(shí)施例提供的一種基于hbase的告警數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例提供的一種電子設(shè)備的實(shí)體結(jié)構(gòu)示意圖。具體實(shí)施方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他的實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1示出了本發(fā)明一實(shí)施例提供的基于hbase的告警數(shù)據(jù)存儲(chǔ)方法的流程示意圖,如圖1所示,本實(shí)施例的基于hbase的告警數(shù)據(jù)存儲(chǔ)方法如下所述。101、獲取告警數(shù)據(jù)和所述告警數(shù)據(jù)中的告警字段在預(yù)設(shè)時(shí)間段內(nèi)的使用頻率。可以理解的是,所獲取的告警數(shù)據(jù)為故障管理系統(tǒng)的告警數(shù)據(jù),所述告警數(shù)據(jù)中的告警字段在預(yù)設(shè)時(shí)間段內(nèi)的使用頻率為所述告警數(shù)據(jù)中的告警字段在故障管理系統(tǒng)的歷史的預(yù)設(shè)時(shí)間段內(nèi)的使用頻率,本實(shí)施例并不對(duì)其進(jìn)行限制,可根據(jù)實(shí)際情況進(jìn)行設(shè)置。102、根據(jù)所述使用頻率,將所述告警數(shù)據(jù)中的所有告警字段劃分為熱字段和冷字段,并將劃分為熱字段的告警字段和劃分為冷字段的告警字段分別歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的不同列族。在具體應(yīng)用中,所述熱字段是被系統(tǒng)或用戶頻繁使用的字段,所述熱字段至少包括網(wǎng)管告警流水號(hào),同時(shí)所述熱字段還可以包括以下告警字段中的一個(gè)或多個(gè):網(wǎng)管告警級(jí)別、網(wǎng)元名稱、設(shè)備類型、專業(yè)、告警發(fā)生時(shí)間、告警清除時(shí)間、告警定位對(duì)象名稱、告警定位對(duì)象類型、告警標(biāo)題、告警可能原因、告警類別、告警正文、告警清除狀態(tài)、省、地區(qū)、縣、廠家、是否需要上報(bào)集團(tuán)、告警工程狀態(tài)、派單狀態(tài)、工單狀態(tài)、工單號(hào)、機(jī)房名稱、關(guān)聯(lián)方式、定位信息、退服原因、退服類型、該事件對(duì)設(shè)備的影響、該事件對(duì)業(yè)務(wù)的影響、是否前轉(zhuǎn)聲光告警牌和/或短信前傳標(biāo)記等字段,本實(shí)施例并不對(duì)其進(jìn)行限制。在具體應(yīng)用中,所述冷字段是一般在詳情查看時(shí)進(jìn)行查詢才會(huì)呈現(xiàn),被使用頻率較低,所述冷字段可以包括以下告警字段中的一個(gè)或多個(gè):接口版本號(hào)、連續(xù)消息序號(hào)、廠家告警唯一標(biāo)識(shí)、網(wǎng)元ip和/或告警來源等字段,本實(shí)施例并不對(duì)其進(jìn)行限制??梢岳斫獾氖?,本實(shí)施例所述方法使用了分離原則。由于所述告警數(shù)據(jù)的一條告警記錄通常情況下可能有一百多個(gè)字段,而這些字段在故障管理系統(tǒng)中日常被使用的頻率不一樣,比如很多字段只有在進(jìn)行詳情查詢時(shí)才會(huì)用到,一天可能被使用一兩次,而有些字段每天的被使用頻率卻高達(dá)幾百次。針對(duì)這種使用情況,本實(shí)施例利用hbase的按列族columnfamily進(jìn)行存儲(chǔ)特點(diǎn)(使用不同的存儲(chǔ)裝置store存儲(chǔ)不同的columnfamily),按日常使用中告警字段被使用的頻率劃分為熱字段和冷字段,將熱字段和冷字段分別歸屬到不同的columnfamily中分開存儲(chǔ),日常的告警使用時(shí)只讀取一個(gè)columnfamily中的字段內(nèi)容,將使用頻率低的字段歸屬到另一個(gè)columnfamily中,一定程度上可以提高數(shù)據(jù)讀取的效率。在具體應(yīng)用中,在所述步驟102之前,還可以包括圖中未示出的步驟s1-s2:s1、創(chuàng)建具有預(yù)設(shè)數(shù)量個(gè)region(區(qū)域)的hbase告警數(shù)據(jù)表(alarms),所述預(yù)設(shè)數(shù)量個(gè)region均勻分布在hbase集群的各個(gè)區(qū)域服務(wù)器regionserver上。具體地,可以將所述hbase告警數(shù)據(jù)表的行主鍵rowkey均勻分割為預(yù)設(shè)數(shù)量個(gè)區(qū)間,每個(gè)區(qū)間作為一個(gè)region,將預(yù)設(shè)數(shù)量個(gè)region均勻分布在hbase集群的各個(gè)區(qū)域服務(wù)器regionserver上?,F(xiàn)有技術(shù)中hbase表在創(chuàng)建后默認(rèn)只有一個(gè)region,而伴隨著數(shù)據(jù)的增長,達(dá)到配置的限額時(shí),這個(gè)region就會(huì)自動(dòng)發(fā)生分裂,分裂成兩個(gè)region。這種分裂會(huì)一直這樣進(jìn)行下去,每當(dāng)region達(dá)到限額就會(huì)分裂。而在故障管理系統(tǒng)中的告警數(shù)據(jù)增長比較快,這樣就會(huì)導(dǎo)致region的分裂很頻繁,而region分裂一般比較耗時(shí),并且需要消耗一定的中央處理器cpu資源,會(huì)在一定程度影響hbase的性能。另一個(gè)問題就是網(wǎng)管告警這種數(shù)據(jù)是按時(shí)間序列發(fā)生的,不進(jìn)行預(yù)分區(qū)時(shí),所有的寫入都會(huì)集中在某個(gè)region中,這樣就也很容易形成熱點(diǎn)。本實(shí)施例通過對(duì)hbase告警數(shù)據(jù)表進(jìn)行預(yù)分區(qū),可以事先分配預(yù)設(shè)數(shù)量個(gè)region,當(dāng)數(shù)據(jù)寫入時(shí),根據(jù)rowkey的值直接寫入對(duì)應(yīng)的region內(nèi),使得數(shù)據(jù)能夠按照既定的分布策略進(jìn)行存儲(chǔ),這樣可以盡量避免熱點(diǎn)問題和減少頻繁分裂造成的性能問題。通過下面步驟103對(duì)所述告警數(shù)據(jù)中的每條告警記錄進(jìn)行的散列處理,可以得到hbase告警數(shù)據(jù)表的rowkey分布區(qū)間為(000,600),即所述預(yù)設(shè)數(shù)量為360,將其均勻切割為360個(gè)區(qū)間,每個(gè)區(qū)間作為一個(gè)region。例如,若集群規(guī)劃有10個(gè)regionserver,每個(gè)regionserver上能預(yù)先分配36個(gè)region。具體地,可以通過殼shell或者應(yīng)用程序編程接口api來創(chuàng)建告警數(shù)據(jù)表(alarms),例如在shell中通過create‘a(chǎn)larms’,‘h’,‘c’創(chuàng)建一個(gè)名為alarms的表,該表包含h和c兩個(gè)列族columnfamily,表alarms的邏輯視圖如下述表1所示。表1rowkeytimestampcolumnfamily(h)columnfamily(c)…………………………………………可以理解的是,告警數(shù)據(jù)是一種基于時(shí)間的流式數(shù)據(jù),網(wǎng)管告警流水號(hào)隨著時(shí)間而遞增,如果不進(jìn)行處理直接以網(wǎng)管告警流水號(hào)作為rowkey,那么幾乎所有的寫操作都會(huì)集中在某一個(gè)節(jié)點(diǎn)的同一個(gè)region上造成熱點(diǎn)。熱點(diǎn)的出現(xiàn),極大的降低了集群的性能和穩(wěn)定性,生產(chǎn)環(huán)境中應(yīng)盡量避免熱點(diǎn)的出現(xiàn)。所以,本實(shí)施例利用均衡原則,通過對(duì)rowkey進(jìn)行散列設(shè)計(jì)并對(duì)hbase告警數(shù)據(jù)表進(jìn)行預(yù)分區(qū),可以將告警數(shù)據(jù)盡量均勻的分布到hbase集群中的各個(gè)節(jié)點(diǎn)上。告警寫入時(shí),能夠盡量將put操作分布到各個(gè)節(jié)點(diǎn)上,避免了新數(shù)據(jù)全部添加到一個(gè)region中,導(dǎo)致一個(gè)節(jié)點(diǎn)負(fù)荷過高的問題。而寫入時(shí)告警數(shù)據(jù)可以均勻分布到各個(gè)region中,告警讀取時(shí)也就能將操作分布到各個(gè)region上來讀,盡可能的避免了熱點(diǎn)的出現(xiàn)。所述均衡原則主要是通過設(shè)計(jì)將操作均勻的分布到集群中的各個(gè)節(jié)點(diǎn)上,并盡量避免相關(guān)操作可能出現(xiàn)的熱點(diǎn)情況。可以理解的是,由于hbase會(huì)對(duì)每個(gè)值都保存的列族columnfamily名稱,會(huì)占用一定的存儲(chǔ)空間,所以在命名上越短越好,而不必使用一些可讀性強(qiáng)的字符串作為其名稱。因此本實(shí)施例可使用hot單詞的首字母h作為第一列族的名稱,使用cool單詞的首字母c作為第二列族的名稱,相應(yīng)地,所述步驟102中,可以將劃分為熱字段的告警字段歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的第一列族h,將劃分為冷字段的告警字段歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的第二列族c。s2、根據(jù)索引名或索引名的前n個(gè)字母確定所述hbase告警數(shù)據(jù)表的輔助索引表的region數(shù)量m,創(chuàng)建具有m個(gè)region的所述輔助索引表,使所述hbase告警數(shù)據(jù)表中的每條告警記錄的每類索引均對(duì)應(yīng)所述輔助索引表中的一條索引數(shù)據(jù),所述m個(gè)region均勻分布在hbase集群的各個(gè)區(qū)域服務(wù)器regionserver上,n和m均為正整數(shù);其中,所述hbase告警數(shù)據(jù)表的字段包括:行主鍵rowkey、時(shí)間戳timestamp、第一列族和第二列族;所述輔助索引表的字段包括:rowkey、timestamp和第三列族,索引數(shù)據(jù)的所有字段均歸屬于所述第三列族??梢岳斫獾氖?,通過對(duì)條件查詢問題的分析,hbase可以通過輔助索引表來存儲(chǔ)二級(jí)索引數(shù)據(jù),通過對(duì)每條告警數(shù)據(jù)創(chuàng)建對(duì)應(yīng)的索引來提高條件組合查詢的效率,滿足故障管理系統(tǒng)的告警數(shù)據(jù)條件查詢的需要,可以使在后續(xù)條件查詢時(shí),先根據(jù)條件搜索輔助索引表獲取滿足條件的索引,然后再根據(jù)索引信息解析告警數(shù)據(jù)的相關(guān)rowkey并去hbase告警數(shù)據(jù)表進(jìn)行查詢。由于索引數(shù)據(jù)比較簡(jiǎn)單,索引數(shù)據(jù)主要包括:索引名、索引值和網(wǎng)管告警流水號(hào),因此輔助索引表的結(jié)構(gòu)也比較簡(jiǎn)單,僅包含一個(gè)columnfamily列族,即索引數(shù)據(jù)的所有字段(即索引名、索引值和網(wǎng)管告警流水號(hào))均歸屬于所述第三列族。舉例來說,可通過shell進(jìn)行輔助索引表的創(chuàng)建:create‘a(chǎn)lmindex’,‘i’,輔助索引表的邏輯視圖如下述表21所示。表2rowkeytimestampcolumnfamily(i)……/……/在具體應(yīng)用中,所述輔助索引表中的rowkey可以由索引名+索引值+所述新的網(wǎng)管告警流水號(hào)組成,所述索引名、索引值和所述新的網(wǎng)管告警流水號(hào)之間可以以豎線分隔;其中,所述索引名為查詢條件的組合的字母或數(shù)字標(biāo)識(shí),用于唯一標(biāo)識(shí)一類索引,所述索引值為查詢條件的組合??梢岳斫獾氖牵绻麑l件組合信息和索引相關(guān)內(nèi)容作為rowkey的一部分存儲(chǔ)在rowkey中,那么僅通過rowkey即可完成對(duì)索引數(shù)據(jù)的表達(dá)和存儲(chǔ),這樣輔助索引表中的columnfamily就可以不必存儲(chǔ)其他數(shù)據(jù),能夠節(jié)約一定的存儲(chǔ)資源。輔助索引表的記錄數(shù)是hbase告警數(shù)據(jù)表的記錄數(shù)乘以索引種類數(shù),即需要將hbase告警數(shù)據(jù)表中的每條告警記錄的每類索引都對(duì)應(yīng)一條索引數(shù)據(jù),因而這種方式可以很好的減小存儲(chǔ)空間的消耗??梢岳斫獾氖牵慨?dāng)有一條告警寫入數(shù)據(jù)表時(shí),可以通過定義好的協(xié)處理器向輔助索引表寫入對(duì)應(yīng)的索引數(shù)據(jù)。例如,有5個(gè)查詢條件的組合中有13種索引,則每當(dāng)有新的告警數(shù)據(jù)寫入hbase告警數(shù)據(jù)表時(shí),需要向輔助索引表中寫入13條索引數(shù)據(jù)來完成對(duì)索引的創(chuàng)建。因此,可以根據(jù)索引名進(jìn)行預(yù)分區(qū),使得同一類索引集中在一個(gè)region中,使得寫入操作能夠均勻分布在各個(gè)region上,而讀取操作能夠在一個(gè)region中進(jìn)行以提升讀取效率。13種索引在表中按字典順序存儲(chǔ),我們將每類索引放在一個(gè)region中。需要說明的是,在索引種類不是很多時(shí),可以按索引類型進(jìn)行分區(qū),但當(dāng)索引的條件很多時(shí),索引種類也很多,只按索引名進(jìn)行分區(qū)可能會(huì)導(dǎo)致數(shù)萬個(gè)region,并不適合用于region劃分。因此在大量索引類型時(shí),預(yù)分區(qū)時(shí)可以考慮按前面一兩位字符組合進(jìn)行分區(qū)。例如,使用首字母進(jìn)行預(yù)分區(qū)最多有26個(gè)分區(qū),使用前兩個(gè)字母進(jìn)行分區(qū)最多可以得到650個(gè)分區(qū)。103、根據(jù)告警發(fā)生時(shí)間,對(duì)所述告警數(shù)據(jù)中的每條告警記錄進(jìn)行散列處理,并根據(jù)散列處理結(jié)果,按照預(yù)設(shè)行主鍵格式生成每一條告警記錄在所述hbase告警數(shù)據(jù)表中的行主鍵rowkey,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上(可參考圖2),同時(shí)向預(yù)先創(chuàng)建的輔助索引表寫入索引數(shù)據(jù)??梢岳斫獾氖牵⒘刑幚硎怯行П苊鉄狳c(diǎn)發(fā)生的一種方式。通過散列,將連續(xù)發(fā)生的告警數(shù)據(jù)分散到各個(gè)regionserver上,可以避免對(duì)同一regionserver的某個(gè)region進(jìn)行集中讀寫的熱點(diǎn)問題。為了使數(shù)據(jù)的分布盡可能均衡到各個(gè)regionserver上并且滿足告警實(shí)時(shí)更新的并發(fā)性和吞吐量的需求,所述步驟103中的“根據(jù)告警發(fā)生時(shí)間,對(duì)所述告警數(shù)據(jù)中的每條告警記錄進(jìn)行散列處理,并根據(jù)散列處理結(jié)果,按照預(yù)設(shè)行主鍵格式生成每一條告警記錄在所述hbase告警數(shù)據(jù)表中的行主鍵rowkey,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上”可以包括:針對(duì)所述告警數(shù)據(jù)中的每條告警記錄:按照預(yù)設(shè)網(wǎng)管告警流水號(hào)格式,在該條告警記錄中的通過計(jì)數(shù)器生成的網(wǎng)管告警流水號(hào)中添加該條告警記錄的告警發(fā)生時(shí)間,獲得該條告警記錄的新的網(wǎng)管告警流水號(hào),其中,所述預(yù)設(shè)格式為:告警發(fā)生時(shí)間+通過計(jì)數(shù)器生成的序列號(hào),其中所述告警發(fā)生時(shí)間的格式為:年+月+日+時(shí)+分+秒;以秒為粒度,將該條告警記錄的告警發(fā)生時(shí)間(yyyy-mm-ddhh24:mi:ss)中的各個(gè)部分按照秒ss、分mi、時(shí)hh24(24小時(shí)制)、日dd、月mm、年yy(年的后兩位數(shù))的順序排列,作為該條告警記錄的散列值hashing=ss+mi+hh24+dd+mm+yy,這樣可以使同一秒內(nèi)發(fā)生的告警記錄集中到一起,不同時(shí)刻發(fā)生的告警記錄能夠分散,例如,對(duì)于告警發(fā)生時(shí)間為2015-05-2905:44:30的一條告警記錄,可計(jì)算得到散列值為304405290515,按圖2中的分區(qū),該條告警記錄可定位到最后一個(gè)regionserver的某個(gè)region上;將該條告警記錄的散列值作為該條告警記錄在所述hbase告警數(shù)據(jù)表的行主鍵rowkey的前綴,將該條告警記錄的新的網(wǎng)管告警流水號(hào)中的通過計(jì)數(shù)器生成的序列號(hào)作為該條告警記錄在所述hbase告警數(shù)據(jù)表的rowkey的后綴,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上,能夠保證告警數(shù)據(jù)在regionserver上的均衡分布。具體地,所述hbase告警數(shù)據(jù)表的rowkey的前綴與后綴之間可以以豎線分隔??梢岳斫獾氖?,上述通過計(jì)數(shù)器生成的序列號(hào)可以為四位序列號(hào),該序列號(hào)主要是為了標(biāo)識(shí)出發(fā)生在同一秒內(nèi)的各條告警數(shù)據(jù),避免同一秒內(nèi)發(fā)生的告警得到一個(gè)相同的流水號(hào)。四位序列號(hào)的格式為數(shù)字0-9的組合,即從0000-9999,一共104組合。一般來說,每秒發(fā)生超過一萬條告警是很嚴(yán)重的生產(chǎn)事故,這種的情況幾乎不會(huì)發(fā)生,因此0-9的數(shù)字組合在通常情況下能夠滿足實(shí)際系統(tǒng)的需要。當(dāng)然為了擴(kuò)展,在以后可以根據(jù)實(shí)際情況需求,通過計(jì)數(shù)器生成的序列號(hào)也可以為大于四位的序列號(hào),即在數(shù)字0-9的組合的基礎(chǔ)上再增加其他組合,比如大寫字母a-z。將告警發(fā)生時(shí)間包含在網(wǎng)管告警流水號(hào)中后,可以通過網(wǎng)管告警流水號(hào)直接獲取告警的發(fā)生時(shí)間,也能通過告警發(fā)生時(shí)間確定告警流水號(hào)的范圍。以此類型的網(wǎng)管告警流水號(hào)作為rowkey的一部分,對(duì)數(shù)據(jù)的查詢性能有一定的幫助。舉例來說,若上述通過計(jì)數(shù)器生成的序列號(hào)為四位序列號(hào),2015-05-2905:44:30的一條告警記錄,根據(jù)告警流水號(hào)生成規(guī)則生成的新的網(wǎng)管告警流水號(hào)為201602290544300001,由散列方式計(jì)算得到散列結(jié)果為304405290216,則該條告警記錄的rowkey為:3044052902160001,將散列結(jié)果(rowkey的前綴)、流水序列號(hào)(rowkey的后綴)以豎線分隔,得到的rowkey為:304405290216|0001。通過這種生成方式,rowkey的大小可以有16個(gè)字節(jié),相對(duì)較小并且為8字節(jié)的倍數(shù),也滿足內(nèi)存對(duì)齊的要求,能夠充分利用操作系統(tǒng)的性能??梢岳斫獾氖?,告警數(shù)據(jù)是時(shí)間序列類型的數(shù)據(jù),如果不對(duì)rowkey進(jìn)行散列處理,就會(huì)導(dǎo)致大量操作集中在一個(gè)region上的熱點(diǎn)問題,因此rowkey的設(shè)計(jì)應(yīng)盡可能的均勻地分布到各個(gè)region上。另外,過長的rowkey會(huì)占用更多的存儲(chǔ)開銷和降低內(nèi)存利用率,進(jìn)而影響到服務(wù)器的性能,因此rowkey可以不必使用可讀性很強(qiáng)的字符串,而且其長度不易過大,一般建議在100字節(jié)以內(nèi)。通過rowkey的這種設(shè)計(jì)方式能夠帶來兩個(gè)方面的優(yōu)勢(shì):首先以時(shí)間的時(shí)分秒進(jìn)行的散列可以將告警數(shù)據(jù)相對(duì)均勻的分布到各個(gè)region上,能夠較好的避免熱點(diǎn)問題的發(fā)生;另外,由于網(wǎng)管告警流水號(hào)中包含有告警發(fā)生時(shí)間,可以通過網(wǎng)管告警流水號(hào)直接轉(zhuǎn)化為rowkey,這樣可以通過rowkey直接操作相關(guān)的告警數(shù)據(jù),保證了根據(jù)網(wǎng)管告警流水號(hào)進(jìn)行存取操作的效率,對(duì)于告警寫入/更新、告警詳情查詢的需求能夠保證一個(gè)很好的性能??梢岳斫獾氖?,每條告警從發(fā)生到處理入庫需要的時(shí)間會(huì)有差別(有些延時(shí)小,有些延時(shí)大),這樣同一個(gè)時(shí)刻內(nèi)發(fā)生的告警記錄經(jīng)過處理后,入庫的時(shí)間點(diǎn)一般不會(huì)集中在一起。例如告警發(fā)生時(shí)間為2015-05-2905:44:20的一條告警記錄,經(jīng)過處理后可能入庫時(shí)間在2015-05-2905:45:11,而同一時(shí)刻的其他告警入庫時(shí)間可能在其他時(shí)間,如2015-05-2905:45:38。在具體應(yīng)用中,在所述步驟103之后,本實(shí)施例所述方法還可以包括圖中未示出的步驟104-105:104、獲取查詢條件并進(jìn)行組合,獲得查詢組合的索引名,將所獲取的查詢條件按照該索引名所對(duì)應(yīng)的索引類型的預(yù)設(shè)條件順序進(jìn)行拼接以計(jì)算出索引值,并將所獲取的查詢條件中的開始時(shí)間和結(jié)束時(shí)間分別轉(zhuǎn)化為所述新的網(wǎng)管告警流水號(hào)的格式,獲得滿足所獲取的查詢條件的rowkey范圍。在具體應(yīng)用中,所述查詢條件的字段可以包括:網(wǎng)管告警流水號(hào)、開始時(shí)間、結(jié)束時(shí)間、地市、設(shè)備廠商、設(shè)備類型、告警專業(yè)、告警級(jí)別、告警標(biāo)題、告警類別、響應(yīng)級(jí)別、工程狀態(tài)、工單狀態(tài)、派單狀態(tài)、清除狀態(tài)、網(wǎng)元在網(wǎng)狀態(tài)等,本實(shí)施例并不對(duì)其進(jìn)行限制;相應(yīng)地,所述查詢條件的組合可以為:將網(wǎng)管告警流水號(hào)、開始時(shí)間和結(jié)束時(shí)間三個(gè)查詢條件之外的其他查詢條件進(jìn)行組合作為索引值,然后去掉重復(fù)組合、前綴組合以及不需要的組合,得到全部查詢條件的組合;其中,所述重復(fù)組合為條件相同但順序不同的組合類型,比如地市+告警專業(yè)+設(shè)備類型和設(shè)備類型+告警專業(yè)+地市,在實(shí)際查詢時(shí)可以根據(jù)查詢條件拼接出指定順序的組合,因此重復(fù)組合是多余的,只保留一個(gè)即可;所述前綴組合為一個(gè)查詢條件的組合是另一個(gè)查詢條件的組合的前綴,比如地市+告警專業(yè)+設(shè)備類型就是地市+告警專業(yè)+設(shè)備類型+告警級(jí)別的前綴,按條件查詢時(shí)滿足后者的數(shù)據(jù)必定滿足前者,可以通過后者的索引項(xiàng)來查詢,因此前綴組合是多余的,可以去掉;最后將不需要的條件組合去掉,通過去除冗余索引可以提高索引的利用率。舉例來說,2015-05-2905:44:20的一條告警記錄,創(chuàng)建基于地市和專業(yè)查詢的名為cm的索引,可通過索引名+地市+專業(yè)+網(wǎng)管告警流水號(hào)生成,即:cm濟(jì)南市交換專業(yè)201602290544200001;為了直觀,將各個(gè)部分以豎線分隔,即寫入輔助索引表中的rowkey為:cm|濟(jì)南市|交換專業(yè)|20160229054420|0001。以地市、設(shè)備廠商、設(shè)備類型、告警專業(yè)、告警級(jí)別為例,每個(gè)條件以字母或數(shù)字標(biāo)識(shí),即地市(a)、設(shè)備廠商(b)、設(shè)備類型(c)、告警專業(yè)(d)、告警級(jí)別(e),則處理后的查詢條件的組合為abcde、bcde、cdea、deab、eabc、deb、ebc、eac、acd、abd、bd、ce、da共十三種。根據(jù)輔助索引表rowkey的生成方式,使用條件組合中的字符作為索引名,然后將該類索引中的各個(gè)條件進(jìn)行組合形成索引值,并在最后添加網(wǎng)管告警流水號(hào),得到索引表的rowkey??梢岳斫獾氖?,所述步驟104可以這樣可以快速地鎖定滿足查詢條件的rowkey范圍,提高條件查詢的性能。舉例來說,查詢2016-01-1500:00:00到2016-01-1508:00:00的濟(jì)南市交換專業(yè)發(fā)生的一級(jí)告警情況,通過前面的查詢條件的組合(地市a,告警專業(yè)d、告警級(jí)別e)可以使用deab這一類索引,拼接查詢條件為:濟(jì)南市|交換專業(yè)|一級(jí)告警,并將開始時(shí)間轉(zhuǎn)換為告警流水號(hào)格式為20160115000000|0000,將結(jié)束時(shí)間轉(zhuǎn)換為告警流水號(hào)格式為20160115080000|9999,則可以確定滿足查詢條件的區(qū)間為:(deab|濟(jì)南市|交換專業(yè)|一級(jí)告警|20160115000000|0000,deab|濟(jì)南市|交換專業(yè)|一級(jí)告警|20160115080000|9999)。105、利用scan(startrowkey,endrowkey)操作,獲取所述滿足所獲取的查詢條件的rowkey范圍對(duì)應(yīng)的索引數(shù)據(jù),并利用該索引數(shù)據(jù)rowkey中的網(wǎng)管告警流水號(hào)對(duì)所述hbase告警數(shù)據(jù)表進(jìn)行查詢,以獲得滿足所獲取的查詢條件的告警數(shù)據(jù)。舉例來說,本實(shí)施例對(duì)于hbase告警數(shù)據(jù)表按散列值的前三位預(yù)先劃分360個(gè)區(qū)間,以確保請(qǐng)求能夠相對(duì)均勻的分布到各個(gè)regionserver上,告警查詢的主要條件有廠家(a)、地市(b)、設(shè)備類型(c)、告警專業(yè)(d)、告警級(jí)別(e)、退服類型(f)、工程狀態(tài)(g)、響應(yīng)級(jí)別(h)、預(yù)處理狀態(tài)(i)、覆蓋場(chǎng)景(j)、標(biāo)準(zhǔn)化狀態(tài)(k)、告警狀態(tài)(l)、派單方式(m)、網(wǎng)絡(luò)一級(jí)分類(n)、梳理表版本(o)、告警類別(p)等16個(gè)條件,條件組合種類太多(去除前綴、重復(fù)和不用的,整理后有2000左右),不適合按索引名劃分,因此使用首字母進(jìn)行輔助索引表almindex的預(yù)分區(qū)劃分,劃分為17個(gè)區(qū)間。在進(jìn)行表的預(yù)分區(qū)后,通過webui可查看region分布情況。圖.regionserver狀態(tài)。經(jīng)過hbase存儲(chǔ)告警數(shù)據(jù)的改造后,隨機(jī)選取200條告警的告警流水號(hào),在按流水號(hào)查詢單條告警數(shù)據(jù)時(shí),通過統(tǒng)計(jì)分析可發(fā)現(xiàn)查詢耗時(shí)一般在0.2s~0.25s,參見圖3。按條件進(jìn)行查詢時(shí)查詢效率相對(duì)傳統(tǒng)的告警存取方式有較大的改善。通過分別對(duì)一天、一周、一月、六個(gè)月等幾個(gè)時(shí)間段內(nèi)的滿足三個(gè)組合條件(地市為濟(jì)南市,廠家為華為,設(shè)備類型為交換機(jī))的告警情況的進(jìn)行查詢并分析平均耗時(shí)情況,可以發(fā)現(xiàn)性能有明顯提升,參見圖4。另外,hbase可以無縫的支持spark計(jì)算集群對(duì)告警數(shù)據(jù)的需求,spark能夠直接通過api直接來操作hbase,獲取存儲(chǔ)的hbase上的數(shù)據(jù)內(nèi)容,方便了spark對(duì)數(shù)據(jù)集的獲取。并且,由于hbase列存儲(chǔ)的特性,可以只獲取需要分析的字段內(nèi)容,而不用將所有的一百多個(gè)字段讀入內(nèi)存中,降低了資源消耗和提升了數(shù)據(jù)獲取效率。本實(shí)施例引入hbase后,故障管理系統(tǒng)將經(jīng)過告警組件處理后的標(biāo)準(zhǔn)告警數(shù)據(jù)存儲(chǔ)在hbase中,并在使用時(shí)通過查詢接口從hbase中進(jìn)行數(shù)據(jù)的查詢。替換原始告警數(shù)據(jù)庫后,故障管理系統(tǒng)的告警處理組件接口不變,通過調(diào)用相關(guān)的告警處理接口完成對(duì)hbase的操作。本實(shí)施例的基于hbase的告警數(shù)據(jù)存儲(chǔ)方法,能夠?qū)崿F(xiàn)對(duì)告警數(shù)據(jù)進(jìn)行存儲(chǔ),以使后續(xù)能查詢到最新的告警數(shù)據(jù),滿足告警數(shù)據(jù)存取需求,可以顯著提高后續(xù)對(duì)告警數(shù)據(jù)查詢的效率。本實(shí)施例所述方法將hbase應(yīng)用于運(yùn)營商故障管理系統(tǒng)的告警數(shù)據(jù)存儲(chǔ)中來解決目前的告警數(shù)據(jù)庫瓶頸問題,提升告警數(shù)據(jù)的寫入和讀取效率,期望能夠更好的為故障管理系統(tǒng)和數(shù)據(jù)挖掘任務(wù)提供數(shù)據(jù)服務(wù)。圖5示出了本發(fā)明一實(shí)施例提供的一種基于hbase的告警數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖,如圖5所示,本實(shí)施例的基于hbase的告警數(shù)據(jù)存儲(chǔ)裝置,包括:第一獲取模塊51、劃分模塊52和處理模塊53;其中:第一獲取模塊51,用于獲取告警數(shù)據(jù)和所述告警數(shù)據(jù)中的告警字段在預(yù)設(shè)時(shí)間段內(nèi)的使用頻率;劃分模塊52,用于根據(jù)所述使用頻率,將所述告警數(shù)據(jù)中的所有告警字段劃分為熱字段和冷字段,并將劃分為熱字段的告警字段和劃分為冷字段的告警字段分別歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的不同列族;處理模塊53,用于根據(jù)告警發(fā)生時(shí)間,對(duì)所述告警數(shù)據(jù)中的每條告警記錄進(jìn)行散列處理,并根據(jù)散列處理結(jié)果,按照預(yù)設(shè)行主鍵格式生成每一條告警記錄在所述hbase告警數(shù)據(jù)表中的行主鍵rowkey,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上,同時(shí)向預(yù)先創(chuàng)建的輔助索引表寫入索引數(shù)據(jù)。在具體應(yīng)用中,本實(shí)施例所述裝置還可以包括圖中未示出的:第一創(chuàng)建模塊,用于創(chuàng)建具有預(yù)設(shè)數(shù)量個(gè)region的hbase告警數(shù)據(jù)表,所述預(yù)設(shè)數(shù)量個(gè)region均勻分布在hbase集群的各個(gè)區(qū)域服務(wù)器regionserver上;第二創(chuàng)建模塊,用于根據(jù)索引名或索引名的前n個(gè)字母確定所述hbase告警數(shù)據(jù)表的輔助索引表的region數(shù)量m,創(chuàng)建具有m個(gè)region的所述輔助索引表,使所述hbase告警數(shù)據(jù)表中的每條告警記錄的每類索引均對(duì)應(yīng)所述輔助索引表中的一條索引數(shù)據(jù),所述m個(gè)region均勻分布在hbase集群的各個(gè)區(qū)域服務(wù)器regionserver上,n和m均為正整數(shù);其中,所述hbase告警數(shù)據(jù)表的字段包括:行主鍵rowkey、時(shí)間戳timestamp、第一列族和第二列族;所述輔助索引表的字段包括:rowkey、timestamp和第三列族,索引數(shù)據(jù)的所有字段均歸屬于所述第三列族。在具體應(yīng)用中,本實(shí)施例所述裝置還可以包括圖中未示出的:第二獲取模塊,用于獲取查詢條件并進(jìn)行組合,獲得查詢組合的索引名,將所獲取的查詢條件按照該索引名所對(duì)應(yīng)的索引類型的預(yù)設(shè)條件順序進(jìn)行拼接以計(jì)算出索引值,并將所獲取的查詢條件中的開始時(shí)間和結(jié)束時(shí)間分別轉(zhuǎn)化為所述新的網(wǎng)管告警流水號(hào)的格式,獲得滿足所獲取的查詢條件的rowkey范圍;查詢模塊,用于利用scan操作,獲取所述滿足所獲取的查詢條件的rowkey范圍對(duì)應(yīng)的索引數(shù)據(jù),并利用該索引數(shù)據(jù)rowkey中的網(wǎng)管告警流水號(hào)對(duì)所述hbase告警數(shù)據(jù)表進(jìn)行查詢,以獲得滿足所獲取的查詢條件的告警數(shù)據(jù)。本實(shí)施例的基于hbase的告警數(shù)據(jù)存儲(chǔ)裝置,可以用于執(zhí)行前述方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。本實(shí)施例的基于hbase的告警數(shù)據(jù)存儲(chǔ)裝置,能夠?qū)崿F(xiàn)對(duì)告警數(shù)據(jù)進(jìn)行存儲(chǔ),以使后續(xù)能查詢到最新的告警數(shù)據(jù),滿足告警數(shù)據(jù)存取需求,可以顯著提高后續(xù)對(duì)告警數(shù)據(jù)查詢的效率。圖6示出了本發(fā)明實(shí)施例提供的一種電子設(shè)備的實(shí)體結(jié)構(gòu)示意圖,如圖6所示,該電子設(shè)備可以包括:處理器11、存儲(chǔ)器12、總線13及存儲(chǔ)在存儲(chǔ)器12上并可在處理器11上運(yùn)行的計(jì)算機(jī)程序;其中,所述處理器11,存儲(chǔ)器12通過所述總線13完成相互間的通信;所述處理器11執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)上述各方法實(shí)施例所提供的方法,例如包括:獲取告警數(shù)據(jù)和所述告警數(shù)據(jù)中的告警字段在預(yù)設(shè)時(shí)間段內(nèi)的使用頻率;根據(jù)所述使用頻率,將所述告警數(shù)據(jù)中的所有告警字段劃分為熱字段和冷字段,并將劃分為熱字段的告警字段和劃分為冷字段的告警字段分別歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的不同列族;根據(jù)告警發(fā)生時(shí)間,對(duì)所述告警數(shù)據(jù)中的每條告警記錄進(jìn)行散列處理,并根據(jù)散列處理結(jié)果,按照預(yù)設(shè)行主鍵格式生成每一條告警記錄在所述hbase告警數(shù)據(jù)表中的行主鍵rowkey,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上,同時(shí)向預(yù)先創(chuàng)建的輔助索引表寫入索引數(shù)據(jù)。本發(fā)明實(shí)施例提供一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述各方法實(shí)施例所提供的方法,例如包括:獲取告警數(shù)據(jù)和所述告警數(shù)據(jù)中的告警字段在預(yù)設(shè)時(shí)間段內(nèi)的使用頻率;根據(jù)所述使用頻率,將所述告警數(shù)據(jù)中的所有告警字段劃分為熱字段和冷字段,并將劃分為熱字段的告警字段和劃分為冷字段的告警字段分別歸屬到預(yù)先創(chuàng)建的hbase告警數(shù)據(jù)表中的不同列族;根據(jù)告警發(fā)生時(shí)間,對(duì)所述告警數(shù)據(jù)中的每條告警記錄進(jìn)行散列處理,并根據(jù)散列處理結(jié)果,按照預(yù)設(shè)行主鍵格式生成每一條告警記錄在所述hbase告警數(shù)據(jù)表中的行主鍵rowkey,以使不同時(shí)刻的告警記錄均勻分散到所述hbase告警數(shù)據(jù)表的各個(gè)region上,同時(shí)向預(yù)先創(chuàng)建的輔助索引表寫入索引數(shù)據(jù)。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、裝置、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置/系統(tǒng)。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。術(shù)語“上”、“下”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡(jiǎn)化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對(duì)本發(fā)明的限制。除非另有明確的規(guī)定和限定,術(shù)語“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個(gè)元件內(nèi)部的連通。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語在本發(fā)明中的具體含義。本發(fā)明的說明書中,說明了大量具體細(xì)節(jié)。然而能夠理解的是,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本發(fā)明公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋呈反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。本發(fā)明并不局限于任何單一的方面,也不局限于任何單一的實(shí)施例,也不局限于這些方面和/或?qū)嵤├娜我饨M合和/或置換。而且,可以單獨(dú)使用本發(fā)明的每個(gè)方面和/或?qū)嵤├蛘吲c一個(gè)或更多其他方面和/或其實(shí)施例結(jié)合使用。最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說明書的范圍當(dāng)中。當(dāng)前第1頁12