本發(fā)明涉及氣象科學(xué)和大數(shù)據(jù)技術(shù)應(yīng)用領(lǐng)域,具體涉及一種分布式時(shí)間序列地理信息服務(wù)系統(tǒng)及方法。
背景技術(shù):
:由于氣象自動(dòng)站本身基數(shù)龐大,每個(gè)自動(dòng)站每分鐘都在產(chǎn)生數(shù)據(jù),數(shù)據(jù)日益龐大。采用專用關(guān)系型數(shù)據(jù)庫(kù)來(lái)維護(hù)這種量級(jí)的數(shù)據(jù)成本頗高;也有方案利用分布式方案解決數(shù)據(jù)存儲(chǔ)的問(wèn)題,但依然需要針對(duì)數(shù)據(jù)樣本投入大量的研發(fā)精力。目前在本
技術(shù)領(lǐng)域:
與本提案較為接近的技術(shù)方案是針對(duì)傳統(tǒng)的數(shù)據(jù)集中存儲(chǔ)單點(diǎn)查詢的問(wèn)題,提供了一種基于海量氣象數(shù)據(jù)的存儲(chǔ)與檢索方法,利用hadoop平臺(tái),通過(guò)對(duì)分布式非關(guān)系型數(shù)據(jù)庫(kù)hbase建立二級(jí)索引,并且將數(shù)據(jù)通過(guò)轉(zhuǎn)換、遷移導(dǎo)入到云平臺(tái),實(shí)現(xiàn)海量數(shù)據(jù)的可靠存儲(chǔ)與快速檢索,其包括如下步驟:數(shù)據(jù)過(guò)濾;在hbase中定義對(duì)應(yīng)的表格式;建立二級(jí)索引;分情況進(jìn)行數(shù)據(jù)導(dǎo)入;分情況進(jìn)行數(shù)據(jù)檢索。該發(fā)明能實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)查詢,也避免以往存儲(chǔ)和維護(hù)大量數(shù)據(jù)所產(chǎn)生的高昂成本,在保證敏感數(shù)據(jù)安全的前提下能夠更經(jīng)濟(jì)高效地實(shí)時(shí)查詢海量氣象數(shù)據(jù)。但是現(xiàn)有技術(shù)的方案也存在以下缺陷:1.現(xiàn)有技術(shù)僅描述了hbase建立二級(jí)索引理論,并沒(méi)有提供針對(duì)氣象數(shù)據(jù)的具體建表方案和二級(jí)索引方案。2.現(xiàn)有技術(shù)的二級(jí)索引理論是hbase二級(jí)索引的通用理論,并沒(méi)有針對(duì)氣象數(shù)據(jù)優(yōu)化,浪費(fèi)了存儲(chǔ)空間。3.現(xiàn)有技術(shù)僅提出了存儲(chǔ)檢索方案,要最終改善氣象數(shù)據(jù)使用狀況還需要系統(tǒng)化的整體解決方案。技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種分布式時(shí)間序列地理信息服務(wù)系統(tǒng)及方法,可以針對(duì)海量自動(dòng)站數(shù)據(jù)的存儲(chǔ)、檢索和分析構(gòu)建了專有系統(tǒng),為在地理位置上廣泛分布的自動(dòng)站采集來(lái)的監(jiān)控?cái)?shù)據(jù)提供存儲(chǔ)、索引和服務(wù),并且使這些數(shù)據(jù)更容易訪問(wèn)。本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種分布式時(shí)間序列地理信息服務(wù)系統(tǒng),包括數(shù)據(jù)采集模塊、數(shù)據(jù)儲(chǔ)存模塊和數(shù)據(jù)查詢模塊,所述數(shù)據(jù)采集模塊,其用于對(duì)分布的自動(dòng)氣象站中的數(shù)據(jù)以消息隊(duì)列的方式進(jìn)行采集;所述數(shù)據(jù)存儲(chǔ)模塊,其用于采用分布式非關(guān)系型的數(shù)據(jù)庫(kù)對(duì)所述數(shù)據(jù)采集模塊采集的數(shù)據(jù)以時(shí)間序列的形式進(jìn)行列式存儲(chǔ);所述數(shù)據(jù)查詢模塊,其用于通過(guò)分布式的多個(gè)進(jìn)程獨(dú)立與所述數(shù)據(jù)存儲(chǔ)模塊交互,實(shí)現(xiàn)可伸縮的查詢服務(wù)。本發(fā)明的有益效果是:本發(fā)明一種分布式時(shí)間序列地理信息服務(wù)系統(tǒng)通過(guò)系統(tǒng)封裝復(fù)雜的數(shù)據(jù)采集、存儲(chǔ)、查詢的實(shí)現(xiàn)過(guò)程,向客戶提供更適合氣象數(shù)據(jù)的簡(jiǎn)單的高可用的數(shù)據(jù)服務(wù),采用分布式非關(guān)系型的數(shù)據(jù)庫(kù)可以針對(duì)海量自動(dòng)站數(shù)據(jù)的存儲(chǔ)、檢索和分析構(gòu)建了專有系統(tǒng),為在地理位置上廣泛分布的自動(dòng)氣象站采集來(lái)的監(jiān)控?cái)?shù)據(jù)提供存儲(chǔ)、索引和服務(wù),并且使這些數(shù)據(jù)更容易訪問(wèn);同時(shí),數(shù)據(jù)查詢模塊由多個(gè)運(yùn)行在不同服務(wù)器上的無(wú)狀態(tài)的服務(wù)進(jìn)程組成,不同的進(jìn)程獨(dú)立與數(shù)據(jù)存儲(chǔ)模塊交互,獨(dú)立緩存,獨(dú)立提供http訪問(wèn)接口,當(dāng)有大量客戶端訪問(wèn)時(shí),可以通過(guò)負(fù)載均衡服務(wù)器進(jìn)行路由分?jǐn)倝毫Φ蕉嗯_(tái)查詢服務(wù)器,從而實(shí)現(xiàn)了本系統(tǒng)高可用、可伸縮的查詢服務(wù),通過(guò)調(diào)用數(shù)據(jù)服務(wù)接口,不僅可以直接查詢獲取數(shù)據(jù),還可以在自動(dòng)氣象站數(shù)據(jù)服務(wù)的基礎(chǔ)上構(gòu)建應(yīng)用,比如自動(dòng)氣象站網(wǎng)和自動(dòng)氣象站app。在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。進(jìn)一步,還包括數(shù)據(jù)分析模塊,所述數(shù)據(jù)分析模塊,其用于基于spark對(duì)所述數(shù)據(jù)存儲(chǔ)模塊中存儲(chǔ)的數(shù)據(jù)直接進(jìn)行分析和/或利用分析庫(kù)tgisml進(jìn)行分析。采用上述進(jìn)一步方案的有益效果是:數(shù)據(jù)分析模塊免去客戶端重復(fù)造輪子的困擾,為分析海量自動(dòng)氣象站數(shù)據(jù)提供便利。進(jìn)一步,所述分析庫(kù)tgisml為,以spark計(jì)算框架和tgis數(shù)據(jù)模型為基礎(chǔ)、依托spark的機(jī)器學(xué)習(xí)mllib庫(kù)、且針對(duì)tgis庫(kù)保存的地理信息數(shù)據(jù)結(jié)構(gòu)而開(kāi)發(fā)的一種數(shù)據(jù)分析庫(kù)。進(jìn)一步,所述分布式非關(guān)系型的數(shù)據(jù)庫(kù)具體為hbase,所述hbase中包含有數(shù)據(jù)表data,在所述數(shù)據(jù)表data中,包含有一個(gè)列族t,在所述數(shù)據(jù)表data列族t中,包含有一個(gè)行鍵和多個(gè)列限定符;所述數(shù)據(jù)表data列族t的行鍵中存儲(chǔ)有“行政區(qū)代碼+觀測(cè)時(shí)間+站點(diǎn)類型+站點(diǎn)編碼”,其中,所述“行政區(qū)代碼”長(zhǎng)度為3個(gè)字節(jié),所述“觀測(cè)時(shí)間”的長(zhǎng)度為4個(gè)字節(jié),所述“站點(diǎn)類型”的長(zhǎng)度為1個(gè)字節(jié),所述“站點(diǎn)編碼”的長(zhǎng)度為3個(gè)字節(jié);所述數(shù)據(jù)表data列族t的列限定符中存儲(chǔ)有“值類型標(biāo)識(shí)+要素名”,其中,所述值類型標(biāo)識(shí)的長(zhǎng)度為1個(gè)字節(jié),且前4位保留,后4位存儲(chǔ)有值的類型和格式,所述要素名的長(zhǎng)度為3個(gè)字節(jié)。采用上述進(jìn)一步方案的有益效果是:所述數(shù)據(jù)表data通過(guò)行政區(qū)代碼作為行鍵的起始符號(hào),可以防止時(shí)間序列數(shù)據(jù)單向增長(zhǎng)造成的少量region寫(xiě)入熱點(diǎn)負(fù)擔(dān),新的行鍵設(shè)計(jì)包含了需要的所有信息,對(duì)比傳統(tǒng)存儲(chǔ)模型設(shè)計(jì)的采集數(shù)據(jù)存儲(chǔ)表的行鍵減少了存儲(chǔ)空間;同時(shí)列名長(zhǎng)度減少后,用hbase取相同行數(shù)時(shí)明顯減少了key-value中key占據(jù)的空間。進(jìn)一步,所述數(shù)據(jù)表data列族t的行鍵中存儲(chǔ)的“觀測(cè)時(shí)間”為小時(shí)整點(diǎn)時(shí)間,而對(duì)于一個(gè)小時(shí)內(nèi)的分鐘數(shù)據(jù)則壓縮在對(duì)應(yīng)小時(shí)整點(diǎn)時(shí)間的一個(gè)單元格中存儲(chǔ)。采用上述進(jìn)一步方案的有益效果是:由于把分鐘數(shù)據(jù)壓入小時(shí)數(shù)據(jù)的單個(gè)列中存儲(chǔ),顯著壓縮了數(shù)據(jù)的行數(shù)。進(jìn)一步,所述hbase中還包含有信息表info,所述信息表info與所述數(shù)據(jù)表data相互映射,在所述信息表info中,包含有兩個(gè)列族,分別為列族id和列族name;在所述信息表info列族id中,包含有行鍵和列限定符,所述信息表info列族id的行鍵中存儲(chǔ)有“站點(diǎn)類型+站點(diǎn)編碼”,其中,所述“站點(diǎn)類型”的長(zhǎng)度為1個(gè)字節(jié),所述“站點(diǎn)編碼”的長(zhǎng)度為3個(gè)字節(jié);所述信息表info列族id的列限定符中存儲(chǔ)有“站點(diǎn)名稱+經(jīng)緯度數(shù)值+海拔高度+行政區(qū)代碼”;在所述信息表info列族name中,包含有行鍵和列限定符,所述信息表info列族name的行鍵中存儲(chǔ)有“站點(diǎn)名稱”;所述信息表info列族name的列限定符中存儲(chǔ)有“站點(diǎn)編碼”。采用上述進(jìn)一步方案的有益效果是:信息表info將原來(lái)每行重復(fù)存儲(chǔ)的站點(diǎn)名稱、經(jīng)緯度數(shù)值、海拔高度、行政區(qū)代碼等信息單獨(dú)存儲(chǔ),減少了重復(fù)存儲(chǔ);通過(guò)編寫(xiě)過(guò)濾器,可以很容易實(shí)現(xiàn)通過(guò)輸入字符串自動(dòng)搜索匹配站點(diǎn)名稱和站點(diǎn)編碼。進(jìn)一步,所述hbase中還包含有時(shí)間序列查詢索引表data_ts_index,所述時(shí)間序列查詢索引表data_ts_index中包含有一個(gè)行鍵,所述時(shí)間序列查詢索引表data_ts_index的行鍵中存儲(chǔ)有“站點(diǎn)類型+站點(diǎn)編碼+觀測(cè)時(shí)間”,所述“站點(diǎn)類型”的長(zhǎng)度為1個(gè)字節(jié),所述“站點(diǎn)編碼”的長(zhǎng)度為3個(gè)字節(jié),所述“觀測(cè)時(shí)間”的長(zhǎng)度為4個(gè)字節(jié)。采用上述進(jìn)一步方案的有益效果是:時(shí)間序列查詢索引表data_ts_index除了“查詢某個(gè)范圍內(nèi)、某一時(shí)刻、某一類站點(diǎn)的數(shù)據(jù)”這個(gè)維度的查詢是常用查詢之外,還有另一個(gè)維度的查詢功能:“查詢某個(gè)站點(diǎn)、某段時(shí)間的數(shù)據(jù)”,也就是查詢站點(diǎn)的時(shí)間序列數(shù)據(jù),掃描數(shù)據(jù)時(shí),可以指定明確的起止位置,優(yōu)化了時(shí)間序列查詢時(shí)間。進(jìn)一步,所述hbase中還包含有報(bào)警查詢索引表data-alert-index,所述報(bào)警查詢索引表data-alert-index中包含有1個(gè)行鍵和1個(gè)列族f;所述報(bào)警查詢索引表data-alert-index行鍵中存儲(chǔ)有“行政區(qū)代碼+觀測(cè)時(shí)間+報(bào)警要素名+站點(diǎn)類型+站點(diǎn)編碼”,所述“行政區(qū)代碼”的長(zhǎng)度為3個(gè)字節(jié),所述“觀測(cè)時(shí)間”的長(zhǎng)度為4個(gè)字節(jié),所述“報(bào)警要素名”的長(zhǎng)度為3個(gè)字節(jié),所述“站點(diǎn)類型”的長(zhǎng)度為1個(gè)字節(jié),所述“站點(diǎn)編碼”的長(zhǎng)度為3個(gè)字節(jié);在所述報(bào)警查詢索引表data-alert-index列族f中,只有1個(gè)列限定符v,所述報(bào)警查詢索引表data-alert-index列族f的列限定符v代表報(bào)警要素的報(bào)警值。采用上述進(jìn)一步方案的有益效果是:報(bào)警查詢索引表data-alert-index是針對(duì)“某個(gè)范圍內(nèi)、某一時(shí)刻、某一類站點(diǎn)、某個(gè)要素值”是否超出某預(yù)警值而設(shè)立的查詢索引表。進(jìn)一步,所述hbase中還包含有地理位置查詢索引表data-geo-index,所述地理位置查詢索引表data-geo-index中包含有行鍵,所述地理位置查詢索引表data-geo-index行鍵中存儲(chǔ)有利用空間索引geohash算法對(duì)每個(gè)自動(dòng)氣象站的經(jīng)、緯度進(jìn)行計(jì)算得出的相應(yīng)的geohash編碼。采用上述進(jìn)一步方案的有益效果是:地理位置查詢索引表data-geo-index可以按地理位置劃分進(jìn)行查詢,拓寬了查詢手段。基于上述一種分布式時(shí)間序列地理信息服務(wù)系統(tǒng),本發(fā)明還提供一種分布式時(shí)間序列地理信息服務(wù)方法。一種分布式時(shí)間序列地理信息服務(wù)方法,包括以下步驟,s1,所述數(shù)據(jù)采集模塊對(duì)分布的自動(dòng)氣象站中的數(shù)據(jù)以消息隊(duì)列的方式進(jìn)行采集;s2,所述數(shù)據(jù)存儲(chǔ)模塊采用分布式非關(guān)系型的數(shù)據(jù)庫(kù)對(duì)所述數(shù)據(jù)采集模塊采集的數(shù)據(jù)以時(shí)間序列的形式進(jìn)行列式存儲(chǔ);s3,所述數(shù)據(jù)查詢模塊通過(guò)分布式的多個(gè)進(jìn)程獨(dú)立與所述數(shù)據(jù)存儲(chǔ)模塊交互,實(shí)現(xiàn)可伸縮的查詢服務(wù)。本發(fā)明的有益效果是:本發(fā)明一種分布式時(shí)間序列地理信息服務(wù)方法通過(guò)系統(tǒng)封裝復(fù)雜的數(shù)據(jù)采集、存儲(chǔ)、查詢的實(shí)現(xiàn)過(guò)程,向客戶提供更適合氣象數(shù)據(jù)的簡(jiǎn)單的高可用的數(shù)據(jù)服務(wù),采用分布式非關(guān)系型的數(shù)據(jù)庫(kù)可以針對(duì)海量自動(dòng)站數(shù)據(jù)的存儲(chǔ)、檢索和分析構(gòu)建了專有系統(tǒng),為在地理位置上廣泛分布的自動(dòng)氣象站采集來(lái)的監(jiān)控?cái)?shù)據(jù)提供存儲(chǔ)、索引和服務(wù),并且使這些數(shù)據(jù)更容易訪問(wèn);同時(shí),數(shù)據(jù)查詢模塊由多個(gè)運(yùn)行在不同服務(wù)器上的無(wú)狀態(tài)的服務(wù)進(jìn)程組成,不同的進(jìn)程獨(dú)立與數(shù)據(jù)存儲(chǔ)模塊交互,獨(dú)立緩存,獨(dú)立提供http訪問(wèn)接口,當(dāng)有大量客戶端訪問(wèn)時(shí),可以通過(guò)負(fù)載均衡服務(wù)器進(jìn)行路由分?jǐn)倝毫Φ蕉嗯_(tái)查詢服務(wù)器,從而實(shí)現(xiàn)了本系統(tǒng)高可用、可伸縮的查詢服務(wù),通過(guò)調(diào)用數(shù)據(jù)服務(wù)接口,不僅可以直接查詢獲取數(shù)據(jù),還可以在自動(dòng)氣象站數(shù)據(jù)服務(wù)的基礎(chǔ)上構(gòu)建應(yīng)用,比如自動(dòng)氣象站網(wǎng)和自動(dòng)氣象站app。附圖說(shuō)明圖1為本發(fā)明一種分布式時(shí)間序列地理信息服務(wù)系統(tǒng)的結(jié)構(gòu)框圖;圖2為本發(fā)明一種分布式時(shí)間序列地理信息服務(wù)方法的流程圖。具體實(shí)施方式以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。如圖1所示,一種分布式時(shí)間序列地理信息服務(wù)系統(tǒng),包括數(shù)據(jù)采集模塊、數(shù)據(jù)儲(chǔ)存模塊和數(shù)據(jù)查詢模塊,所述數(shù)據(jù)采集模塊,其用于對(duì)分布的自動(dòng)氣象站中的數(shù)據(jù)以消息隊(duì)列的方式進(jìn)行采集;所述數(shù)據(jù)存儲(chǔ)模塊,其用于采用分布式非關(guān)系型的數(shù)據(jù)庫(kù)對(duì)所述數(shù)據(jù)采集模塊采集的數(shù)據(jù)以時(shí)間序列的形式進(jìn)行列式存儲(chǔ);所述數(shù)據(jù)查詢模塊,其用于通過(guò)分布式的多個(gè)進(jìn)程獨(dú)立與所述數(shù)據(jù)存儲(chǔ)模塊交互,實(shí)現(xiàn)可伸縮的查詢服務(wù)。本發(fā)明的系統(tǒng)還包括數(shù)據(jù)分析模塊,所述數(shù)據(jù)分析模塊,其用于基于spark對(duì)所述數(shù)據(jù)存儲(chǔ)模塊中存儲(chǔ)的數(shù)據(jù)直接進(jìn)行分析和/或利用分析庫(kù)tgisml進(jìn)行分析。所述分析庫(kù)tgisml為,以spark計(jì)算框架和tgis數(shù)據(jù)模型為基礎(chǔ)、依托spark的機(jī)器學(xué)習(xí)mllib庫(kù)、且針對(duì)tgis庫(kù)保存的地理信息數(shù)據(jù)結(jié)構(gòu)而開(kāi)發(fā)的一種數(shù)據(jù)分析庫(kù),封裝了進(jìn)行機(jī)器學(xué)習(xí)算法之前額外的數(shù)據(jù)提取轉(zhuǎn)換操作,為常用數(shù)據(jù)分析工作提供簡(jiǎn)明分析接口。數(shù)據(jù)分析模塊免去客戶端重復(fù)造輪子的困擾,為分析海量自動(dòng)氣象站數(shù)據(jù)提供便利。本發(fā)明一種分布式時(shí)間序列地理信息服務(wù)系統(tǒng)(也稱tgis)通過(guò)系統(tǒng)封裝復(fù)雜的數(shù)據(jù)采集、存儲(chǔ)、查詢的實(shí)現(xiàn)過(guò)程,向客戶提供更適合氣象數(shù)據(jù)的簡(jiǎn)單的高可用的數(shù)據(jù)服務(wù),采用分布式非關(guān)系型的數(shù)據(jù)庫(kù)可以針對(duì)海量自動(dòng)站數(shù)據(jù)的存儲(chǔ)、檢索和分析構(gòu)建了專有系統(tǒng),為在地理位置上廣泛分布的自動(dòng)氣象站采集來(lái)的監(jiān)控?cái)?shù)據(jù)提供存儲(chǔ)、索引和服務(wù),并且使這些數(shù)據(jù)更容易訪問(wèn);同時(shí),數(shù)據(jù)查詢模塊由多個(gè)運(yùn)行在不同服務(wù)器上的無(wú)狀態(tài)的服務(wù)進(jìn)程(即tgis進(jìn)程)組成,不同的進(jìn)程獨(dú)立與數(shù)據(jù)存儲(chǔ)模塊交互,獨(dú)立緩存,獨(dú)立提供http訪問(wèn)接口,當(dāng)有大量客戶端訪問(wèn)時(shí),可以通過(guò)負(fù)載均衡服務(wù)器進(jìn)行路由分?jǐn)倝毫Φ蕉嗯_(tái)查詢服務(wù)器,從而實(shí)現(xiàn)了本系統(tǒng)高可用、可伸縮的查詢服務(wù),通過(guò)調(diào)用數(shù)據(jù)服務(wù)接口,不僅可以直接查詢獲取數(shù)據(jù),還可以在自動(dòng)氣象站數(shù)據(jù)服務(wù)的基礎(chǔ)上構(gòu)建應(yīng)用,比如自動(dòng)氣象站網(wǎng)和自動(dòng)氣象站app。具體的:所述分布式非關(guān)系型的數(shù)據(jù)庫(kù)具體為hbase,所述hbase中包含有數(shù)據(jù)表data、信息表info、時(shí)間序列查詢索引表data_ts_inde、報(bào)警查詢索引表data-alert-index和地理位置查詢索引表data-geo-index索,在介紹這些表之前,首先介紹一下hbase的幾個(gè)關(guān)鍵概念:行鍵和列族;行鍵(rowkey)是hbase建立索引的唯一方式,行根據(jù)行鍵按照rowkey的字節(jié)序(byteorder)排序存儲(chǔ),對(duì)表的訪問(wèn)要通過(guò)行鍵(get:?jiǎn)蝹€(gè)rowkey訪問(wèn);scan:rowkey范圍訪問(wèn),或全表掃描);列族(columnfamily)必須在表定義時(shí)給出,每個(gè)列族可以有一個(gè)或多個(gè)列限定符(columnqualifier),列限定符不需要在表定義時(shí)給出可以動(dòng)態(tài)加入,數(shù)據(jù)按列族分開(kāi)存儲(chǔ)。下面具體介紹一下hbase中的表設(shè)計(jì):在所述數(shù)據(jù)表data中,包含有一個(gè)列族t(只有一個(gè)列族t,可以防止原有設(shè)計(jì)的跨列族查詢?cè)斐傻牟槐匾猧o),在所述數(shù)據(jù)表data列族t中,包含有一個(gè)行鍵和多個(gè)列限定符;所述數(shù)據(jù)表data列族t的行鍵中存儲(chǔ)有“行政區(qū)代碼+觀測(cè)時(shí)間+站點(diǎn)類型+站點(diǎn)編碼”,其中,所述“行政區(qū)代碼”長(zhǎng)度為3個(gè)字節(jié),所述“觀測(cè)時(shí)間”的長(zhǎng)度為4個(gè)字節(jié),所述“站點(diǎn)類型”的長(zhǎng)度為1個(gè)字節(jié),所述“站點(diǎn)編碼”的長(zhǎng)度為3個(gè)字節(jié);所述數(shù)據(jù)表data列族t的行鍵具體設(shè)計(jì)如下:(11字節(jié),十六進(jìn)制)06690f582bcbb05100e018在數(shù)據(jù)表data列族t的行鍵中,第1至3字節(jié)中存儲(chǔ)有完整的“行政區(qū)代碼”,例如,存儲(chǔ)的十六進(jìn)制\x06\x69\x0f換算成10進(jìn)制是420111,代表湖北省武漢市洪山區(qū),存儲(chǔ)漢字“湖北省武漢市洪山區(qū)”需要18個(gè)字節(jié)(gbk編碼),以“行政區(qū)代碼”數(shù)值存儲(chǔ)只需要3個(gè)字節(jié);第4至7字節(jié)中存儲(chǔ)有“觀測(cè)時(shí)間”,使用linux時(shí)間戳數(shù)值表示,十六進(jìn)制582bcbb0換算成十進(jìn)制為1479265200,代表“wed,16nov201603:00:00gmt”,北京時(shí)間“2016年11月16日11:00:00”,比起原來(lái)使用時(shí)間字符串“2016-11-1611:00:00”(22字節(jié)),或反轉(zhuǎn)時(shí)間“16110000201611”(14字節(jié))節(jié)約了存儲(chǔ)空間;特別的是,這里存儲(chǔ)的時(shí)間為小時(shí)整點(diǎn)時(shí)間,對(duì)于一個(gè)小時(shí)內(nèi)的分鐘數(shù)據(jù)壓縮在一個(gè)單元格中表示,由于把分鐘數(shù)據(jù)壓入小時(shí)數(shù)據(jù)的單個(gè)列中存儲(chǔ),顯著壓縮了數(shù)據(jù)的行數(shù);第8個(gè)字節(jié)中存儲(chǔ)有自動(dòng)氣象站的“站點(diǎn)類型”,比如這里\x51代表字符q,表示區(qū)域自動(dòng)氣象站(國(guó)家站為空格符號(hào)\x20),第9至11字節(jié)中存儲(chǔ)有自動(dòng)氣象站的5位數(shù)的“站點(diǎn)編碼”,比如這里的\x00\xe0\x18換算為十進(jìn)制為57368,代表“站點(diǎn)編碼”57368。所述數(shù)據(jù)表data列族t的列限定符中存儲(chǔ)有“值類型標(biāo)識(shí)+要素名”,其中,所述值類型標(biāo)識(shí)的長(zhǎng)度為1個(gè)字節(jié)(8位),且前4位保留,后4位存儲(chǔ)有值的類型和格式,以后4位為起點(diǎn),第1位是一個(gè)flag,表明值是整型還是浮點(diǎn)型,0表示整型,1表示浮點(diǎn)型,后3位表明數(shù)據(jù)的長(zhǎng)度(即:所述要素名的長(zhǎng)度為3個(gè)字節(jié)),按1偏移,000表示1個(gè)字節(jié);001表示2個(gè)字節(jié)。長(zhǎng)度一定是1,2,4,8中的一個(gè),不然說(shuō)明有錯(cuò)誤;所述要素名的長(zhǎng)度為3個(gè)字節(jié),要素名壓縮到3個(gè)字節(jié),減少重復(fù)存儲(chǔ)長(zhǎng)列限定符造成的空間浪費(fèi)。所述數(shù)據(jù)表data通過(guò)行政區(qū)代碼作為行鍵的起始符號(hào),可以防止時(shí)間序列數(shù)據(jù)單向增長(zhǎng)造成的少量region寫(xiě)入熱點(diǎn)負(fù)擔(dān),新的行鍵設(shè)計(jì)包含了需要的所有信息,對(duì)比傳統(tǒng)存儲(chǔ)模型設(shè)計(jì)的數(shù)據(jù)表data的行鍵減少了存儲(chǔ)空間;同時(shí)列名長(zhǎng)度減少后,用hbase取相同行數(shù)時(shí)明顯減少了key-value中key占據(jù)的空間。所述hbase中還包含有信息表info,所述信息表info與所述數(shù)據(jù)表data相互映射(具體的映射關(guān)系為信息表info中存儲(chǔ)的站點(diǎn)信息與數(shù)據(jù)表data的行鍵中存儲(chǔ)的“站點(diǎn)編碼”相互映射),在所述信息表info中,包含有兩個(gè)列族,分別為列族id和列族name;列族id和列族name在查詢時(shí)并不相關(guān),由于是“站點(diǎn)編碼”與站點(diǎn)信息的相互映射,兩個(gè)列族將擁有數(shù)量相等的行,不會(huì)因?yàn)橐粋€(gè)列族行數(shù)的過(guò)分增長(zhǎng)而影響到另一個(gè)列族。在所述信息表info列族id中,包含有行鍵和列限定符,所述信息表info列族id的行鍵中存儲(chǔ)有“站點(diǎn)類型+站點(diǎn)編碼”,其中,所述“站點(diǎn)類型”的長(zhǎng)度為1個(gè)字節(jié),所述“站點(diǎn)編碼”的長(zhǎng)度為3個(gè)字節(jié);所述信息表info列族id的列限定符中存儲(chǔ)有“站點(diǎn)名稱+經(jīng)緯度數(shù)值+海拔高度+行政區(qū)代碼”;所述信息表info列族id的行鍵具體設(shè)計(jì)如下:(4字節(jié),十六進(jìn)制)5100e018在所述信息表info列族id的行鍵中,第1字節(jié)存儲(chǔ)有自動(dòng)氣象站的“站點(diǎn)類型”,比如這里\x51代表字符q,表示區(qū)域自動(dòng)氣象站(國(guó)家站為空格符號(hào)\x20),第2至4字節(jié)存儲(chǔ)有自動(dòng)氣象站的5位數(shù)的“站點(diǎn)編碼”,比如這里的\x00\xe0\x18換算為十進(jìn)制為57368,代表“站點(diǎn)編碼”57368。在所述信息表info列族name中,包含有行鍵和一個(gè)列限定符,所述信息表info列族name的行鍵中存儲(chǔ)有“站點(diǎn)名稱”;所述信息表info列族name的列限定符中存儲(chǔ)有“站點(diǎn)編碼”。信息表info將原來(lái)每行重復(fù)存儲(chǔ)的站點(diǎn)名稱、經(jīng)緯度數(shù)值、海拔高度、行政區(qū)代碼等信息單獨(dú)存儲(chǔ),減少了重復(fù)存儲(chǔ);通過(guò)編寫(xiě)過(guò)濾器,可以很容易實(shí)現(xiàn)通過(guò)輸入字符串自動(dòng)搜索匹配站名和站點(diǎn)編碼。除了“查詢某個(gè)范圍內(nèi)、某一時(shí)刻、某一類站點(diǎn)的數(shù)據(jù)”這個(gè)維度的查詢是常用查詢之外,還有另一個(gè)維度的查詢也很重要,那就是“查詢某個(gè)站點(diǎn)、某段時(shí)間的數(shù)據(jù)”,也就是查詢站點(diǎn)的時(shí)間序列數(shù)據(jù)。由于hbase的行鍵是索引的唯一方式,所以建立索引的唯一方式就是建立一個(gè)行鍵描述維度不同的新表,即需要建立時(shí)間序列查詢索引表data_ts_index,可以通過(guò)自定義協(xié)處理器在hbase添加行時(shí),將行內(nèi)的數(shù)據(jù)轉(zhuǎn)儲(chǔ)到新表,當(dāng)然維護(hù)新表內(nèi)容也可以通過(guò)客戶端分別向兩張表插入數(shù)據(jù),但是使用協(xié)處理器的方法可以減少客戶端與服務(wù)器端之間的io。所述時(shí)間序列查詢索引表data_ts_index中包含有一個(gè)行鍵,所述時(shí)間序列查詢索引表data_ts_index的行鍵中存儲(chǔ)有“站點(diǎn)類型+站點(diǎn)編碼+觀測(cè)時(shí)間”,所述“站點(diǎn)類型”的長(zhǎng)度為1個(gè)字節(jié),所述“站點(diǎn)編碼”的長(zhǎng)度為3個(gè)字節(jié),所述“觀測(cè)時(shí)間”的長(zhǎng)度為4個(gè)字節(jié)。時(shí)間序列查詢索引表data_ts_index的行鍵具體設(shè)計(jì)如下:(8字節(jié),十六進(jìn)制)5100e018582bcbb0在所述時(shí)間序列查詢索引表data_ts_index的行鍵中,第1字節(jié)中存儲(chǔ)有自動(dòng)氣象站的“站點(diǎn)類型”,比如這里十六進(jìn)制51代表字符q,表示區(qū)域氣象站(國(guó)家站為空格符號(hào),十六進(jìn)制20),第2至4字節(jié)中存儲(chǔ)有自動(dòng)氣象站的5位數(shù)的“站點(diǎn)編碼”,比如這里的十六進(jìn)制00e018換算為十進(jìn)制為57368,代表“站點(diǎn)編碼”57368,第5至8字節(jié)中存儲(chǔ)有“觀測(cè)時(shí)間”,且所“述觀測(cè)時(shí)間”使用linux時(shí)間戳數(shù)值表示,比如這里的十六進(jìn)制582bcbb0換算成十進(jìn)制為1479265200,代表“wed,16nov201603:00:00gmt”,北京時(shí)間“2016年11月16日11:00:00”。因?yàn)閔base是按行鍵排序的,這樣做的好處是同類型,同一個(gè)站點(diǎn)的記錄自動(dòng)落到了連續(xù)的存儲(chǔ)位置。掃描數(shù)據(jù)時(shí),可以指定明確的起止位置,優(yōu)化了時(shí)間序列查詢時(shí)間。同時(shí),因?yàn)閿?shù)據(jù)是連續(xù)的,對(duì)站點(diǎn)某段時(shí)間內(nèi)的要素值進(jìn)行統(tǒng)計(jì)的分組求和速度提升的需求也得到了滿足(通過(guò)定義協(xié)處理器替換regionscanner為帶有分組求和的scanner,結(jié)果在客戶端合并)。時(shí)間序列查詢索引表data_ts_index除了“查詢某個(gè)范圍內(nèi)、某一時(shí)刻、某一類站點(diǎn)的數(shù)據(jù)”這個(gè)維度的查詢是常用查詢之外,還有另一個(gè)維度的查詢功能:“查詢某個(gè)站點(diǎn)、某段時(shí)間的數(shù)據(jù)”,也就是查詢站點(diǎn)的時(shí)間序列數(shù)據(jù),掃描數(shù)據(jù)時(shí),可以指定明確的起止位置,優(yōu)化了時(shí)間序列查詢時(shí)間。所述hbase中還包含有報(bào)警查詢索引表data-alert-index,所述報(bào)警查詢索引表data-alert-index中包含有1個(gè)行鍵和1個(gè)列族f;所述報(bào)警查詢索引表data-alert-index行鍵中存儲(chǔ)有“行政區(qū)代碼+觀測(cè)時(shí)間+報(bào)警要素名+站點(diǎn)類型+站點(diǎn)編碼”,所述“行政區(qū)代碼”的長(zhǎng)度為3個(gè)字節(jié),所述“觀測(cè)時(shí)間”的長(zhǎng)度為4個(gè)字節(jié),所述“報(bào)警要素名”的長(zhǎng)度為3個(gè)字節(jié),所述“站點(diǎn)類型”的長(zhǎng)度為1個(gè)字節(jié),所述“站點(diǎn)編碼”的長(zhǎng)度為3個(gè)字節(jié);所述報(bào)警查詢索引表data-alert-index的行鍵具體設(shè)計(jì)如下(14個(gè)字節(jié),十六進(jìn)制):06690f582bcbb0p105100e018在所述報(bào)警查詢索引表data-alert-index的行鍵中,第1至3字節(jié)中存儲(chǔ)有完整的“行政區(qū)代碼“,即為其中的“06690f”;第4至7字節(jié)中存儲(chǔ)有“觀測(cè)時(shí)間“,即為其中的“582bcbb0”;第8至10字節(jié)中存儲(chǔ)有“報(bào)警要素名“,即為其中的“p10”;第11字節(jié)中存儲(chǔ)有自動(dòng)氣象站的“站點(diǎn)類型“,及為其中的“51”;第12至14以3字節(jié)中存儲(chǔ)有自動(dòng)氣象站的5位數(shù)的“站點(diǎn)編碼“,及為其中的“00e018”。在所述報(bào)警查詢索引表data-alert-index列族f中,只有1個(gè)列限定符v,所述報(bào)警查詢索引表data-alert-index列族f的列限定符v代表報(bào)警要素的報(bào)警值。報(bào)警查詢索引表data-alert-index是針對(duì)“某個(gè)范圍內(nèi)、某一時(shí)刻、某一類站點(diǎn)、某個(gè)要素值”是否超出某預(yù)警值而設(shè)立的查詢索引表。這樣僅對(duì)行鍵過(guò)濾即可得到某個(gè)范圍內(nèi)、某一時(shí)刻、某一類站點(diǎn)、某個(gè)要素值超出某預(yù)警值的所有站點(diǎn),以及超出報(bào)警的值。在某些情況下并不需要按行政區(qū)對(duì)站點(diǎn)進(jìn)行分類,行政區(qū)劃分在行政機(jī)關(guān)等單位比較有用,但是在對(duì)大眾的互聯(lián)網(wǎng)應(yīng)用,更多時(shí)候是按地理位置進(jìn)行劃分。在做某些位置相關(guān)的分析的時(shí)候,比如knn鄰近查詢時(shí),更需要能夠表示站點(diǎn)在地理位置上的關(guān)系。于是可以引入空間索引geohash算法對(duì)每個(gè)站點(diǎn)的經(jīng)緯度計(jì)算相應(yīng)的geohash編碼,將geohash編碼保存在行鍵中代替行政區(qū)編碼實(shí)現(xiàn)空間索引,即通過(guò)建立地理位置查詢索引表data-geo-index可實(shí)現(xiàn)上述的地理位置查詢工作。所述地理位置查詢索引表data-geo-index中包含有行鍵,所述地理位置查詢索引表data-geo-index行鍵中存儲(chǔ)有利用空間索引geohash算法對(duì)每個(gè)自動(dòng)氣象站的經(jīng)、緯度進(jìn)行計(jì)算得出的相應(yīng)的geohash編碼。所述地理位置查詢索引表data-geo-index可以按地理位置劃分進(jìn)行查詢,拓寬了查詢手段?;谏鲜鲆环N分布式時(shí)間序列地理信息服務(wù)系統(tǒng),本發(fā)明還提供一種分布式時(shí)間序列地理信息服務(wù)方法。如圖2所示,一種分布式時(shí)間序列地理信息服務(wù)方法,包括以下步驟,s1,所述數(shù)據(jù)采集模塊對(duì)分布的自動(dòng)氣象站中的數(shù)據(jù)以消息隊(duì)列的方式進(jìn)行采集;s2,所述數(shù)據(jù)存儲(chǔ)模塊采用分布式非關(guān)系型的數(shù)據(jù)庫(kù)對(duì)所述數(shù)據(jù)采集模塊采集的數(shù)據(jù)以時(shí)間序列的形式進(jìn)行列式存儲(chǔ);s3,所述數(shù)據(jù)查詢模塊通過(guò)分布式的多個(gè)進(jìn)程獨(dú)立與所述數(shù)據(jù)存儲(chǔ)模塊交互,實(shí)現(xiàn)可伸縮的查詢服務(wù)。本發(fā)明一種分布式時(shí)間序列地理信息服務(wù)方法通過(guò)系統(tǒng)封裝復(fù)雜的數(shù)據(jù)采集、存儲(chǔ)、查詢的實(shí)現(xiàn)過(guò)程,向客戶提供更適合氣象數(shù)據(jù)的簡(jiǎn)單的高可用的數(shù)據(jù)服務(wù),采用分布式非關(guān)系型的數(shù)據(jù)庫(kù)可以針對(duì)海量自動(dòng)站數(shù)據(jù)的存儲(chǔ)、檢索和分析構(gòu)建了專有系統(tǒng),為在地理位置上廣泛分布的自動(dòng)氣象站采集來(lái)的監(jiān)控?cái)?shù)據(jù)提供存儲(chǔ)、索引和服務(wù),并且使這些數(shù)據(jù)更容易訪問(wèn);同時(shí),數(shù)據(jù)查詢模塊由多個(gè)運(yùn)行在不同服務(wù)器上的無(wú)狀態(tài)的服務(wù)進(jìn)程組成,不同的進(jìn)程獨(dú)立與數(shù)據(jù)存儲(chǔ)模塊交互,獨(dú)立緩存,獨(dú)立提供http訪問(wèn)接口,當(dāng)有大量客戶端訪問(wèn)時(shí),可以通過(guò)負(fù)載均衡服務(wù)器進(jìn)行路由分?jǐn)倝毫Φ蕉嗯_(tái)查詢服務(wù)器,從而實(shí)現(xiàn)了本系統(tǒng)高可用、可伸縮的查詢服務(wù),通過(guò)調(diào)用數(shù)據(jù)服務(wù)接口,不僅可以直接查詢獲取數(shù)據(jù),還可以在自動(dòng)氣象站數(shù)據(jù)服務(wù)的基礎(chǔ)上構(gòu)建應(yīng)用,比如自動(dòng)氣象站網(wǎng)和自動(dòng)氣象站app。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)12