本發(fā)明屬于電動汽車通信中的數(shù)據(jù)讀寫方法領(lǐng)域,具體是一種電動汽車遠程監(jiān)控通信服務(wù)系統(tǒng)及方法。
背景技術(shù):
電動汽車遠程監(jiān)控系統(tǒng)可以實現(xiàn)對汽車的實時跟蹤管理和科學(xué)的運行考核,其中通信服務(wù)系統(tǒng)是整個監(jiān)控系統(tǒng)實現(xiàn)數(shù)據(jù)通信的中樞,負責接收來自車載終端的位置及運行參數(shù)等信息,同時向各車載終端下傳控制調(diào)度指令及優(yōu)化的運行參數(shù),來實現(xiàn)對車載終端的遠程監(jiān)測和控制調(diào)度,其設(shè)計的優(yōu)劣直接影響整個系統(tǒng)的性能。面對通信服務(wù)系統(tǒng)中海量的、實時采樣的、高并發(fā)的車載終端數(shù)據(jù)流,傳統(tǒng)數(shù)據(jù)庫解決方法出現(xiàn)瓶頸,無法滿足數(shù)據(jù)的大量存儲及應(yīng)用服務(wù)系統(tǒng)快速檢索要求。
分布式nosql(notonlysql非關(guān)系型)數(shù)據(jù)庫hbase解決方案的出現(xiàn)很好的解決數(shù)據(jù)的存儲問題,采用key-value(鍵-值)數(shù)據(jù)對的列式存儲也很好的解決了數(shù)據(jù)的字段伸縮性。雖然分布式數(shù)據(jù)庫hbase有很多的優(yōu)點,很好的解決了數(shù)據(jù)的存儲問題,但是分布式數(shù)據(jù)庫hbase在檢索方面存在一定的局限性。首先,分布式數(shù)據(jù)庫hbase只支持針對rowkey(hbase中每行的主鍵也就是key-value對中的key)的數(shù)據(jù)檢索,不支持對value(值)的數(shù)據(jù)檢索,而結(jié)構(gòu)化的數(shù)據(jù)中的value才是數(shù)據(jù)的價值所在,分布式數(shù)據(jù)庫hbase只提供對rowkey的一級索引檢索,還有范圍(beginrowkey,endrowkey)的scan(掃描,hbaseapi的一種,可以對響應(yīng)的rowkey數(shù)據(jù)做出快速響應(yīng))查詢。對value檢索會導(dǎo)致mapreduce任務(wù)形式的全表的暴力檢索,非常的耗時;再者,分布式數(shù)據(jù)庫hbase不能很好的支持sql語言,由于已經(jīng)積累了多年針對關(guān)系型數(shù)據(jù)庫的應(yīng)用經(jīng)驗,有豐富的面向sql的應(yīng)用接口需求,把分布式數(shù)據(jù)庫hbase的優(yōu)點和sql的易用性結(jié)合起來也是有待解決的問題。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供了一種電動汽車遠程監(jiān)控系統(tǒng)中通信服務(wù)系統(tǒng)及方法,可以實現(xiàn)快速、高效傳輸和處理移動車輛的海量信息,實現(xiàn)對sql語句的支持,應(yīng)用服務(wù)系統(tǒng)能有效的獲取車輛的運行數(shù)據(jù),提高檢索效率,達到應(yīng)用服務(wù)系統(tǒng)對數(shù)據(jù)檢索操作的方便易用。
本發(fā)明采用下面的技術(shù)方案:
一種電動汽車遠程監(jiān)控通信服務(wù)系統(tǒng),包括netty通信服務(wù)系統(tǒng)和hbase數(shù)據(jù)服務(wù)系統(tǒng);在所述hbase數(shù)據(jù)服務(wù)系統(tǒng)與netty通信服務(wù)系統(tǒng)間設(shè)有二級索引系統(tǒng),用于封裝hbase數(shù)據(jù)服務(wù)系統(tǒng),提供數(shù)據(jù)接口;所述netty通信服務(wù)系統(tǒng)接收來自車載終端的數(shù)據(jù)并發(fā)送至二級索引系統(tǒng),二級索引系統(tǒng)接收netty通信服務(wù)系統(tǒng)傳遞的數(shù)據(jù)并轉(zhuǎn)換為對應(yīng)操作,根據(jù)所述對應(yīng)操作對hbase數(shù)據(jù)服務(wù)系統(tǒng)執(zhí)行讀寫操作。
進一步的,所述二級索引系統(tǒng)包括用于與netty通信服務(wù)系統(tǒng)連接的sql解析層以及與hbase數(shù)據(jù)服務(wù)系統(tǒng)連接的dml數(shù)據(jù)操作接口。
進一步的,所述netty通信服務(wù)系統(tǒng)接收來自車載終端的數(shù)據(jù)并解析成sql語句發(fā)送至sql解析層,sql解析層接收netty通信服務(wù)系統(tǒng)傳遞的sql語句解析并轉(zhuǎn)換為對應(yīng)dml操作,dml數(shù)據(jù)操作接口根據(jù)sql解析層轉(zhuǎn)換的dml操作對hbase數(shù)據(jù)服務(wù)系統(tǒng)執(zhí)行讀寫操作。
本發(fā)明還提供了另一技術(shù)方案:
一種電動汽車遠程監(jiān)控通信服務(wù)方法,車載終端將實時數(shù)據(jù)流發(fā)送給netty通信服務(wù)系統(tǒng),netty通信服務(wù)系統(tǒng)對接收到數(shù)據(jù)并發(fā)送至二級索引系統(tǒng),二級索引系統(tǒng)接收netty通信服務(wù)系統(tǒng)傳遞的數(shù)據(jù)并轉(zhuǎn)換為對應(yīng)操作,根據(jù)所述對應(yīng)操作對hbase數(shù)據(jù)服務(wù)系統(tǒng)執(zhí)行讀寫操作。
進一步的,所述二級索引系統(tǒng)具有與netty通信服務(wù)系統(tǒng)連接的sql解析層以及與hbase數(shù)據(jù)服務(wù)系統(tǒng)連接的dml數(shù)據(jù)操作接口;所述netty通信服務(wù)系統(tǒng)接收來自車載終端的數(shù)據(jù)并解析成sql語句發(fā)送至sql解析層,sql解析層接收netty通信服務(wù)系統(tǒng)傳遞的sql語句解析并轉(zhuǎn)換為對應(yīng)dml操作,dml數(shù)據(jù)操作接口根據(jù)sql解析層轉(zhuǎn)換的dml操作對hbase數(shù)據(jù)服務(wù)系統(tǒng)執(zhí)行讀寫操作。
進一步的,所述dml數(shù)據(jù)操作接口包括寫入接口和檢索接口。
進一步的,所述寫入接口根據(jù)sql語義完成對hbase數(shù)據(jù)服務(wù)系統(tǒng)的數(shù)據(jù)插入、更新和刪除操作。
進一步的,所述檢索接口根據(jù)sql語義完成對hbase數(shù)據(jù)服務(wù)系統(tǒng)的數(shù)據(jù)獲取和掃描操作,hbase數(shù)據(jù)服務(wù)系統(tǒng)具有數(shù)據(jù)表格和索引表格,通過對索引表格執(zhí)行掃描操作查找目標數(shù)據(jù)的主鍵集合,通過獲取操作基于上述獲取的主鍵集合獲得目標數(shù)據(jù)集合,并將目標數(shù)據(jù)集合返回給應(yīng)用服務(wù)系統(tǒng)。
進一步的,通過對索引表格執(zhí)行掃描操作查找目標數(shù)據(jù)的主鍵集合具體為:將hbase數(shù)據(jù)服務(wù)系統(tǒng)中的結(jié)構(gòu)化數(shù)據(jù)的主鍵部分和其中需要做索引的value字段整合在一起,使得具有相同value值的索引數(shù)據(jù)之存儲位置相鄰,通過對所述整合后的數(shù)據(jù)進行提取,獲得目標數(shù)據(jù)的主鍵集合。
進一步的,所述寫入接口向hbase數(shù)據(jù)服務(wù)系統(tǒng)執(zhí)行操作時,將hbase數(shù)據(jù)服務(wù)系統(tǒng)內(nèi)的結(jié)構(gòu)化數(shù)據(jù)的id前添加hash前綴,并存儲在數(shù)據(jù)表格的數(shù)據(jù)主鍵內(nèi);同時,將結(jié)構(gòu)化數(shù)據(jù)的id、需要索引的字段前添加hash前綴,并存儲在索引表格的索引主鍵內(nèi);在將結(jié)構(gòu)化數(shù)據(jù)寫入數(shù)據(jù)表格內(nèi)時,每個結(jié)構(gòu)化數(shù)據(jù)的id后面的字段轉(zhuǎn)化成列簇的字段,索引表格內(nèi)列簇的字段為空。
本發(fā)明的有益效果:
通過對電動汽車遠程監(jiān)控系統(tǒng)中通信服務(wù)系統(tǒng)的結(jié)構(gòu)化設(shè)計以及對netty通信服務(wù)系統(tǒng)和hbase數(shù)據(jù)服務(wù)系統(tǒng)的非植入式開發(fā),在分布式數(shù)據(jù)庫hbase系統(tǒng)的邏輯復(fù)雜性的前提下,擁有很好的擴展性和兼容性;將sql的易用性與hbase數(shù)據(jù)服務(wù)系統(tǒng)完美結(jié)合,實現(xiàn)快速、高效傳輸和處理移動車輛的海量信息,大幅提升了應(yīng)用服務(wù)系統(tǒng)中對value數(shù)據(jù)的檢索效率,同時也拓展了hbase數(shù)據(jù)服務(wù)系統(tǒng)的應(yīng)用領(lǐng)域及應(yīng)用服務(wù)系統(tǒng)的開發(fā)性能。
本發(fā)明的indexrowkey(索引主鍵)的組成是由hash前綴、需要建立索引的字段value和結(jié)構(gòu)化數(shù)據(jù)的id組成的,在索引表格的列簇的字段空的,只是插入一條空的索引主鍵作為數(shù)據(jù)主鍵所標示的反向索引,采用空間換時間的策略,通過建立索引數(shù)據(jù)表格最終能夠大幅度提升系統(tǒng)查詢的速度。
附圖說明
圖1為本發(fā)明的結(jié)構(gòu)框圖。
圖2為netty通信服務(wù)系統(tǒng)邏輯架構(gòu)
圖3為本發(fā)明的流程圖。
圖4為hbase數(shù)據(jù)服務(wù)系統(tǒng)原始結(jié)構(gòu)化數(shù)據(jù)進行存儲后的示意圖。
圖5為應(yīng)用服務(wù)系統(tǒng)數(shù)據(jù)檢索的過程示意圖。
具體實施方式:
下面結(jié)合附圖與實施例對本發(fā)明作進一步說明:
應(yīng)該指出,以下詳細說明都是例示性的,旨在對本申請?zhí)峁┻M一步的說明。除非另有指明,本文使用的所有技術(shù)和科學(xué)術(shù)語具有與本申請所屬技術(shù)領(lǐng)域的普通技術(shù)人員通常理解的相同含義。
需要注意的是,這里所使用的術(shù)語僅是為了描述具體實施方式,而非意圖限制根據(jù)本申請的示例性實施方式。如在這里所使用的,除非上下文另外明確指出,否則單數(shù)形式也意圖包括復(fù)數(shù)形式,此外,還應(yīng)當理解的是,當在本說明書中使用術(shù)語“包含”和/或“包括”時,其指明存在特征、步驟、操作、器件、組件和/或它們的組合。
本發(fā)明的一種典型實施例是:
一種電動汽車遠程監(jiān)控通信服務(wù)系統(tǒng),包括netty通信服務(wù)系統(tǒng)和hbase數(shù)據(jù)服務(wù)系統(tǒng);在所述hbase數(shù)據(jù)服務(wù)系統(tǒng)與netty通信服務(wù)系統(tǒng)間設(shè)有二級索引系統(tǒng),用于封裝hbase數(shù)據(jù)服務(wù)系統(tǒng),提供數(shù)據(jù)接口;二級索引系統(tǒng)包括用于與netty通信服務(wù)系統(tǒng)連接的sql解析層以及與hbase數(shù)據(jù)服務(wù)系統(tǒng)連接的dml數(shù)據(jù)操作接口。
netty通信服務(wù)系統(tǒng)接收來自車載終端的數(shù)據(jù)并解析成sql語句發(fā)送至sql解析層,sql解析層接收netty通信服務(wù)系統(tǒng)傳遞的sql語句解析并轉(zhuǎn)換為對應(yīng)dml操作,dml數(shù)據(jù)操作接口根據(jù)sql解析層轉(zhuǎn)換的dml操作對hbase數(shù)據(jù)服務(wù)系統(tǒng)執(zhí)行讀寫操作。
如圖2所示:netty通信服務(wù)系統(tǒng)包括主反應(yīng)器,主反應(yīng)器與若干客戶端連接,主反應(yīng)器與接收器連接,接收器與子反應(yīng)器連接,子反應(yīng)器通過讀模塊與線程池連接,子反應(yīng)器還與發(fā)送模塊連接,線程池還與若干數(shù)據(jù)處理模塊連接;
所述主反應(yīng)器,用于負責響應(yīng)客戶端的連接請求,并建立連接,主反應(yīng)器只有一個,采用獨立的選擇器;
所述若干客戶端,是指并發(fā)的多個消息連接;
所述接收器,用于接收客戶端的tcp連接請求;
所述子反應(yīng)器,用于維護上述獨立的選擇器,子反應(yīng)器可以有一個或者多個,每個子反應(yīng)器都會在一個獨立線程中執(zhí)行;
所述讀模塊,用于對接收到消息的解讀并進行傳輸;
所述線程池用于消息的讀取、解碼、編碼和發(fā)送,采用標準的jdk線程池實現(xiàn),包含一個任務(wù)隊列和n個可用的線程;
所述發(fā)送模塊,用于響應(yīng)客戶端的數(shù)據(jù)請求。
所述數(shù)據(jù)處理模塊,包括:解碼請求數(shù)據(jù)單元、業(yè)務(wù)邏輯處理單元和編碼響應(yīng)單元。
所述解碼請求處理單元,用于對請求數(shù)據(jù)流進行按照數(shù)據(jù)包的信息類型進行分類;
所述業(yè)務(wù)邏輯處理單元,用于根據(jù)數(shù)據(jù)包的劃分歸類進行業(yè)務(wù)的處理;
所述編碼響應(yīng)單元,用于根據(jù)業(yè)務(wù)的處理生成sql語句進行消息的發(fā)送。
所述解碼請求處理單元是鑒于tcp通訊的“粘包”特性,在解碼時需對整包、半包、錯包分別進行適當?shù)奶幚怼?/p>
本發(fā)明的另一實施例是一種電動汽車遠程監(jiān)控通信服務(wù)方法,車載終端將實時數(shù)據(jù)流發(fā)送給netty通信服務(wù)系統(tǒng),netty通信服務(wù)系統(tǒng)對接收到數(shù)據(jù)并發(fā)送至二級索引系統(tǒng),二級索引系統(tǒng)具有與netty通信服務(wù)系統(tǒng)連接的sql解析層以及與hbase數(shù)據(jù)服務(wù)系統(tǒng)連接的dml數(shù)據(jù)操作接口;netty通信服務(wù)系統(tǒng)接收來自車載終端的數(shù)據(jù)并解析成sql語句發(fā)送至sql解析層,sql解析層接收netty通信服務(wù)系統(tǒng)傳遞的sql語句解析并轉(zhuǎn)換為對應(yīng)dml操作,dml數(shù)據(jù)操作接口根據(jù)sql解析層轉(zhuǎn)換的dml操作對hbase數(shù)據(jù)服務(wù)系統(tǒng)執(zhí)行讀寫操作。
二級索引系統(tǒng)承接netty通信服務(wù)系統(tǒng)與hbase數(shù)據(jù)服務(wù)系統(tǒng)之間的橋梁,封裝hbase數(shù)據(jù)服務(wù)系統(tǒng)的api,為應(yīng)用服務(wù)系統(tǒng)提供通用的使用接口。sql解析層針對sql語句的解析層,負責將netty通信服務(wù)系統(tǒng)通過rpc遠程調(diào)用傳遞過來的sql語句進行語義解析,轉(zhuǎn)換成為一系列的dml(datamanipulationlanguage)是數(shù)據(jù)操縱語言:它們是select、update、insert、delete,這四條命令是用來對hbase數(shù)據(jù)服務(wù)系統(tǒng)里的數(shù)據(jù)進行操作的語言)操作。dml數(shù)據(jù)操作接口主要是完成對hbaseapi的封裝,內(nèi)部分兩種接口,一種是數(shù)據(jù)的寫入接口,根據(jù)數(shù)據(jù)向hbase數(shù)據(jù)服務(wù)系統(tǒng)的數(shù)據(jù)輸入;還有中是數(shù)據(jù)的檢索接口,提供通過檢索從hbase數(shù)據(jù)服務(wù)系統(tǒng)中輸出目標數(shù)據(jù)。數(shù)據(jù)的寫入分為兩種形式,一種是通過實時的數(shù)據(jù)采集存儲,一種是離線的數(shù)據(jù)批量導(dǎo)入。
例如,insert(插入)、update(更新)等都屬于寫入操作,而select(選擇)操作就屬于檢索操作。
離線批量數(shù)據(jù)導(dǎo)入是通過將采集的數(shù)據(jù)寫入到臨時文件,在集群任務(wù)比較空閑的時候,通過對文件的處理,進行數(shù)據(jù)的批量導(dǎo)入,是一個非實時的過程。
netty通信服務(wù)系統(tǒng)是internet網(wǎng)絡(luò)上具有固定ip的計算機,通過internet網(wǎng)絡(luò)接收車載終端上傳的車身總線數(shù)據(jù)信息,對來自車輛的不同廠商的子應(yīng)用層協(xié)議加以解析成sql語句。
netty通信服務(wù)系統(tǒng)采用netty框架進行開發(fā),基于tcp協(xié)議傳輸,并結(jié)合汽車廠商的監(jiān)控需求,制訂出一套適合車輛安全隱患系統(tǒng)的私有通信協(xié)議,實現(xiàn)高并發(fā)的實時網(wǎng)絡(luò)通信要求。netty通信服務(wù)系統(tǒng)邏輯架構(gòu)如圖2所示。網(wǎng)絡(luò)通信程序?qū)?shù)據(jù)流的一般處理流程是:解碼請求數(shù)據(jù)、業(yè)務(wù)邏輯處理、編碼響應(yīng)。作為服務(wù)中心與車載終端溝通媒介,通信服務(wù)系統(tǒng)的首要職責是應(yīng)對高并發(fā)的車載終端實時數(shù)據(jù)流,數(shù)據(jù)流的接收工作由通信服務(wù)模塊的接收層(acceptor)完成。由于通信協(xié)議是透傳模式,通信服務(wù)模塊會接收到來自不同廠家的各種各樣的子協(xié)議和數(shù)據(jù)格式,在入庫存儲前還需要將這些數(shù)據(jù)解析處理為統(tǒng)一格式。所以在接收層工作完成后,還需要由數(shù)據(jù)處理層(handler)對數(shù)據(jù)進行解碼(decode)、業(yè)務(wù)處理(compute)、編碼(encode)后返回給sql解析層。
netty通信服務(wù)系統(tǒng)采用reactor模式分別應(yīng)對信息的接收和處理過程。服務(wù)系統(tǒng)的cpu處理速度遠遠快于io速度,如果cpu為了io操作而阻塞是極不劃算的。通信服務(wù)系統(tǒng)使用reactor模式來解決這個問題,由一個不斷等待和循環(huán)的單獨進程(或線程)接受各handler的注冊,并負責查詢io是否就緒,在就緒后調(diào)用指定的handler進行處理。
nett通信服務(wù)系統(tǒng)中,啟用一個mainreactor線程,負責響應(yīng)client的連接請求,并建立連接,使用一個nioselector;啟用多個subreactor線程,每個subreactor維護一個獨立的nioselector。由于subreactor會執(zhí)行一些比較耗時的io操作,例如消息的讀寫,使用多個線程去執(zhí)行,更加有利于發(fā)揮cpu的運算能力,減少io等待時間。
如圖3所示,為netty通信服務(wù)系統(tǒng)的應(yīng)用層調(diào)用到hbase數(shù)據(jù)服務(wù)系統(tǒng)之間的整體的數(shù)據(jù)流程圖,其中包括兩種數(shù)據(jù)流程,一個是數(shù)據(jù)的寫入流程,另外一個是數(shù)據(jù)的檢索流程。首先netty通信服務(wù)系統(tǒng)通過rpc遠程調(diào)用,傳遞過來應(yīng)用層的sql語句,sql語句在sql解析層執(zhí)行語義分析,通過對sql語義分析獲得的結(jié)果來判斷數(shù)據(jù)是寫入操作還是檢索操作,比如insert(插入)、update(更新)等都屬于寫入操作,而select(選擇)操作就屬于檢索操作。對于數(shù)據(jù)的寫入操作,由于不一定都是實時在線的數(shù)據(jù)寫入,又開辟了離線批量數(shù)據(jù)導(dǎo)入,其中,離線批量數(shù)據(jù)導(dǎo)入是通過將采集的數(shù)據(jù)寫入到臨時文件,在集群任務(wù)比較空閑的時候,通過對文件的處理,進行數(shù)據(jù)的批量導(dǎo)入,是一個非實時的過程。
在寫入接口中,dml數(shù)據(jù)操作接口完成sql語義到hbaseapi中的put(寫入)操作和delete(刪除)操作,完成對hbase數(shù)據(jù)服務(wù)系統(tǒng)的數(shù)據(jù)插入、更新和刪除操作;在檢索接口中,dml數(shù)據(jù)操作接口主要是完成sql語義到hbaseapi中的get(獲取)操作和一系列的scan(掃描)操作,通過對索引表格的scan(掃描)操作查找出來目標數(shù)據(jù)的rowkey(主鍵)集合,然后通過獲取的rowkey集合,通過get操作獲得目標數(shù)據(jù)集合,最終將這些數(shù)據(jù)集合返回給應(yīng)用服務(wù)系統(tǒng)。
如圖4所示,為了能實現(xiàn)快速存儲以及快速檢索,本發(fā)明通過對主鍵的操作,把原結(jié)構(gòu)化數(shù)據(jù)的主鍵部分和其中需要做索引的value字段設(shè)計在一起,由于hbase數(shù)據(jù)服務(wù)系統(tǒng)中數(shù)據(jù)存儲的特征,所有數(shù)據(jù)都按照字典序排序,這樣對于相同的value值的索引數(shù)據(jù)的存儲位置相鄰,通過對這些數(shù)據(jù)進行提取獲取原存儲數(shù)據(jù)的rowkey數(shù)據(jù)。
圖4中的原始數(shù)據(jù)就是結(jié)構(gòu)化數(shù)據(jù),每一條都由全表唯一的id標記,每個id代表的一行里面都代表不同意義的字段。在第二個表里面的數(shù)據(jù)就是原始數(shù)據(jù)寫入到hbase數(shù)據(jù)服務(wù)系統(tǒng)中數(shù)據(jù)表格的詳細情況,在原始結(jié)構(gòu)化數(shù)據(jù)中的id前面添加hash前綴組成主鍵,以存儲在數(shù)據(jù)表格的數(shù)據(jù)主鍵(datarowkey內(nèi)),后面的字段都轉(zhuǎn)化成列族columnfamily的字段。
由于結(jié)構(gòu)化數(shù)據(jù)的順序?qū)懭?,會造成hbase數(shù)據(jù)服務(wù)系統(tǒng)中數(shù)據(jù)的寫入局部熱點,數(shù)據(jù)表格的主鍵以及索引表格的主鍵在hbase數(shù)據(jù)服務(wù)系統(tǒng)中是按照字典序排序的,如果順序?qū)懭耄斐啥虝r間內(nèi)寫入的主鍵(rowkey)都集中在集群中的局部節(jié)點,嚴重影響了寫入的性能。通過添加了hash前綴從而將順序?qū)懭氲臄?shù)據(jù)通過hash離散化分配到數(shù)據(jù)表格以及索引表格中不同的節(jié)點區(qū)域,充分利用分布式存儲的并行存儲優(yōu)勢。
在原始結(jié)構(gòu)化數(shù)據(jù)寫入hbase數(shù)據(jù)服務(wù)系統(tǒng)的同時,原始結(jié)構(gòu)化數(shù)據(jù)中需要添加索引的字段要建立索引數(shù)據(jù),并且與原結(jié)構(gòu)化數(shù)據(jù)一同寫入hbase數(shù)據(jù)服務(wù)系統(tǒng)的索引表格內(nèi)。如圖中標注的indexrowkey(索引主鍵)的組成是由hash前綴、需要建立索引的字段value和結(jié)構(gòu)化數(shù)據(jù)的id組成的,在索引表格的列簇的字段空的,只是插入一條空的索引主鍵作為數(shù)據(jù)主鍵所標示的反向索引,采用空間換時間的策略,通過建立索引數(shù)據(jù)表格最終能夠大幅度提升系統(tǒng)查詢的速度。
如圖5所示,給出了實例來說明應(yīng)用服務(wù)系統(tǒng)的檢索中獲取rowkey(主鍵)集合的流程。例子中舉了對于兩個條件的數(shù)據(jù)select檢索請求。最左邊的是數(shù)據(jù)在hbase數(shù)據(jù)服務(wù)系統(tǒng)中的存儲狀態(tài),標示著原始結(jié)構(gòu)化數(shù)據(jù)寫入到hbase系統(tǒng)存儲之后的狀態(tài),接著右邊的兩個索引表格分別是數(shù)據(jù)的prov字段索引和age字段索引,在搜索省份prov為濟南jn同時年齡age為30的條目信息的時候執(zhí)行流程是這樣的,并行的在prov和age字段分別進行prov字段為jn和age為30的搜索,通過檢索查詢得到的兩個集合就是后來的prov=jn集合與age=30集合,通過對sql語句中兩個字段條件的邏輯關(guān)系判斷發(fā)現(xiàn)是“and”,那就對兩個集合求交集通過合并操作,最終發(fā)現(xiàn)主鍵的交集為0001,接下來拿著0001去數(shù)據(jù)表格中取出目標數(shù)據(jù),返回給應(yīng)用服務(wù)系統(tǒng)就完成了系統(tǒng)的檢索流程。由于此處只是為了說明下整個系統(tǒng)設(shè)計的原理,簡化了hbase數(shù)據(jù)服務(wù)系統(tǒng)中主鍵的設(shè)置與檢索流程中的一些其他的輔助措施。
本發(fā)明通過對電動汽車遠程監(jiān)控系統(tǒng)中通信服務(wù)系統(tǒng)的結(jié)構(gòu)化設(shè)計以及對netty通信服務(wù)系統(tǒng)和hbase數(shù)據(jù)服務(wù)系統(tǒng)的非植入式開發(fā),實現(xiàn)快速、高效傳輸和處理移動車輛的海量信息,實現(xiàn)對sql語句的支持,應(yīng)用服務(wù)系統(tǒng)能有效的獲取車輛的運行數(shù)據(jù),提高檢索效率,達到應(yīng)用服務(wù)系統(tǒng)對數(shù)據(jù)檢索操作的方便易用。
其中,本發(fā)明的indexrowkey(索引主鍵)的組成是由hash前綴、需要建立索引的字段value和結(jié)構(gòu)化數(shù)據(jù)的id組成的,在索引表格的列簇的字段空的,只是插入一條空的索引主鍵作為數(shù)據(jù)主鍵所標示的反向索引,采用空間換時間的策略,通過建立索引數(shù)據(jù)表格最終能夠大幅度提升系統(tǒng)查詢的速度。
以上所述僅為本申請的優(yōu)選實施例而已,并不用于限制本申請,對于本領(lǐng)域的技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本申請的保護范圍之內(nèi)。