本發(fā)明涉及計算機大數(shù)據(jù)處理領(lǐng)域,尤指一種基于經(jīng)度、緯度比特交織的行鍵的位置數(shù)據(jù)區(qū)域查詢方法。
背景技術(shù):
隨著物聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)等技術(shù)的發(fā)展,應(yīng)用平臺處理的數(shù)據(jù)規(guī)模呈爆炸性增長,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)對海量數(shù)據(jù)增長時相對乏力,而各種非關(guān)系數(shù)據(jù)庫技術(shù)(NOSQL)得到飛速發(fā)展。NOSQL數(shù)據(jù)模式很靈活,NOSQL集群易于水平擴展,既能夠滿足非結(jié)構(gòu)化數(shù)據(jù)管理需要,也能夠很好地應(yīng)對海量結(jié)構(gòu)化數(shù)據(jù)的管理需要。HBase就是一種典型的NOSQL。
位置數(shù)據(jù)的采集一般利用位置傳感器,由位置傳感器傳回目標位置信息,一般包括經(jīng)度、緯度等,在實際使用中,常需要根據(jù)區(qū)域范圍搜索目標,并獲取相應(yīng)信息。在此可以將區(qū)域看作是一個矩形,由矩形的左上角和右下角確定該區(qū)域。
在現(xiàn)有技術(shù)中,位置數(shù)據(jù)查詢方法一般包括:基于關(guān)系數(shù)據(jù)庫的技術(shù)方案、基于HBase的技術(shù)方案。
基于關(guān)系數(shù)據(jù)庫的技術(shù)方案是將經(jīng)度、緯度分別做為關(guān)系數(shù)據(jù)庫的單獨列,先分別按照經(jīng)度范圍選取數(shù)據(jù)1,再按照緯度范圍選取數(shù)據(jù)2,最后求數(shù)據(jù)1和數(shù)據(jù)2的交集。針對此類應(yīng)用無較佳的優(yōu)化機制,因其進行優(yōu)化開銷大,效果有限。
基于HBase的技術(shù)方案是采用HBase存儲數(shù)據(jù),HBase的Rowkey采用經(jīng)度與緯度按照字符拼接的方式。區(qū)域查詢時根據(jù)Rowkey對HBase進行range掃描,再根據(jù)經(jīng)度的范圍和緯度的范圍過濾數(shù)據(jù)。由于HBase按照字典序?qū)owkey進行排序,在range掃描時會出現(xiàn)需要的緯度范圍以外的數(shù)據(jù),從效果上看,即無法利用Rowkey中的緯度信息在range掃描時獲取到需要的數(shù)據(jù),range掃描結(jié)果需要大量地過濾,很影響性能。
技術(shù)實現(xiàn)要素:
為實現(xiàn)性能更佳的位置數(shù)據(jù)區(qū)域查詢,本發(fā)明提出了一種基于經(jīng)度、緯度比特交織的行鍵的位置數(shù)據(jù)區(qū)域查詢方法。在存儲海量位置數(shù)據(jù)時,采用HBase,并使用經(jīng)度拼接緯度的簡單行鍵(Rowkey)設(shè)計,針對區(qū)域查詢的應(yīng)用特點,并考慮性能要求,采用經(jīng)度與緯度比特交織的Rowkey設(shè)計方法,即在生成Rowkey時先取經(jīng)度的高位,再取緯度的高位,再取經(jīng)度的次高位,再取緯度的次高位,以此類推,最后取經(jīng)度的低位和緯度的低位。根據(jù)Rowkey對數(shù)據(jù)進行分區(qū)、存儲數(shù)據(jù),并根據(jù)Rowkey進行range掃描這一事實,結(jié)合HBase在Rowkey排序時采用字典序這一特點,采用比特交織的Rowkey設(shè)計優(yōu)先比較高字節(jié)數(shù)據(jù),再比較低字節(jié)數(shù)據(jù),這樣能夠盡快根據(jù)Rowkey進行數(shù)據(jù)定位,在range掃描時也能夠盡快縮小掃描范圍,而這都是由高字節(jié)數(shù)據(jù)相對低字節(jié)數(shù)據(jù)的重要性決定的。
為達到上述目的,本發(fā)明公開了一種基于經(jīng)度、緯度比特交織的行鍵的位置數(shù)據(jù)區(qū)域查詢方法,該方法包括:步驟1,在Hbase數(shù)據(jù)庫中獲取位置數(shù)據(jù);步驟2,利用經(jīng)度、緯度比特交織的拼接方式生成行鍵;步驟3,按照該行鍵對所述位置數(shù)據(jù)進行分區(qū)、存儲;步驟4,設(shè)定查詢條件為區(qū)域查詢,在所述行鍵中選取兩個行鍵,分別記錄為起始鍵、中止鍵,該起始鍵對應(yīng)于區(qū)域查詢范圍的左上角,該中止鍵對應(yīng)于區(qū)域查詢范圍的右下角;步驟5,根據(jù)存儲的分區(qū)位置數(shù)據(jù),利用起始鍵及中止鍵進行目標數(shù)據(jù)的范圍掃描,獲得初始區(qū)域查詢結(jié)果;步驟6,對該區(qū)域查詢結(jié)果按預(yù)設(shè)條件進行過濾,獲得目標數(shù)據(jù)在位置數(shù)據(jù)區(qū)域中的區(qū)域查詢結(jié)果。
進一步的,在步驟2中,利用經(jīng)度、緯度比特交織的拼接方式生成行鍵,其中,經(jīng)度、緯度比特交織的拼接方式為經(jīng)度最高位、緯度最高位、經(jīng)度次高位、比特次高位依次直至經(jīng)度次低位、緯度次低位、經(jīng)度最低位、緯度最低位。
進一步的,在步驟4中,區(qū)域查詢范圍為一矩形,該矩形的左上角對應(yīng)所述起始鍵,右下角對應(yīng)所述中止鍵。
進一步的,在步驟6中,預(yù)設(shè)條件至少包括:經(jīng)度范圍、緯度范圍。
本發(fā)明提出的基于經(jīng)度、緯度比特交織的行鍵的位置數(shù)據(jù)區(qū)域查詢方法,能夠高效組織海量數(shù)據(jù)存儲,顯著提高海量位置數(shù)據(jù)按照區(qū)域查詢時的性能。相較于現(xiàn)有技術(shù),本發(fā)明提出的方法是達到同等效果的最簡單方法。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,并不構(gòu)成對本發(fā)明的限定。在附圖中:
圖1為本發(fā)明一實施例的基于經(jīng)度、緯度比特交織的行鍵的位置數(shù)據(jù)區(qū)域查詢方法流程圖。
圖2所示為本發(fā)明一實施例的經(jīng)度、緯度比特交織的行鍵生成方式示意圖。
具體實施方式
以下配合圖示及本發(fā)明的較佳實施例,進一步闡述本發(fā)明為達成預(yù)定發(fā)明目的所采取的技術(shù)手段。
圖1為本發(fā)明一實施例的基于經(jīng)度、緯度比特交織的行鍵的位置數(shù)據(jù)區(qū)域查詢方法流程圖。如圖1所示,該方法包括:
步驟1,在Hbase數(shù)據(jù)庫中獲取位置數(shù)據(jù)。
步驟2,利用經(jīng)度、緯度比特交織的拼接方式生成行鍵。圖2所示為本發(fā)明一實施例的經(jīng)度、緯度比特交織的行鍵生成方式示意圖。其中,經(jīng)度、緯度比特交織的方式為經(jīng)度最高位、緯度最高位、經(jīng)度次高位、比特次高位依次直至經(jīng)度次低位、緯度次低位、經(jīng)度最低位、緯度最低位。
步驟3,按照該行鍵對所述位置數(shù)據(jù)進行分區(qū)、存儲。
步驟4,設(shè)定查詢條件為區(qū)域查詢,在所述行鍵中選取兩個行鍵,分別記錄為起始鍵、中止鍵,該起始鍵對應(yīng)于區(qū)域查詢范圍的左上角,該中止鍵對應(yīng)于區(qū)域查詢范圍的右下角。區(qū)域查詢范圍可以認為是一個矩形,該矩形的左上角對應(yīng)起始鍵,右下角對應(yīng)中止鍵。
步驟5,根據(jù)存儲的分區(qū)位置數(shù)據(jù),利用起始鍵及中止鍵進行目標數(shù)據(jù)的范圍掃描,獲得初始區(qū)域查詢結(jié)果。
步驟6,對該區(qū)域查詢結(jié)果按預(yù)設(shè)條件進行過濾,獲得目標數(shù)據(jù)在位置數(shù)據(jù)區(qū)域中的區(qū)域查詢結(jié)果。
在本實施例中,存儲海量位置數(shù)據(jù)時可以采用HBase數(shù)據(jù)庫。針對區(qū)域查詢的應(yīng)用特點,并考慮性能要求,本發(fā)明采用經(jīng)度與緯度比特交織的拼接方式生成Rowkey,即在拼接生成Rowkey時,先取經(jīng)度的高位,再取緯度的高位,再取經(jīng)度 的次高位,再取緯度的次高位,……,最后取經(jīng)度的低位和緯度的低位。
在Rowkey設(shè)計時,本發(fā)明利用了HBase根據(jù)Rowkey對數(shù)據(jù)進行分區(qū)、存儲數(shù)據(jù),并根據(jù)Rowkey進行range掃描這一事實,結(jié)合HBase在Rowkey排序時采用字典序這一特點,采用比特交織的Rowkey設(shè)計優(yōu)先比較高字節(jié)數(shù)據(jù),再比較低字節(jié)數(shù)據(jù),這樣能夠盡快根據(jù)Rowkey進行數(shù)據(jù)定位,在range掃描時也能夠盡快縮小掃描范圍,而這都是由高字節(jié)數(shù)據(jù)相對低字節(jié)數(shù)據(jù)的重要性決定的。
在區(qū)域查詢時,先按照比特交織生成的Rowkey做range掃描,再根據(jù)經(jīng)度范圍、緯度范圍等條件對range掃描的結(jié)果進行過濾,獲得區(qū)域查詢結(jié)果。上述方法能夠高效組織海量數(shù)據(jù)存儲,顯著提高海量位置數(shù)據(jù)按照區(qū)域查詢時的性能。
為了對上述基于經(jīng)度、緯度比特交織的行鍵的位置數(shù)據(jù)區(qū)域查詢方法進行更為清楚的解釋,下面結(jié)合一個具體的實施例來進行說明,然而值得注意的是該實施例僅是為了更好地說明本發(fā)明,并不構(gòu)成對本發(fā)明不當?shù)南薅ā?/p>
管控平臺利用Hbase存儲全國范圍內(nèi)的車輛、船舶歷史位置數(shù)據(jù),位置由經(jīng)度、緯度標識。
當相關(guān)業(yè)務(wù)需要根據(jù)某一地理區(qū)域,查詢該范圍以內(nèi)的車輛、船舶時,比如某一省內(nèi)的車輛、船舶有哪些。則需要將該省的地理空間范圍作為條件做查詢,在實際使用中,可以將此地理空間范圍簡化為一個或多個空間矩形,并使用矩形的左上角和右下角表示該矩形。按照圖2所示步驟將位置數(shù)據(jù)由經(jīng)度、緯度(二維)轉(zhuǎn)換為Rowkey(降為一維),再把位置數(shù)據(jù)按照Rowkey存儲在Hbase中。此時上述空間矩形就映射到Rowkey的一段范圍中,需要結(jié)合Hbase的Rowkey range掃描來提取。由于Rowkey的range掃描過程中很難對該空間矩形進行精確控制,Rowkey的range會帶來一定的非預(yù)期的數(shù)據(jù),需要結(jié)合過濾條件進一步過濾,具體可以結(jié)合在Rowkey轉(zhuǎn)換前該空間矩形的經(jīng)度、緯度的最大值和最小值。這樣最終得到河北省內(nèi)的車輛、船舶信息。
本發(fā)明提出的基于經(jīng)度、緯度比特交織的行鍵的位置數(shù)據(jù)區(qū)域查詢方法,能夠高效組織海量數(shù)據(jù)存儲,顯著提高海量位置數(shù)據(jù)按照區(qū)域查詢時的性能。相較于現(xiàn)有技術(shù),本發(fā)明提出的方法是達到同等效果的最簡單方法。
以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳細說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等, 均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。