一種無線電監(jiān)測數(shù)據查詢方法
【專利摘要】本發(fā)明公開了一種無線電監(jiān)測數(shù)據查詢方法,包括通用接口模塊、數(shù)據傳輸模塊、HBase數(shù)據庫和歷史數(shù)據編排模塊;通用接口模塊、數(shù)據傳輸模塊和HBase數(shù)據庫依次連接,歷史數(shù)據編排模塊與HBase數(shù)據庫連接,本發(fā)明通過rowkey索引,將無線電監(jiān)測數(shù)據逐條載入HBase數(shù)據庫中,本發(fā)明具有查詢速度快、查詢精度高,可對海量半結構化或者非結構化數(shù)據進行快速實時回放的特點。
【專利說明】
一種無線電監(jiān)測數(shù)據查詢方法
技術領域
[0001]本發(fā)明涉及無線電歷史監(jiān)測數(shù)據回放技術領域,尤其是涉及一種可對海量半結構化或者非結構化數(shù)據進行快速實時回放的無線電監(jiān)測數(shù)據查詢方法。
【背景技術】
[0002]無線電監(jiān)測是大型運動會、國際會議等活動的安全保障和實時監(jiān)督檢查的重要手段,無線電監(jiān)測工作用于掌握頻率情況、保障無線電頻率,迅速查處有害干擾。
[0003]隨著監(jiān)測設備的發(fā)展和監(jiān)測需求的細化,無線電監(jiān)測數(shù)據的數(shù)量呈爆炸式增長,通常一臺設備在幾個月內的監(jiān)測數(shù)據可達到TB數(shù)據級,并且為非結構化或者半結構化監(jiān)控記錄,運用傳統(tǒng)的存儲和處理方法已經無法滿足數(shù)據查詢的需要;其次,為了節(jié)省存儲空間,無線電監(jiān)控數(shù)據通常采用字節(jié)流的形式進行存儲,而觀測人員需要在第一時間定位并顯示監(jiān)測數(shù)據。
[0004]目前,無線電監(jiān)測數(shù)據的歷史實時回放,通常有以下兩種方案:
[0005]采用分布式的Sqlite數(shù)據庫的形式對監(jiān)測數(shù)據進行逐條存儲,每個分布式的Sqlite大小為2G。該方法適用于低頻采樣的數(shù)據設備,且存儲監(jiān)測數(shù)據的歷史跨度很小,往往只有幾臺設備幾天的數(shù)據量。
[0006]采用文件系統(tǒng)映射的方法,歷史監(jiān)測數(shù)據以文件的形式保存,文件的路徑保存于關系型數(shù)據庫并顯示給用戶,用戶通過文件逐條查詢記錄。觀測人員在查找數(shù)據時,需要逐條觀測數(shù)據,從而定位到需要的觀測點,需耗費大量的人力精力,觀測人員事先無法概覽整個觀測數(shù)據。
[0007]可見,目前無線電監(jiān)測方法不能有效的對海量的半結構化或者非結構化的數(shù)據進行快速實時回放。
【發(fā)明內容】
[0008]本發(fā)明的發(fā)明目的是為了克服現(xiàn)有技術中的無線電監(jiān)測方法對海量半結構化或者非結構化數(shù)據進行快速實時回放的不足,提供了一種可對海量半結構化或者非結構化數(shù)據進行快速實時回放的無線電監(jiān)測數(shù)據查詢方法。
[0009]為了實現(xiàn)上述目的,本發(fā)明采用以下技術方案:
[0010]一種無線電監(jiān)測數(shù)據查詢方法,包括通用接口模塊、數(shù)據傳輸模塊、HBase數(shù)據庫和歷史數(shù)據編排模塊;通用接口模塊、數(shù)據傳輸模塊和HBase數(shù)據庫依次連接,歷史數(shù)據編排模塊與HBase數(shù)據庫連接;所述查詢方法包括如下步驟:
[0011](1-1)歷史數(shù)據編排模塊將原始監(jiān)測數(shù)據的每一條記錄解封后,讀取記錄的每個數(shù)據幀,根據每個數(shù)據幀的幀內信息生成rowkey索引,歷史數(shù)據編排模塊通過API接口將每個數(shù)據幀、與每個數(shù)據幀關聯(lián)的rowkey索引批量導入HBase數(shù)據庫;HBase數(shù)據庫中設有若干個設備表;
[0012](1-2)通用接口模塊接收用戶的查詢請求,并將查詢請求發(fā)送給數(shù)據傳輸模塊;
[0013](1-3)數(shù)據傳輸模塊收到查詢請求后,以queryid+” query”字段查詢數(shù)據傳輸模塊的消息表,如果查到消息表,則轉入步驟(1-4);
[0014]如果消息表不存在,數(shù)據傳輸模塊生成消息表(5),消息表包括傳輸集群kafka的生產者P1、消費者c 1、訂閱消息query i d+” query”、生產者p2、消費者c2和訂閱消息query i d+
U, ”
request ;
[0015](1-4)數(shù)據傳輸模塊的kafka集群(6)將查詢內容通過pI發(fā)送到cI,cI接收到查詢內容后,查詢HBase的各個設備表中與查詢內容的查詢設備ID相對應的設備表,如果沒找到設備表,則返回一個查詢失敗的消息格式;
[0016]如果找到設備表,以查詢內容的記錄開始時間Tl、記錄結束時間T2、服務ID和查詢頻率查詢各個rowkey索引;如果找不到與服務ID或者查詢頻率匹配的rowkey索引,則返回查詢失敗的消息;
[0017]如果找到與服務ID和查詢頻率匹配并且TlS記錄時間彡T2的若干個rowkey索引,根據各個rowkey索引提取HBase數(shù)據庫的各個數(shù)據幀,各個數(shù)據幀構成查詢到的歷史記錄;
[0018](1-5)查詢消息表,通過Cl查詢與其對應的p2,p2接收歷史記錄后,將歷史記錄發(fā)給c2,c2將歷史記錄發(fā)送給查詢用戶。
[0019]本發(fā)明通過設計的rowkey索引,將無線電監(jiān)測數(shù)據逐條載入HBase數(shù)據庫中,并有效防止監(jiān)測設備過快時在時間重復時記錄的重復,支持用戶逐記錄快速查詢;通過數(shù)據傳輸模塊的查詢條件與rowkey的對應,實現(xiàn)了用戶的任意、快速實時的定位并回放數(shù)據。
[0020]作為優(yōu)選,所述rowkey索引包括I個字節(jié)的散列字段、4個字節(jié)的時間戳字段、I個字節(jié)的監(jiān)測服務編碼字段、4個字節(jié)的監(jiān)測頻率字段和4個字節(jié)的負載字段。
[0021]本發(fā)明通過rowkey索引生成算法控制rowkey索引的長度和內容,在滿足區(qū)分各條記錄的同時,又通過縮短rowkey索引的各個字段,有效降低了存儲空間,使歷史數(shù)據的查詢效率有效提升。
[0022]作為優(yōu)選,所述時間戳字段利用如下步驟生成:
[0023]歷史數(shù)據編排模塊讀取每幀數(shù)據的幀頭,獲取每幀數(shù)據的記錄時間,并將記錄時間轉化為毫秒數(shù),將毫秒數(shù)存入時間戳字段。
[0024]將記錄時間的毫秒數(shù)保存于rowkey的時間戳字段4個字節(jié)中,使精確到毫秒的時間戳保存從17字節(jié)下降到4個字節(jié),有效節(jié)約了rowkey的字節(jié)空間,提高了查詢效率。
[0025]作為優(yōu)選,所述散列字段利用如下步驟生成:
[0026]歷史數(shù)據編排模塊將毫秒數(shù)以256取余,其結果保存于散列字段中。
[0027]作為優(yōu)選,所述監(jiān)測服務編碼字段利用如下步驟生成:
[0028]歷史數(shù)據編排模塊獲取每幀數(shù)據的監(jiān)測服務編碼,將監(jiān)測服務編碼保存在監(jiān)測服務編碼字段中。根據國家標準規(guī)定,無線電監(jiān)測需要滿足26種監(jiān)測服務,分別從I到26開始編碼,存入監(jiān)測服務編碼字段中;27至265可用于后續(xù)擴展。
[0029]作為優(yōu)選,所述負載編碼字段利用如下步驟生成:
[0030]歷史數(shù)據編排模塊獲取每幀數(shù)據的幀負載,讀取幀負載每個字段的值L;利用公式S = 31-1計算每個字段值的變換值S,將各個字段的S相加得到S7,將S7寫入rowkey索引的負載編碼字段中。
[0031]根據國家標準規(guī)定,無線電監(jiān)測幀負載中需要實現(xiàn)18個選項。因此只需要占用18位,空余的14位后續(xù)擴展用。
[0032]作為優(yōu)選,所述步驟(1-2)中,通用接口模塊將查詢請求以XML的形式發(fā)送給數(shù)據傳輸模塊。
[0033]因此,本發(fā)明具有如下有益效果:查詢速度快、查詢精度高,可對海量半結構化或者非結構化數(shù)據進行快速實時回放。
【附圖說明】
[0034]圖1是本發(fā)明的一種原理不意圖;
[0035]圖2是本發(fā)明的一種流程圖。
[0036]圖中:通用接口模塊1、數(shù)據傳輸模塊2、HBase數(shù)據庫3、歷史數(shù)據編排模塊4、消息表5、kafka集群6。
【具體實施方式】
[0037]下面結合附圖和【具體實施方式】對本發(fā)明做進一步的描述。
[0038]如圖1所示的實施例是一種無線電監(jiān)測數(shù)據查詢方法,包括通用接口模塊1、數(shù)據傳輸模塊2、HBase數(shù)據庫3和歷史數(shù)據編排模塊4;通用接口模塊、數(shù)據傳輸模塊和HBase數(shù)據庫依次連接,歷史數(shù)據編排模塊與HBase數(shù)據庫連接;
[0039]如圖2所示,查詢方法包括如下步驟:
[0040]步驟100,生成rowkey索引并將原始監(jiān)測數(shù)據導入HBase數(shù)據庫
[0041]歷史數(shù)據編排模塊將原始監(jiān)測數(shù)據的每一條記錄解封后,讀取記錄的每個數(shù)據幀,根據每個數(shù)據幀的幀內信息生成rowkey索引,歷史數(shù)據編排模塊通過API接口將每個數(shù)據幀、與每個數(shù)據幀關聯(lián)的rowkey索引批量導入HBase數(shù)據庫;HBase數(shù)據庫中設有若干個設備表;
[0042]步驟200,接收查詢請求
[0043]通用接口模塊接收用戶的查詢請求,通用接口模塊將查詢請求以XML的形式發(fā)送給數(shù)據傳輸模塊;
[0044]步驟300,查詢消息表
[0045]數(shù)據傳輸模塊收到請求后,以queryid+”query”字段查詢數(shù)據傳輸模塊的消息表,如果查到消息表,則轉入步驟400;
[0046]查到消息表,說明接收到的是再次查詢請求,數(shù)據傳輸模塊中已經有消息表,
[0047]如果消息表不存在,說明是第一次收到查詢請求,數(shù)據傳輸模塊中還沒有建立消息表,如圖1所示的數(shù)據傳輸模塊生成消息表5,消息表包括傳輸集群kafka的生產者pl、消費者c 1、訂閱消息query i d+” query”、生產者P 2、消費者c 2和訂閱消息query i d+ “reque s t” ;
[0048]步驟400,查詢歷史記錄
[0049]數(shù)據傳輸模塊的如圖1所示的kafka集群6將查詢內容通過pl發(fā)送到cl,cl接收到查詢內容后,查詢HBase的各個設備表中與查詢內容的查詢設備ID相對應的設備表,如果沒找到設備表,則返回一個查詢失敗的消息格式;
[0050]如果找到設備表,以查詢內容的記錄開始時間Tl、記錄結束時間T2、服務ID和查詢頻率查詢各個rowkey索引;如果找不到與服務ID或者查詢頻率匹配的rowkey索引,則返回查詢失敗的消息;
[0051 ] 如果找到與服務ID和查詢頻率匹配并且TlS記錄時間<T2的若干個rowkey索引,根據各個rowkey索引提取HBase數(shù)據庫的各個數(shù)據幀,各個數(shù)據幀構成查詢到的歷史記錄;
[0052]步驟500,給查詢用戶返回歷史記錄
[0053]查詢消息表,通過cl查詢與其對應的p2,p2接收歷史記錄后,將歷史記錄發(fā)給c2,c2將歷史記錄發(fā)送給查詢用戶。
[0054]rowkey索引包括I個字節(jié)的散列字段、4個字節(jié)的時間戳字段、I個字節(jié)的監(jiān)測服務編碼字段、4個字節(jié)的監(jiān)測頻率字段和4個字節(jié)的負載字段。
[0055]歷史數(shù)據編排模塊讀取每幀數(shù)據的幀頭,獲取每幀數(shù)據的記錄時間,并將記錄時間轉化為毫秒數(shù),將毫秒數(shù)存入時間戳字段。
[0056]歷史數(shù)據編排模塊將毫秒數(shù)以256取余,其結果保存于散列字段中。
[0057]歷史數(shù)據編排模塊獲取每幀數(shù)據的監(jiān)測服務編碼,將監(jiān)測服務編碼保存在監(jiān)測服務編碼字段中。
[0058]歷史數(shù)據編排模塊獲取每幀數(shù)據的幀負載,讀取幀負載所有字段的值并相加得到S,將S寫入rowkey索引的負載編碼字段中。
[0059]例如,某幀數(shù)據的監(jiān)測服務編碼和監(jiān)測記錄為<監(jiān)測服務編號:5,(幀頭:20160511121415879,幀負載:DT = 2 DT = 6 DT = 8 fre = 91.8)> ;表示該幀數(shù)據由服務編號為5的監(jiān)測服務產生,且?guī)^中時間為2016年05月11日12點14分15秒879毫秒,幀負載中含有的選項值為2、6、8,監(jiān)測頻率為91.8ΜΗΖ ;歷史數(shù)據編排模塊將幀頭中的20160511121415879 時間轉化為毫秒數(shù) 1462896855879,對毫秒數(shù) 1462896855879 取256 的余為71;歷史數(shù)據編排模塊將71放入rowkey的散列字段中,將1462896855879放入rowkey的時間戳字段中,將監(jiān)測服務編碼5放入rowkey的監(jiān)測服務編碼中,將幀負載中的91.8頻率放入rowkey字段的監(jiān)測頻率字段中,利用公式S = 2L-1計算每個字段值的變換值S,DT = 2 DT = 6DT = 8的變換值S分別為3,63,255 4' =3+63+255 = 321;最終形成的rowkey索引的字段值為711462896855879 5 91.8 321,即rowkey索引用14個字節(jié)表示了散列字段、時間戳字段、監(jiān)測服務編碼字段、監(jiān)測頻率字段、負載編碼字段。
[0060]經過試驗計算,本發(fā)明的大數(shù)據實時回放方法在PB級的監(jiān)控數(shù)據能以秒級或者毫秒級定位到用戶所需要的數(shù)據,快速呈現(xiàn)給用戶,同時用戶能夠通過用戶查詢參數(shù)控制獲取數(shù)據的速度,實現(xiàn)了大數(shù)據環(huán)境下用戶的按需獲取數(shù)據;得益于rowkey索引帶有幀負載內容的設計,在采集過快、幀相同時也不會出現(xiàn)幀重復和丟失的現(xiàn)象;并且通過rowkey索引的生成算法,能夠節(jié)省HBase的reg1n server的50%的存儲空間,減少了磁盤的存儲空間,通過幀負載內容到rowkey的映射算法,大大提升了大數(shù)據的查詢效率。
[0061]應理解,本實施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。此外應理解,在閱讀了本發(fā)明講授的內容之后,本領域技術人員可以對本發(fā)明作各種改動或修改,這些等價形式同樣落于本申請所附權利要求書所限定的范圍。
【主權項】
1.一種無線電監(jiān)測數(shù)據查詢方法,其特征是,包括通用接口模塊(I)、數(shù)據傳輸模塊(2)、HBase數(shù)據庫(3)和歷史數(shù)據編排模塊(4);通用接口模塊、數(shù)據傳輸模塊和HBase數(shù)據庫依次連接,歷史數(shù)據編排模塊與HBase數(shù)據庫連接;所述查詢方法包括如下步驟: (1-1)歷史數(shù)據編排模塊將原始監(jiān)測數(shù)據的每一條記錄解封后,讀取記錄的每個數(shù)據幀,根據每個數(shù)據幀的幀內信息生成rowkey索引,歷史數(shù)據編排模塊通過API接口將每個數(shù)據幀、與每個數(shù)據幀關聯(lián)的rowkey索引批量導入HBase數(shù)據庫;HBase數(shù)據庫中設有若干個設備表; (1-2)通用接口模塊接收用戶的查詢請求,并將查詢請求發(fā)送給數(shù)據傳輸模塊; (1-3)數(shù)據傳輸模塊收到查詢請求后,以queryid+” query”字段查詢數(shù)據傳輸模塊的消息表,如果查到消息表,則轉入步驟(1-4); 如果消息表不存在,數(shù)據傳輸模塊生成消息表(5 ),消息表包括傳輸集群k a f ka的生產者pl、消費者cl、訂閱消息query id+” query”、生產者p2、消費者c2和訂閱消息query id+?? , ”request ; (1-4)數(shù)據傳輸模塊的kaf ka集群(6)將查詢內容通過PI發(fā)送到cl,cl接收到查詢內容后,查詢HBase的各個設備表中與查詢內容的查詢設備ID相對應的設備表,如果沒找到設備表,則返回一個查詢失敗的消息格式; 如果找到設備表,以查詢內容的記錄開始時間Tl、記錄結束時間T2、服務ID和查詢頻率查詢各個rowkey索引;如果找不到與服務ID或者查詢頻率匹配的rowkey索引,則返回查詢失敗的消息; 如果找到與服務ID和查詢頻率匹配并且TlS記錄時間<T2的若干個rowkey索引,根據各個rowkey索引提取HBase數(shù)據庫的各個數(shù)據幀,各個數(shù)據幀構成查詢到的歷史記錄; (1-5)查詢消息表,通過cl查詢與其對應的p2,p2接收歷史記錄后,將歷史記錄發(fā)給c2,c2將歷史記錄發(fā)送給查詢用戶。2.根據權利要求1所述的無線電監(jiān)測數(shù)據查詢方法,其特征是,所述rowkey索引包括I個字節(jié)的散列字段、4個字節(jié)的時間戳字段、I個字節(jié)的監(jiān)測服務編碼字段、4個字節(jié)的監(jiān)測頻率字段和4個字節(jié)的負載字段。3.根據權利要求2所述的無線電監(jiān)測數(shù)據查詢方法,其特征是,所述時間戳字段利用如下步驟生成: 歷史數(shù)據編排模塊讀取每幀數(shù)據的幀頭,獲取每幀數(shù)據的記錄時間,并將記錄時間轉化為毫秒數(shù),將毫秒數(shù)存入時間戳字段。4.根據權利要求3所述的無線電監(jiān)測數(shù)據查詢方法,其特征是,所述散列字段利用如下步驟生成: 歷史數(shù)據編排模塊將毫秒數(shù)以256取余,其結果保存于散列字段中。5.根據權利要求2所述的無線電監(jiān)測數(shù)據查詢方法,其特征是,所述監(jiān)測服務編碼字段利用如下步驟生成: 歷史數(shù)據編排模塊獲取每幀數(shù)據的監(jiān)測服務編碼,將監(jiān)測服務編碼保存在監(jiān)測服務編碼字段中。6.根據權利要求2所述的無線電監(jiān)測數(shù)據查詢方法,其特征是,所述負載編碼字段利用如下步驟生成: 歷史數(shù)據編排模塊獲取每幀數(shù)據的幀負載,讀取幀負載每個字段的值L;利用公式S =31-1計算每個字段值的變換值S,將各個字段的S相加得到S7,將S7寫入rowkey索引的負載編碼字段中。7.根據權利要求1或2或3或4或5或6所述的無線電監(jiān)測數(shù)據查詢方法,其特征是,所述步驟(1-2)中,通用接口模塊將查詢請求以XML的形式發(fā)送給數(shù)據傳輸模塊。
【文檔編號】G06F17/30GK105930441SQ201610246656
【公開日】2016年9月7日
【申請日】2016年4月18日
【發(fā)明人】涂永勝, 馬高峰, 黃劍琪, 呂靈通, 趙智航
【申請人】華信咨詢設計研究院有限公司