亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種海量傳感器數(shù)據(jù)存儲與查詢方法

文檔序號:6367497閱讀:220來源:國知局
專利名稱:一種海量傳感器數(shù)據(jù)存儲與查詢方法
技術(shù)領(lǐng)域
本發(fā)明涉及傳感器數(shù)據(jù)領(lǐng)域及時態(tài)與空間數(shù)據(jù)庫領(lǐng)域,提出了ー種能夠同時支持快速時空查詢和關(guān)鍵字查詢的海量傳感器采樣數(shù)據(jù)存儲與查詢處理方法。
背景技術(shù)
目前,各類傳感器應(yīng)用系統(tǒng)中,對海量傳感器采樣數(shù)據(jù)集中存儲管理與查詢處理的需求非常強勁,例如在物聯(lián)網(wǎng)系統(tǒng)、智能交通系統(tǒng)、城市實時監(jiān)控系統(tǒng)中,需要將海量的、不同類型的、持續(xù)動態(tài)上傳的傳感器采樣值集中存放在數(shù)據(jù)中心,并通過相應(yīng)的查詢接ロ對傳感器的歷史及當前采樣值進行快速的查詢與分析處理,從而進行相應(yīng)的應(yīng)對處理。然而,針對上述需求,目前還沒有有效的解決方案。在海量數(shù)據(jù)處理方面,目前最有效的方法是云數(shù)據(jù)管理技木。但是幾乎所有的云數(shù)據(jù)管理系統(tǒng)均為“鍵值”數(shù)據(jù)庫,即按照主關(guān)鍵字對數(shù)據(jù)進行分布組織和查詢處理,從而快速地提取與查詢關(guān)鍵字相對應(yīng)的完整數(shù)據(jù)庫記錄。這種方法在應(yīng)對傳感器采樣數(shù)據(jù)時存在著諸多的局限性,例如在針對傳感器采樣數(shù)據(jù)的查詢中,僅有小部分的查詢是關(guān)鍵字查詢(如“查詢傳感器“S001”的歷次采樣數(shù)據(jù)序列”),而更多的查詢是基于時間與空間約束條件來表示的(如“查找區(qū)域A中所有空氣監(jiān)控傳感器在t時刻的采樣值”)。對于這種基于時空約束條件的查詢,“鍵值”數(shù)據(jù)庫是無法有效地進行支持的。針對海量數(shù)據(jù)處理的另ー項關(guān)鍵技術(shù)是并行數(shù)據(jù)庫技木。并行數(shù)據(jù)庫技術(shù)將多個關(guān)系數(shù)據(jù)庫組織成數(shù)據(jù)庫集群,來支持海量結(jié)構(gòu)化數(shù)據(jù)的處理。但是,這種方法在應(yīng)對傳感器采樣數(shù)據(jù)管理時同樣存在著諸多的缺陷。首先,關(guān)系數(shù)據(jù)庫集群在處理關(guān)鍵字查詢時的性能要遠低于鍵值數(shù)據(jù)庫,不能很好地支持“鍵值”查詢;其次,關(guān)系數(shù)據(jù)庫集群采用了嚴格的事務(wù)處理機制(如數(shù)據(jù)加鎖機制、多版本機制等),因此在面對頻繁更新的傳感器采樣數(shù)據(jù)時,效率十分低下,極大地限制了所能夠支持的傳感器數(shù)據(jù)的規(guī)模;最后,關(guān)系數(shù)據(jù)庫集群通常只支持常規(guī)的通用數(shù)據(jù)類型和查詢操作,而無法有效地針對復雜異構(gòu)的、帶有時空屬性的傳感器采樣數(shù)據(jù)進行表示、計算和查詢處理。

發(fā)明內(nèi)容
針對目前在海量異構(gòu)傳感器采樣數(shù)據(jù)查詢處理方面缺乏有效方法的現(xiàn)狀,本發(fā)明提出一種時空數(shù)據(jù)庫與鍵值數(shù)據(jù)庫相結(jié)合的海量傳感器采樣數(shù)據(jù)存儲與查詢處理方法(為了方便敘述,我們將該方法簡稱為“STDB-KV存儲方法”),目的是為傳感器系統(tǒng)中的海量數(shù)據(jù)管理提供一種可行的解決方案。該方法不僅能夠通過專用的數(shù)據(jù)類型和查詢操作有效地存儲和查詢傳感器歷史及當前采樣數(shù)據(jù),而且可以同時支持快速的時空查詢和關(guān)鍵字查詢。根據(jù)詳細的文獻調(diào)研分析,目前在這方面的相關(guān)研究與產(chǎn)品研發(fā)均處于空白。為了實現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案是—種海量傳感器數(shù)據(jù)存儲方法,其步驟為
I)建立一包括一根結(jié)點和若干葉結(jié)點的兩層存儲架構(gòu);其中,根結(jié)點存儲ー全局查詢所需的全局數(shù)據(jù)字典,葉結(jié)點存儲傳感器采樣數(shù)據(jù);所述全局數(shù)據(jù)字典包括一管轄區(qū)域分區(qū)表和一全局關(guān)鍵字分區(qū)表;每ー葉結(jié)點對應(yīng)一管轄區(qū)域,所有葉結(jié)點的管轄區(qū)域構(gòu)成所述管轄區(qū)域分區(qū)表;所述全局關(guān)鍵字分區(qū)表的記錄格式為(keyRange, nodeID),keyRange是關(guān)鍵字值域中的ー個區(qū)域范圍,nodeID是與該范圍相對應(yīng)的葉結(jié)點的標識;2)采樣數(shù)據(jù)接收服務(wù)器根據(jù)所述管轄區(qū)域分區(qū)表將傳感器發(fā)送來的采樣數(shù)據(jù)分配給相應(yīng)的葉結(jié)點;3)每ー葉結(jié)點將傳感器對同一監(jiān)控對象的歷次采樣值以統(tǒng)ー的形式存儲到葉結(jié)點數(shù)據(jù)庫的一個元組中,構(gòu)成該監(jiān)控對象的采樣數(shù)據(jù)序列;其中,所述數(shù)據(jù)庫采用關(guān)系表存儲所述采樣數(shù)據(jù)序列,所述關(guān)系表的字段包括監(jiān)控對象的標識ObjID、監(jiān)控對象的具體類型ObjType、部署者DeployedBy、部署時間DepoyedTime、監(jiān)控對象的宿主對象HostObj、監(jiān)控對象的采樣數(shù)據(jù)序列Samplings ;4)建立所述兩層存儲架構(gòu)的全局時空分布式索引和全局關(guān)鍵字分布式索引。 進ー步的,所述統(tǒng)ー的形式為svalue= (t, (x, y), schema, value);其中,t 為采樣時間,(x,y)采樣地點schema為采樣數(shù)據(jù)所包含的數(shù)據(jù)項以及各數(shù)據(jù)項的數(shù)據(jù)類型,value為具體的采樣數(shù)據(jù)值;如果schema和value包含多個分量,則用括號對分量的邊界進行劃分。進ー步的,所述監(jiān)控對象包括靜止監(jiān)控對象和移動監(jiān)控對象;所述傳感器的采樣數(shù)據(jù)的數(shù)據(jù)格式為(objID, staticMov, svalue),其中,objID是監(jiān)控對象的標識,StaticMov標明監(jiān)控對象是靜止的還是移動的。進ー步的,按照時間順序存儲同一監(jiān)控對象的η次采樣值,所述移動監(jiān)控對象采樣數(shù)據(jù)序列的存儲形式為SamplingSequence = (schema, ((th (xh yt), value,, flag,)) ),
所述靜止監(jiān)控對象采樣數(shù)據(jù)序列的存儲形式為SamplingSequence = (schema, (x, y), ((th value,, flagt))"=l );其中,是第 i 個采樣值的采樣時
間、(Xi,Yi)第i個采樣值的采樣地點、Valuei第i個采樣值的實際采樣數(shù)值,Tlagi表示第i個采樣值是否為該數(shù)據(jù)序列中的一個間斷點。進ー步的,對姆ー移動監(jiān)控對象mObj建立ー個集合nodes (mObj),用于記錄該mObj在監(jiān)控時間范圍內(nèi)其所經(jīng)過管轄區(qū)域的所有葉結(jié)點。進ー步的,如果ー移動監(jiān)控對象在監(jiān)控時間內(nèi)經(jīng)過多個管轄區(qū)域,即同一移動監(jiān)控對象mObj對應(yīng)多個元組,nodes (mObj)中姆個葉結(jié)點存儲其中一個元組,則該移動監(jiān)控對象mObj在不同葉結(jié)點中的元組的屬性值ObjID、ObjType、DeployedBy、DepoyedTime、HostObj是相互復制的,而其Samplings屬性值則在nodes (mObj)中的各葉結(jié)點之間進行分割。進ー步的,分割Sampl ings屬性值的方法為采用插值計算方法,計算出nodes (mObj)中相鄰兩個葉結(jié)點管轄區(qū)域邊界的采樣值,并將該采樣值分別發(fā)送給兩個管轄區(qū)域?qū)?yīng)的葉結(jié)點進行存儲。進ー步的,任意兩個不同的葉子結(jié)點的管轄區(qū)域均不相交,所有葉結(jié)點的管轄區(qū)域并集為設(shè)定的總的地理區(qū)域。進ー步的,所述全局時空分布式索引為分布式全局關(guān)鍵字B+樹索引,其為一三層結(jié)構(gòu),其中第一層為存放在根結(jié)點的所述全局關(guān)鍵字分區(qū)表,第二層為葉結(jié)點中的關(guān)鍵字到葉結(jié)點標識的映射B+樹,第三層為存放在各個葉結(jié)點中的本地數(shù)據(jù)元組全文關(guān)鍵字索引;所述全局關(guān)鍵字分布式索引為ー兩層結(jié)構(gòu),其中,第一層是存放在根結(jié)點上的所述管轄區(qū)域分區(qū)表;第二層是各個葉結(jié)點上的傳感器采樣數(shù)據(jù)序列時空索引樹S4T-Tree ;所述S4T-Tree 一用以對靜止監(jiān)控對象的空間位置進行索引的空間R樹,一用于對移動監(jiān)控對象的隨時間動態(tài)變化的位置進行索引的格柵概略化時空R樹。進ー步的,所述映射B+樹的創(chuàng)建方法為每個葉結(jié)點從自己的本地元組中提取關(guān)鍵字,并對姆個關(guān)鍵字生成ー個(keyword, nodeID)偶對;隨后,該葉結(jié)點根據(jù)所述全局關(guān)鍵字分區(qū)表將各個偶對發(fā)送給相應(yīng)的葉結(jié)點,然后每個葉結(jié)點根據(jù)收到一組來自于其他各個葉結(jié)點的(keyword, nodeID)集合構(gòu)建所述映射B+樹;所述全文關(guān)鍵字索引中葉結(jié)點記錄格式為(keyword, Set (tupleID));所述管轄區(qū)域分區(qū)表中的記錄的格式為(area,nodeID);所述格柵概略化時空R樹的建立方法為首先將時空三維空間劃分成設(shè)定粒度的等距格柵,然后將每個移動監(jiān)控對象的軌跡映射成對應(yīng)的概略化軌跡單元,所述概略化軌跡單元是原始軌跡所穿過的格柵單元的中心點連線,最后對概略化軌跡單元進行R樹索弓丨,從而建立格柵概略化時空R樹;其中,keyword是ー個關(guān)鍵字,set(tupID)是所有包含某關(guān)鍵字的所有元組的標識集合,nodeID為葉結(jié)點的標識,area為ー個地理區(qū)域。一種海量傳感器數(shù)據(jù)存儲數(shù)據(jù)的查詢方法,其步驟為a)根結(jié)點判斷接收的查詢條件的查詢類型;b)如果是關(guān)鍵字查詢,則根結(jié)點將調(diào)用全局關(guān)鍵字索引來得到查詢結(jié)果;c)如果是時空查詢,則根結(jié)點將調(diào)用全局時空索引來得到查詢結(jié)果,即首先檢查管轄區(qū)域分區(qū)表,得到管轄區(qū)域與查詢條件中指定的空間區(qū)域相交的葉結(jié)點,然后將查詢條件發(fā)送給這些葉結(jié)點并行執(zhí)行;根結(jié)點匯總各葉結(jié)點的查詢結(jié)果并返回給查詢用戶。進ー步的,所述根結(jié)點中提供下列ー個或多個操作針對采樣數(shù)據(jù)序列SamplingSequence數(shù)據(jù)類型的查詢操作atlnstant操作,空間投影操作sProjectLines、sProjectPoints 和時間投影操作 sProjectTime ;空間截取操作sTruncateGeo,時間截取操作sTruncateTime,新采樣數(shù)據(jù)插入操作sampIingAppend ;對采樣值的投影操作vPro jectTime和vPro jectPoint,以及數(shù)據(jù)提取操作getComponent ,其中,atlnstant操作的實現(xiàn)方法為如果輸入時間t正好為采樣數(shù)據(jù)序列中某個關(guān)鍵采樣值所對應(yīng)的時間,即t = tj, j e [I, η],貝U直接將該關(guān)鍵采樣值(tj, (Xj, Yj), schema,Valuej)作為結(jié)果返回;如果もィ< t < tj, j e [2, η],且第j個采樣值為間斷點,貝U返回未定義;如果不是間斷點,則通過插值方法得到t時刻的結(jié)果;如果t < h,則直接返回未定義;如果 t > tn,則返回(tn, (xn, yn),schema, valuej ;sPro jectLines操作為針對移動監(jiān)控對象的采樣數(shù)據(jù)序列向空間平面上投影,如果不滿足則返回未定義;sPro jectPoints操作為針對靜止監(jiān)控對象的采樣數(shù)據(jù)序列向空間平面上投影,如果不滿足則返回未定義;sProjectTime操作為將采樣數(shù)據(jù)序列向時間軸上投影,如果不滿足則返回未定 義;
sTruncateGeo操作為根據(jù)給定的空間范圍截取采樣數(shù)據(jù)序列的一部分;sTruncateTime操作為根據(jù)給定的時間范圍截取采樣數(shù)據(jù)序列的一部分;samplingAppend操作為將ー個新的采樣值附加到采樣數(shù)據(jù)序列的末尾,同時根據(jù)預定義的監(jiān)控時間長度淘汰采樣數(shù)據(jù)序列中過時的采樣數(shù)據(jù);vProjectTime操作為提取采樣值對應(yīng)的時間;vProjectPoint操作為提取采樣值對應(yīng)的地點;getComponent操作為提取采樣值的某個指定的分量;其中,采樣數(shù)據(jù)序列SamplingSequence = (schema, (th ((xh yt), value,, flag,)) n1=l ), tj
是第i個采樣值的采樣時間、(Xi,Yi)第i個采樣值的采樣地點、Valuei第i個采樣值的實際采樣數(shù)值,schema為采樣數(shù)據(jù)所包含的數(shù)據(jù)項以及各數(shù)據(jù)項的數(shù)據(jù)類型,flag,表示第i個采樣值是否為該數(shù)據(jù)序列中的一個間斷點,η為采樣數(shù)據(jù)序列的采樣次數(shù)。本發(fā)明的主要內(nèi)容為(I)針對傳感器采樣數(shù)據(jù)的異構(gòu)性、時空相關(guān)性、動態(tài)上傳性,設(shè)計并實現(xiàn)了適用于傳感器采樣數(shù)據(jù)的專門的數(shù)據(jù)類型與查詢操作,進而構(gòu)成了傳感器時空數(shù)據(jù)庫模型。在傳感器時空數(shù)據(jù)庫中,將同一個監(jiān)控對象的歷次傳感器采樣數(shù)據(jù)組織成采樣數(shù)據(jù)序列,并存放在同一個元組中,通過查詢操作進行時空計算,從而實現(xiàn)傳感器采樣數(shù)據(jù)的存儲、復雜計算與查詢處理。監(jiān)控對象與傳感器相對應(yīng),根據(jù)它們的位置是否發(fā)生變化,可以分為靜止監(jiān)控對象(如太湖中的水溫傳感器)和移動監(jiān)控對象(如車輛上的GPS傳感器)。(2)針對傳感器采樣數(shù)據(jù)的海量性,設(shè)計并實現(xiàn)了傳感器時空數(shù)據(jù)庫集群方法,通過將大量的傳感器時空數(shù)據(jù)庫組織成集群,并在此基礎(chǔ)上通過全局關(guān)鍵字索引、全局時空索引以及全局查詢處理機制,可以同時支持快速的時空查詢和關(guān)鍵字查詢。與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為(I)提出了ー種能夠同時支持“鍵-值”查詢和普通SQL查詢的傳感器數(shù)據(jù)庫集群框架。通過在關(guān)系數(shù)據(jù)庫集群的基礎(chǔ)上建立分布式的全局關(guān)鍵字索引及全局關(guān)鍵字查詢處理機制,使得傳感器數(shù)據(jù)庫集群可以兼容多種查詢類型的快速處理,突破了目前云數(shù)據(jù)管理技術(shù)主要針對“鍵-值”查詢、并行數(shù)據(jù)庫技術(shù)主要針對SQL查詢的局限。(2)提出了一種能夠應(yīng)對傳感器采樣數(shù)據(jù)的異構(gòu)性、時空相關(guān)性和動態(tài)流式特性的傳感器時空數(shù)據(jù)庫模型。通過采樣數(shù)據(jù)序列等數(shù)據(jù)類型和相應(yīng)的查詢操作,在數(shù)據(jù)庫內(nèi)核一級實現(xiàn)了傳感器采樣數(shù)據(jù)的統(tǒng)一表示、存儲、計算和查詢,突破了目前時空數(shù)據(jù)庫主要針對靜態(tài)的空間數(shù)據(jù)或相對單ー的時空數(shù)據(jù)、缺乏有效的異構(gòu)數(shù)據(jù)流表示方法的局限。(3)提出了ー種地理區(qū)域敏感的傳感器采樣數(shù)據(jù)分布策略,并在此基礎(chǔ)上提出了ー種分布式的全局時空索引和全局時空查詢處理方法,突破了目前時空數(shù)據(jù)庫主要針對單機環(huán)境、缺乏時空數(shù)據(jù)庫集群相關(guān)方法的局限。


圖I是STDB-KV存儲系統(tǒng)的體系結(jié)構(gòu);圖2是傳感器采樣數(shù)據(jù)序列在各葉子結(jié)點之間的數(shù)據(jù)分割及分布的示意圖;圖3分布式全局關(guān)鍵字索引GFTKB+-Tree的結(jié)構(gòu); 圖4是格柵概略化時空R樹GSSTR-Tree的結(jié)構(gòu);
圖5是STDB-KV存儲方法的查詢處理流程示意圖。
具體實施例方式下面分四個部分闡述本發(fā)明的主要內(nèi)容。I. STDB-KV存儲方法的總體系統(tǒng)結(jié)構(gòu)在傳感器海量數(shù)據(jù)管理系統(tǒng)(如物 聯(lián)網(wǎng)系統(tǒng)、傳感器監(jiān)控系統(tǒng))中,數(shù)據(jù)中心通常需要對海量傳感器采集的數(shù)據(jù)進行實時的存儲和查詢處理。為了保證系統(tǒng)的快速查詢處理性能,我們可以通過STDB-KV存儲方法,將大量的傳感器時空數(shù)據(jù)庫結(jié)點組織成一個協(xié)同工作的集群存儲系統(tǒng)。STDB-KV存儲系統(tǒng)的體系結(jié)構(gòu)如圖I所示。如圖I所示,STDB-KV存儲系統(tǒng)是ー個數(shù)據(jù)庫集群系統(tǒng)。在STDB-KV存儲系統(tǒng)中,所有的數(shù)據(jù)庫結(jié)點(包括根結(jié)點和各個葉結(jié)點)均為傳感器時空數(shù)據(jù)庫(見下面“2.傳感器時空數(shù)據(jù)庫中的數(shù)據(jù)類型與查詢操作”),傳感器時空數(shù)據(jù)庫不僅保留了關(guān)系數(shù)據(jù)庫的全部功能,而且還通過專門針對傳感器采樣數(shù)據(jù)設(shè)計的數(shù)據(jù)類型、查詢操作和時空索引等方式,提供對傳感器采樣數(shù)據(jù)存儲和時空計算查詢的支持。傳感器時空數(shù)據(jù)庫可以通過以下兩種方式得到(I)在開放源代碼的數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上,通過在內(nèi)核中増加第2節(jié)所定義的數(shù)據(jù)類型和查詢操作得到;(2)在允許用戶自定義數(shù)據(jù)類型和查詢操作的商用數(shù)據(jù)庫的基礎(chǔ)上,通過在系統(tǒng)開放給用戶的接口中増加第2節(jié)所定義的數(shù)據(jù)類型和查詢操作得到。STDB-KV存儲系統(tǒng)采用兩層架構(gòu),其中葉結(jié)點存儲真正的傳感器采樣數(shù)據(jù),而根結(jié)點則存儲為了進行全局查詢所需要的全局數(shù)據(jù)字典。全局數(shù)據(jù)字典主要包括第3. I節(jié)中提到的“管轄區(qū)域分區(qū)表”和第3. 2. I節(jié)中提到的“全局關(guān)鍵字分區(qū)表”。所有的查詢均提交給根結(jié)點,根結(jié)點通過全局查詢處理模塊,實現(xiàn)對查詢的全局處理。在STDB-KV存儲系統(tǒng)中,通過建立分布式的全局關(guān)鍵字索引(詳見第3. 2. I節(jié))和全局時空索引(詳見第3. 2.2節(jié)),整個系統(tǒng)可以同時支持快速的關(guān)鍵字查詢和時空查詢。2.傳感器時空數(shù)據(jù)庫中的數(shù)據(jù)類型與查詢操作在本部分,我們闡述在單個傳感器時空數(shù)據(jù)庫結(jié)點中,如何使用統(tǒng)ー的數(shù)據(jù)庫表示方式,對異構(gòu)的傳感器采樣數(shù)據(jù)進行存儲與查詢處理。我們設(shè)數(shù)據(jù)庫中已經(jīng)實現(xiàn)了標準數(shù)據(jù)類型、空間數(shù)據(jù)類型等基本數(shù)據(jù)類型以及基于這些數(shù)據(jù)類型的相關(guān)查詢操作。在傳感器時空數(shù)據(jù)庫中,通過針對傳感器采樣數(shù)據(jù)專門設(shè)計的數(shù)據(jù)類型(詳見第2. I節(jié))和查詢操作(詳見第2. 2節(jié)),可以允許各種異構(gòu)的傳感器結(jié)點的接入并上傳異構(gòu)的采樣數(shù)據(jù)。每ー種類型的傳感器所上傳的采樣數(shù)據(jù)均可以具有不同的數(shù)據(jù)格式,但它們的共同特點是均具有時空特性即每個傳感器采樣數(shù)據(jù)均對應(yīng)于ー個具體的采樣時間t e Instant和ー個具體的采集地點(x,y) e Point。此外,為了支持對同一個傳感器歷次采樣值的集中提取和插值計算,傳感器采樣數(shù)據(jù)需要以監(jiān)控對象為單位進行組織,表現(xiàn)出序列性和動態(tài)變化的流式特性。所謂監(jiān)控對象是指傳感器所監(jiān)控的各種物理目標。在絕大多數(shù)情況下,一個監(jiān)控對象即對應(yīng)于一個傳感器(如太湖中的ー個溫度傳感器可看成是ー個監(jiān)控對象,對應(yīng)于ー個具體的溫度監(jiān)測點,因此太湖中可包含大量的監(jiān)控對象);但某些時候二者并不具有一一對應(yīng)的關(guān)系,例如RFID傳感器與所監(jiān)控的車輛或貨物之間并沒有固定的對應(yīng)關(guān)系-帯有RFID標簽的監(jiān)控對象的采樣數(shù)據(jù)序列是由整個系統(tǒng)中的多個RFID傳感器所采集的數(shù)據(jù)匯總而成的。根據(jù)監(jiān)控對象的位置是否移動,我們可以將它們分為兩大類靜止監(jiān)控對象(如太湖中固定布設(shè)的溫度傳感器、車庫中的剰余車位計數(shù)器等)和移動監(jiān)控對象(如帶GPS、RFID標簽、條形碼的車輛與貨物等)。為了對異構(gòu)傳感器流式時空相關(guān)數(shù)據(jù)進行有效的管理,我們通過下面將要定義的新數(shù)據(jù)類型和查詢操作等,實現(xiàn)對傳感器采樣數(shù)據(jù)的統(tǒng)ー管理。其中,數(shù)據(jù)類型規(guī)定了傳感器采樣數(shù)據(jù)在數(shù)據(jù)庫中的表示及存儲方式,使得數(shù)據(jù)庫定義語言(DDL)中可以直接使用這些新的數(shù)據(jù)類型(見前文中Create Table語句所建立的數(shù)據(jù)庫模式),而查詢操作則使得新的數(shù)據(jù)類型可以在數(shù)據(jù)庫操作語言(DML)中直接被解析(見第4節(jié)中的查詢例子Ql Q5)。DDL和DML通常采用目前關(guān)系數(shù)據(jù)庫通用的SQL格式,因此本發(fā)明中也沿用SQL語言的格式。
為了方面闡述,我們假設(shè)數(shù)據(jù)庫已經(jīng)能夠支持標準數(shù)據(jù)類型(如Int、Bool、Real、String、Instant等)、空間數(shù)據(jù)類型(如Point、Polyline、Region等)以及基于它們的查詢操作(如 +、-、*、/、>、<、=、distance、overlap、intersect 等),而集中討論與傳感器采樣數(shù)據(jù)有關(guān)的數(shù)據(jù)類型和查詢操作。此外,本部分主要介紹傳感器時空數(shù)據(jù)庫中的數(shù)據(jù)類型和查詢操作,而數(shù)據(jù)索引統(tǒng)ー放到第3節(jié)中的全局索引中進行說明。2. I傳感器采樣數(shù)據(jù)類型在本小節(jié),我們首先定義傳感器單個采樣數(shù)據(jù)的表示方法,在此基礎(chǔ)上,給出監(jiān)控對象的采樣數(shù)據(jù)序列的表示方法。通過這些數(shù)據(jù)類型,數(shù)據(jù)庫內(nèi)核可以對異構(gòu)的傳感器采樣數(shù)據(jù)流進行統(tǒng)一的表示與存儲處理。在傳感器時空數(shù)據(jù)庫結(jié)點中,同一個監(jiān)控對象(如氣象傳感器、溫度傳感器、物流車輛GPS傳感器等)的歷次采樣值是存放在一起的,它們構(gòu)成ー個采樣數(shù)據(jù)序列,反映被監(jiān)控對象的狀態(tài)隨時間變化的完整過程。數(shù)據(jù)序列被定義成単獨的數(shù)據(jù)類型(見定義3),因此同一監(jiān)控對象的多個采樣數(shù)據(jù)所構(gòu)成的數(shù)據(jù)序列是集中存放的,僅占據(jù)數(shù)據(jù)庫中的一條記錄,從而提高了處理的效率。在傳感器采樣值及采樣數(shù)據(jù)序列的定義中,我們通過引入類型描述(見定義I中的“ schema”),使得所有不同類型的傳感器采樣數(shù)據(jù)可以以統(tǒng)ー的形式進行表示。定義I (傳感器采樣值)傳感器的單個采樣值SamplingValue可以表示為如下形式SamplingValue = (t, (x, y), schema, value)其中,t e Instant和(x, y) e Point分別是該采樣值所對應(yīng)的采樣時間和采樣地點;schema e String和value e String分別是采樣數(shù)據(jù)的“型”和“值”,其中“型”描述了采樣數(shù)據(jù)所包含的數(shù)據(jù)項以及各數(shù)據(jù)項的數(shù)據(jù)類型,“值”是具體的采樣數(shù)據(jù)值。由于采樣值可能包含多個分量,因此需要用括號對分量的邊界進行劃分。例如,第4節(jié)中給出了風速風向傳感器采樣值的例子,該采樣值的型為“ (windspeed real) (winddir real) ”,值為 “ (62. 5) (22) ”。
傳感器的采樣值可以由多個分量組成。為了進一歩表示傳感器采樣值的分量,我們定義如下SamplingComponent數(shù)據(jù)類型。定義2(采樣值的分量)傳感器采樣值的分量SamplingComponent可以表示為如下形式SamplingComponent = (cSchema, cValue)其中,cSchema e String, cValue e String分別是采樣值分量的“型”和“值”。
定義3(采樣數(shù)據(jù)序列)同一個監(jiān)控對象的歷次采樣值(可以來自于同一個傳感器,也可以來自于多個傳感器)按照時間序列存放在一起,構(gòu)成該對象的“采樣數(shù)據(jù)序列(Sampling Sequence) ”,表示為如下形式SamplingSequence = (schema, (( , (x,, y,), Valuei^flag1)) "=1 )其中,schema e String是采樣序列中各采樣值的“型”,tj e Instant、(Xi,Yi) e Point和Valuei e String分別是第i個采樣值的采樣時間、采樣地點以及實際的采樣數(shù)值,flagi e Bool表示第i個采樣值是否為該數(shù)據(jù)序列中的一個“間斷點”,即ー個新片斷的起點。 下面讓我們來進ー步討論fIagi。在STDB-KV存儲系統(tǒng)中,數(shù)據(jù)是根據(jù)地理區(qū)域進行分布的(詳見第3. I節(jié))。對于移動監(jiān)控對象來說,其采樣數(shù)據(jù)序列可以被分割成多個片段,并被存儲在不同的數(shù)據(jù)庫結(jié)點中,而flagi則用于表示對應(yīng)的采樣值是否為一個新片段的起點。對于靜止監(jiān)控對象,盡管不存在采樣數(shù)據(jù)序列分割的問題,但Hagi仍然是需要的,可用于表示監(jiān)控過程被暫時掛起的情況,flag,仍為該數(shù)據(jù)序列中的一個“間斷點”。由于靜止監(jiān)控對象的位置保持不變,此時SamplingSequence的格式可以簡化為SamplingSequence = (schema, (x, y), (( , valuehflagi))ni=l )靜止監(jiān)控對象和移動監(jiān)控對象的采樣數(shù)據(jù)序列在格式上稍有區(qū)別,由數(shù)據(jù)庫系統(tǒng)自動進行區(qū)分和處理。在系統(tǒng)實現(xiàn)時,SamplingSequence數(shù)據(jù)類型被設(shè)計成ー個指向外存文件數(shù)據(jù)塊的指針,真實的采樣數(shù)據(jù)序列被存放在文件塊中,而不是直接存放在元組中。這樣當新的采樣數(shù)據(jù)到來并淘汰舊的采樣數(shù)據(jù)時,只需要直接修改文件數(shù)據(jù)塊即可,而不需要對數(shù)據(jù)庫元組進行修改,從而提高了處理的效率。注意,上述數(shù)據(jù)類型使得數(shù)據(jù)庫的DDL可以直接地表示傳感器數(shù)據(jù)類型,例如通過上述數(shù)據(jù)類型,我們可以建立關(guān)系表用以表示和存儲傳感器網(wǎng)及物聯(lián)網(wǎng)中各監(jiān)控對象的采樣數(shù)據(jù)序列,如CREATE TABLE IoTData(ObjID String, ObjType String, DeployedBy String,DepoyedTime Instant, HostObj String, Samplings SamplmgSequence);在上述關(guān)系表模式中,ObjID、ObjType、DeployedBy、DepoyedTime分別是監(jiān)控對象的標識、監(jiān)控對象的具體類型(如GPS、RFID、攝像識別傳感器、溫度傳感器等)、部署者、部署時間,HostObj是該監(jiān)控對象的宿主對象(如太湖中的傳感器的宿主對象為太湖),Samplings是該監(jiān)控對象的采樣數(shù)據(jù)序列。在傳感器時空數(shù)據(jù)庫中,為了支持對本地數(shù)據(jù)的快速存取,需要建立若干基于本地數(shù)據(jù)的索引。這些索引分為兩類
(I)屬性索弓丨,即建立在IoTData表上的除了采樣序列之外的各個屬性(即ObjID,ObjType,DeployedBy,DepoyedTime,HostObj)上的索引。這類索引可以通過調(diào)用數(shù)據(jù)庫系統(tǒng)提供的“ Create Index On”語句建立;(2)本地數(shù)據(jù)元組全文關(guān)鍵字索引(LFTKB+-Tree)和傳感器采樣數(shù)據(jù)序列索引樹(S4T-Tree)。這類索引雖然是針對本地數(shù)據(jù)的,但它們是屬于全局索引的一部分,因此我們在第3. 2節(jié)中再對它們進行詳細討論。2. 2傳感器數(shù)據(jù)的查詢操作上述數(shù)據(jù)類型允許我們在數(shù)據(jù)庫內(nèi)核中以統(tǒng)ー的數(shù)據(jù)格式表示異構(gòu)的傳感器采樣數(shù)據(jù)序列,并使得數(shù)據(jù)庫定義語言(DDL)可以直接地使用這些傳感器數(shù)據(jù)類型。但是為了對傳感器數(shù)據(jù)進行查詢和計算,我們還需要在這些數(shù)據(jù)類型的基礎(chǔ)上建立一系列的查詢操作。本節(jié)中所定義的每個查詢操作均需要在數(shù)據(jù)庫內(nèi)核中通過編程實現(xiàn)相應(yīng)的操作函數(shù),并將該操作函數(shù)登記在數(shù)據(jù)庫系統(tǒng)的操作列表中。按照本發(fā)明中規(guī)定的各操作的語 義以及輸入、輸出參數(shù),操作的編程實現(xiàn)是相對簡單的。例如,atlnstant操作用于計算監(jiān)控對象在某個給定時間t的狀態(tài)值,該操作的輸入分別為ー個SamplingSequence型的值(設(shè)為sequ)和ー個Instant型的值(設(shè)為t),輸出ー個SamplingValue型的值(設(shè)為sv)。在編程實現(xiàn)時,只需要將sequ視為多維狀態(tài)空間中的一條折線,通過插值計算的方法計算出t時刻所對應(yīng)的折線上的點,即可得到輸出結(jié)果sv。查詢操作使得數(shù)據(jù)庫操作語言(DML)可以對新定義的傳感器數(shù)據(jù)類型進行計算、解析和操縱。雖然DDL和DML統(tǒng)稱為數(shù)據(jù)庫的查詢語言,但是按照功能來說,DML實際包括查詢和修改(含增、刪、改)兩大功能。2. 2. I針對SamplingSequence數(shù)據(jù)類型的操作針對SamplingSequence數(shù)據(jù)類型的最重要的查詢操作是atlnstant操作,該操作計算監(jiān)控對象在某個給定時間t的狀態(tài)值,其語法格式如下(在操作的語法格式定義中,符號“一”兩邊分別是該操作的輸入數(shù)據(jù)和輸出數(shù)據(jù)的數(shù)據(jù)類型;如果操作有多個輸入數(shù)據(jù),則輸入數(shù)據(jù)類型之間用“ X ”進行連接):atlnstant :S&mpiingSequerice X Instant S&mpIingVaiue假設(shè)atlnstant操作的兩個輸入分別是sequ e SamplingSequence和t e Instant,即查詢條件是 sequ 和 t,其中·=(schema, (th ((xh y^), value,, flag,)))。如果t正好為某個關(guān)鍵采樣值所對應(yīng)的時間,即t = tj (j e [I, η]),則atlnstant操作直接將該關(guān)鍵采樣值(tj, (xj, Yj), schema, Valuej)作為結(jié)果返回;如果もィ< t < tj (j e [2,η]),則需要進ー步檢查fIagj :如果flagj = True,則表明第j個采樣值為間斷點,此時返回“未定義”(用“丄”表示);如果flag〗=False,則需要通過插值的方法得到t時刻的結(jié)果。如果t < h,則直接返回“丄”;如果t > tn,則返回(tn, (xn, yn),schema, valuen)(注意,此時返回值中用的是tn而不是t,用以表明采樣的實際時間)。通過atlnstant操作,數(shù)據(jù)庫可以支持監(jiān)控對象在監(jiān)控時間段內(nèi)任意時刻的狀態(tài)查詢。為了提取采樣數(shù)據(jù)序列的時空屬性,支持復雜時空約束條件的表達,使得查詢語句可以表示復雜的約束條件,我們還需要定義投影操作??臻g投影操作sProjectLines、sProjectPoints和時間投影操作sProjectTime分別將采樣數(shù)據(jù)序列向空間平面和時間軸上投影,它們的語法格式如下sProjectLines SampIingSequence — Lines (針對移動監(jiān)控對象)sPro jectPoint Samp I ingSequence — Point (針對浄止監(jiān)控對象)sProjectTime SampIingSequence — Periods在上述空間投影操作中,sProjectLines和sProjectPoints分別針對移動監(jiān)控對象和靜止監(jiān)控對象,如果上述條件不滿足,則返回“丄”。空間截取操作sTruncateGeo和時間截取操作sTruncateTime分別根據(jù)給定的空間范圍和時間范圍截取采樣數(shù)據(jù)序列的一部分,它們的語法格式如下sTruncateGeo :bamplingbequenceXRegion — SamplmgbequencesTruncateTime SamplingSequence XPeriods — SamplingSequence上述這些操作的實現(xiàn)需要在數(shù)據(jù)庫內(nèi)核編制程序。例如時間投影操作sProjectTime可以如下實現(xiàn)如果只考慮時空屬性,采樣數(shù)據(jù)序列可以看成是時空三維空間(即XXYXT空間)中的一條曲線,將該曲線向時間軸進行投影(取出每個曲線段的開始時間和結(jié)束時間,構(gòu)成一個時間段。整個采樣數(shù)據(jù)序列可以包含多個曲線段,因此其投影可以包括多個時間段,所以sProjectTime的結(jié)果是Periods型的值),即可得到所需要的結(jié)果O為了支持新采樣值到采樣數(shù)據(jù)序列的插入,我們定義samplingAppend操作。該操作將ー個新的采樣值(連同表示是否為間斷點的標識)附加到采樣數(shù)據(jù)序列的末尾,同時根據(jù)系統(tǒng)中預定義的監(jiān)控時間長度(如3個月)淘汰采樣數(shù)據(jù)序列中過時的采樣數(shù)據(jù)。該操作的語法格式如下samplingAppend Samp I ingSequence X SamplingValue X Boo 丄—SamplingSequenc
e2. 2. 2針對SamplingValue數(shù)據(jù)類型的操作針對SamplingValue的操作主要包括對采樣值的投影操作vProjectTime和vProjectPoint,以及數(shù)據(jù)提取操作getComponent。它們的語法格式如下vProjectTime SamplingValue — InstantvProjectPoint SamplingValue — PointgetComponent SamplingValueX integer — SamplingComponent如果將SamplingSequence看成監(jiān)控對象的狀態(tài)曲線,則SamplingValue型的值實際上對應(yīng)于監(jiān)控對象狀態(tài)曲線中的一個點。因此,vProjectTime、和vProjectPoint操作的結(jié)果分別是Instant和Point型的值。在實現(xiàn)這些操作的相關(guān)操作函數(shù)時,只需要取出SampIingValue型的值中所包含的時間、地點即可。由于SamplingValue型的值可以有多個分量,getComponent操作根據(jù)指定的分量序號i,取出采樣值的第i個分量。2. 2. 3其他操作為了實現(xiàn)SamplingComponent數(shù)據(jù)類型與數(shù)據(jù)庫中其他數(shù)據(jù)類型的交互操作, 還需要對數(shù)據(jù)庫中的各種標準查詢操作(如+、_、X、/、<、=、>等)和空間查詢操作、如 inside, intersect, toucfies, distance, direction, overlap 等);tiH丁擴允,使得SamplingComponent可以作為這些操作的輸入數(shù)據(jù)類型參與這些操作的計算。例如,“=”操作在擴充之后的語法格式為(設(shè)“BASE”和“SPATIAL”分別是標準數(shù)據(jù)類型的集合和空間數(shù)據(jù)類型的集合)= : a X β — Bool其中α,β G {samplingComponent} U BASE U SPATIAL。此外,在STDB-KV存儲系統(tǒng)中,所有的查詢均是以SQL語句的格式提交的,即便對于關(guān)鍵字查詢也套用SQL語句的格式。為此,我們定義如下keySearch操作,以提供關(guān)鍵字查詢接ロ keySearch string — set (tuple)注意,所有的上述操作均與查詢有夫,它們使得數(shù)據(jù)庫的DML可以使用這些操作對第2. I節(jié)中定義的新數(shù)據(jù)類型進行各種查詢和修改,使得查詢用戶的各種約束條件及查詢需求可以在查詢語句中得以表達。具體例子請見第4節(jié)。3.將多個傳感器時空數(shù)據(jù)庫組成STDB-KV數(shù)據(jù)庫集群的方法3. I全局數(shù)據(jù)分布策略在第2節(jié),我們講述了單個傳感器時空數(shù)據(jù)庫是如何表示、存儲和查詢傳感器采樣數(shù)據(jù)的。在本節(jié),我們討論如何在多個傳感器時空數(shù)據(jù)庫所構(gòu)成的集群中,如何分配和分布存儲傳感器的數(shù)據(jù)。在STDB-KV存儲系統(tǒng)中,所有新的采樣值均被發(fā)送給采樣數(shù)據(jù)接收服務(wù)器(見圖I)。由采樣數(shù)據(jù)接收服務(wù)器按照下面描述的規(guī)則進行多個結(jié)點之間數(shù)據(jù)的分配。在下面的討論中,我們假設(shè)數(shù)據(jù)庫的模式(schema)如前面Create Table語句所描述。在STDB-KV存儲系統(tǒng)中,每個葉結(jié)點node對應(yīng)于ー個地理區(qū)域,稱之為該結(jié)點的“管轄區(qū)域”,記為a (node)。所有葉結(jié)點的管轄區(qū)域形成“管轄區(qū)域分區(qū)表(Service AreaPartitioning Table,簡稱SAP-Table) ”,并存放在根結(jié)點和采樣數(shù)據(jù)接收服務(wù)器中。設(shè)STDB-KV存儲系統(tǒng)包含η個葉結(jié)點=Iiode1, node2,· · ·,noden,且總的應(yīng)用地理
區(qū)域為A,則有如下條件成立
Π) V/.7 (/ Φ j) : a(nodet) n ainodej) = 0;
η(2) (J node ,. = A
/=1上述條件(I)的含義是任意兩個不同的葉子結(jié)點的管轄區(qū)域均不相交;條件(2)的含義是所有葉子結(jié)點的管轄區(qū)域的并集構(gòu)成整個應(yīng)用地理區(qū)域A。通過上述兩個條件可以看出,所有葉子結(jié)點的管轄區(qū)域是對總應(yīng)用地理區(qū)域的ー個劃分。各個監(jiān)控對象的元組是根據(jù)它們的空間屬性分布在不同的葉結(jié)點中的。對于靜止監(jiān)控對象,由于它們的位置不發(fā)生變化,因此每個對象僅對應(yīng)于一個元組,且該元組存放在管轄區(qū)域包含該監(jiān)控對象的葉結(jié)點中。對于移動監(jiān)控對象的數(shù)據(jù)分布要稍微復雜ー些。設(shè)mObj是任意一個移動監(jiān)控對象,nodes (mObj)是ー個集合,該集合中包含所有mObj在監(jiān)控時間范圍內(nèi)其所經(jīng)過管轄區(qū)域的所有葉結(jié)點。在實際存儲時,mObj對應(yīng)于多個元組,nodes(mObj)中的姆個葉結(jié)點中存放其中的一個元組,這些元組除了監(jiān)控對象的采樣數(shù)據(jù)序列的屬性(即“Samplings”屬性)之外的其他屬性值(ObjID、ObjType、DeployedBy、DepoyedTime、HostObj)是相互復制的,而其“Samplings”屬性值則在nodes (mObj)中的各葉結(jié)點之間進行分割對于任意ー個葉結(jié)點node,它僅存放“Samplings”的采樣值中,實際在該葉結(jié)點管轄區(qū)域內(nèi)所采集的采樣值。圖2給出了“Samplings”屬性值在多個葉結(jié)點之間分割及進行數(shù)據(jù)分布的例子(為了簡化敘述,我們設(shè)系統(tǒng)中僅包含4個葉結(jié)點)。如圖2所示,移動監(jiān)控對象的“ Samplings”屬性值被分割成了 3個片斷(每個片斷仍然為SamplingSequence數(shù)據(jù)類型),這些片斷分別存放在Iiodepnode1和node2中。在分割“Samplings”屬性值的時候,需要進行相應(yīng)的插值計算,計算出相鄰兩個管轄區(qū)域邊界的采樣值,并將該采樣值分別發(fā)送給兩個管轄區(qū)域?qū)?yīng)的葉結(jié)點進行存儲。
在STDB-KV存儲系統(tǒng)中,所有新的采樣值均被發(fā)送給采樣數(shù)據(jù)接收服務(wù)器(見圖I),采樣數(shù)據(jù)接收服務(wù)器根據(jù)SAP-Table將采樣數(shù)據(jù)值發(fā)送給不同的葉結(jié)點進行存儲。如果新的采樣值屬于移動監(jiān)控對象且與上次采樣值相比跨越了不同葉結(jié)點的管轄區(qū)域,則采樣數(shù)據(jù)接收服務(wù)器需要進行插值計算,并將插值點也發(fā)送給被跨越的兩個管轄區(qū)域所對應(yīng)的葉結(jié)點進行存儲。3. 2全局分布式索引及全局查詢處理為了支持全局查詢處理,在STDB-KV存儲系統(tǒng)中需要建立相應(yīng)的全局分布式索弓I。全局分布式索引的目的是支持快速的關(guān)鍵字查詢和時空約束條件查詢。其實,在每個傳感器時空數(shù)據(jù)庫中,也需要建立本地數(shù)據(jù)的索引。但是在STDB-KV存儲系統(tǒng)中,整個系統(tǒng)的索引可以看成ー個整體,本地索引是全局索引的一部分,所以我們在本節(jié)對索引技術(shù)進行集中的討論。STDB-KV存儲系統(tǒng)中的索引包括全局關(guān)鍵字索引和全局時空索引。3. 2. I全局關(guān)鍵字分布式索引與全局關(guān)鍵字查詢?yōu)榱嗽赟TDB-KV存儲系統(tǒng)中對關(guān)鍵字快速查詢進行支持,需要建立ー個分布式的全局關(guān)鍵字 B+樹索引(Global Full-Text Keyword B+-Tree,簡稱 GFTKB+-Tree)。GFTKB+-Tree是由STDB-KV存儲系統(tǒng)的根結(jié)點和各個葉結(jié)點共同建立的針對整個系統(tǒng)的分布式關(guān)鍵字索引。圖3給出了全局關(guān)鍵字B+樹索引GFTKB+-Tree的結(jié)構(gòu)。如圖3所示,GFTKB+-Tree實際上是ー個三層結(jié)構(gòu),其中>第一層是ー個存放在STDB-KV存儲系統(tǒng)根結(jié)點的全局關(guān)鍵字分區(qū)表(GlobalKeywordRange Table,簡稱 GKR-Table)。GKR-Table 的記錄格式為(keyRange, nodeID),其中keyRange是關(guān)鍵字值域中的ー個區(qū)域范圍,nodeID是與該范圍相對應(yīng)的葉結(jié)點的標識(該葉結(jié)點中的KNMB+-Tree索引該范圍內(nèi)的關(guān)鍵字);>第二層是存放在STDB-KV存儲系統(tǒng)葉結(jié)點中的keyword到nodeID的映射B+樹(keyword-to-NodeID Mapping B+-Tree,簡稱 KNMB+-Tree)。KNMB+-Tree 的葉結(jié)點記錄格式為(keyword, set (nodeID)),其中keyword是關(guān)鍵字,set (nodeID)是所有包含該關(guān)鍵字的葉結(jié)點的標識的集合。在創(chuàng)建KNMB+-Tree時,姆個葉結(jié)點從自己的本地元組中提取關(guān)鍵字,并對姆個關(guān)鍵字生成ー個(keyword, nodeID)偶對(其中nodeID即為該葉結(jié)點自己的標識);隨后,該葉結(jié)點根據(jù)GKR-Table將各個偶對發(fā)送給相應(yīng)的葉結(jié)點,這樣每個葉結(jié)點可以收到一組來自于整個系統(tǒng)中其他各個葉結(jié)點的(keyword, nodeID)集合,并在此基礎(chǔ)上構(gòu)建 KNMB+-Tree ;>第三層是存放在STDB-KV存儲系統(tǒng)的各個葉結(jié)點中的本地數(shù)據(jù)元組全文關(guān)鍵字索引(Local Full-Text Keyword B+-Tree,簡稱 LFTKB+-Tree)。LFTKB+-Tree 是 STDB-KV 存儲系統(tǒng)針對本地數(shù)據(jù)建立的全文關(guān)鍵字索引。LFTKB+-Tree葉結(jié)點記錄格式為(keyword,Set(tuplelD)),其中keyword是ー個關(guān)鍵字,set (tupID)是所有包含該關(guān)鍵字的所有元組的標識集合。在進行查詢處理吋,STDB-KV存儲系統(tǒng)中的所有查詢均發(fā)送給根結(jié)點進行處理。當根結(jié)點接收到ー個關(guān)鍵字查詢時,將首先查詢GKR-Table,從而判斷應(yīng)該進一步查詢哪個葉結(jié)點的KNMB+-Tree ;然后,根據(jù)對應(yīng)葉結(jié)點的KNMB+-Tree,可以得到一組葉結(jié)點的nodeID,這些葉結(jié)點均包含被查詢的關(guān)鍵字;最后,根結(jié)點將查詢廣播給這些葉結(jié)點并行執(zhí)行,執(zhí)行結(jié)果由根結(jié)點最后返回給查詢用戶。各葉結(jié)點在執(zhí)行來自于根結(jié)點的關(guān)鍵字查詢時,可以調(diào)用本地的LFTKB+-Tree快速地得到查詢結(jié)果。對于屬性約束條件查詢(根據(jù)某個屬性的值來進行查詢,如第4節(jié)中的查詢Q3),盡管不是關(guān)鍵字查詢,但是仍然可以通過GFTKB+-Tree的上兩層(即GKR-Table和KNMB+-Tree)縮小需要查詢的葉結(jié)點范圍,然后再在各相關(guān)葉結(jié)點上執(zhí)行對應(yīng)的SQL語句。在執(zhí)行SQL語句時,各葉結(jié)點雖然不能調(diào)用本地的LFTKB+-Tree,但通過在各屬性上建立的 屬性索引(見第2. I節(jié))仍然可以獲得較快的查詢速度。3. 2. 2全局時空分布式索引與全局時空查詢處理除了關(guān)鍵字查詢之外,物聯(lián)網(wǎng)系統(tǒng)和傳感器監(jiān)控系統(tǒng)中的另ー類重要的查詢類型是帶有時空約束條件的查詢,如“查詢北京市區(qū)域A中所有空氣質(zhì)量傳感器在時刻t的采樣值”。為了支持這類查詢,我們還需要建立全局時空R樹索引(Global Spatial-TemporalR-Tree,簡稱 GSTR-Tree)。在STDB-KV存儲系統(tǒng)中,數(shù)據(jù)是根據(jù)其空間屬性進行分布的(見第3. I節(jié)),因此全局時空索引GSTR-Tree的構(gòu)建得到了簡化。GSTR-Tree是ー個分布式索引,采用兩層的結(jié)構(gòu),其中>第ー層是STDB-KV存儲系統(tǒng)的根結(jié)點上的管轄區(qū)域分區(qū)表(SAP-Table,如3. I節(jié)所述)。SAP-Table中的記錄的格式為(area, nodeID),其中area為一個地理區(qū)域,nodeID是以該區(qū)域為服務(wù)區(qū)域的葉子結(jié)點標識;>第ニ層是STDB-KV存儲系統(tǒng)的各個葉結(jié)點上的“傳感器采樣數(shù)據(jù)序列時空索引樹(Sensor-Sampling-Sequence Spatial-Temporal Tree,簡稱 S4T-Tree),,。在 STDB-KV系統(tǒng)中,每個葉子結(jié)點有ー個S4T-Tree,用于對該結(jié)點中的采樣數(shù)據(jù)序列的時空屬性進行索引。S4T-Tree實際上包括兩個子樹一個標準的空間R樹用以對靜止監(jiān)控對象的空間位置進行索引,一個格柵概略化時空R樹(Grid-Sketched Spatial-Temporal R-Tree,簡稱GSSTR-Tree,見下面描述)用于對移動監(jiān)控對象的隨時間動態(tài)變化的位置(亦稱為“時空軌跡-trajectory”)進行索引。圖4給出了格柵概略化時空R樹GSSTR-Tree的結(jié)構(gòu)。GSSTR-Tree的技術(shù)要點如下今在傳感器系統(tǒng)中,移動監(jiān)控對象時空軌跡的變化是十分頻繁的,因為每一次新采樣值的到來均會導致向軌跡中插入新的軌跡單元(軌跡單元是軌跡時空曲線中相鄰兩個采樣點構(gòu)成的一條直線段)。如果直接以軌跡単元作為索引記錄的基本単位,則索引的更新頻率將等同于采樣數(shù)據(jù)插入數(shù)據(jù)庫的頻率,從而導致巨大的索引更新代價。為了克服上述問題,我們首先將時空三維空間(即XXYXT空間)劃分成粒度較粗的等距格柵。然后,將每個移動監(jiān)控對象的軌跡映射成對應(yīng)的“概略化”軌跡,概略化軌跡單元是原始軌跡所穿過的格柵單元的中心點連線,因此其粒度比原始軌跡要大得多。最后對概略化軌跡單元進行R樹索引,從而建立GSSTR-Tree。今GSSTR-Tree的葉結(jié)點記錄的格式為(stu, set (tupleID)),其中stu是概略化軌跡單元,set(tuplelD)是其概略化軌跡包含stu的所有移動監(jiān)控對象元組標識的集合(注意,多個移動監(jiān)控對象的概略化軌跡可以共享同一個軌跡単元)。概略化軌跡的變化頻率比原始軌跡低得多,因此GSSTR-Tree有效地降低了索引更新的頻率。在進行時空查詢處理時,如果是針對靜止監(jiān)控對象的查詢,則根結(jié)點首先檢查SAP-Table,看看哪些葉結(jié)點的管轄區(qū)域與查詢條件中指定的空間區(qū)域相交,然后將查詢發(fā)送給這些葉結(jié)點并行執(zhí)行;葉結(jié)點在處理來自于根結(jié) 點的查詢請求時,可以通過本地的S4T-Tree快速地得到查詢結(jié)果(僅需查詢S4T-Tree的空間R樹部分);各葉結(jié)點的查詢結(jié)果由根結(jié)點匯總并返回給查詢用戶。如果時空查詢是針對移動對象的,則根結(jié)點需要首先檢查SAP-Table,得到與查詢條件中指定的空間區(qū)域相交的葉結(jié)點,然后將查詢發(fā)送給這些葉結(jié)點并行執(zhí)行;各葉結(jié)點在執(zhí)行該查詢時,通過時空約束條件對S4T-Tree的GSSTR-Tree部分進行搜索并快速得到查詢結(jié)果;由于同一個移動監(jiān)控對象的Samplings屬性是根據(jù)所屬區(qū)域分布在不同的葉結(jié)點上的,根結(jié)點收到各葉結(jié)點返回的結(jié)果之后,將最后的結(jié)果返回給查詢用戶。3. 2. 3總體的全局查詢處理方法在STDB-KV存儲系統(tǒng)中,所有的查詢均是以SQL語句的方式提交給根結(jié)點的,不管它是關(guān)鍵字查詢,還是時空約束條件查詢。在對這些查詢進行處理時,根結(jié)點需要首先判斷查詢是關(guān)鍵字查詢還是時空約束條件查詢,井根據(jù)查詢的類型進行不同的處理今如果是關(guān)鍵字查詢(如第4節(jié)中的查詢Ql和Q2),則根結(jié)點將在全局關(guān)鍵字索引GFTKB+-Tree的基礎(chǔ)上,通過關(guān)鍵字匹配得到查詢結(jié)果。具體的查詢過程如下根結(jié)點首先查詢GKR-Table,從而判斷應(yīng)該進一步查詢哪個葉結(jié)點的KNMB+-Tree ;然后,根據(jù)對應(yīng)葉結(jié)點的KNMB+-Tree,可以得到一組葉結(jié)點的nodeID,這些葉結(jié)點均包含被查詢的關(guān)鍵字;最后,根結(jié)點將查詢廣播給這些葉結(jié)點并行執(zhí)行,執(zhí)行結(jié)果由根結(jié)點最后返回給查詢用戶。各葉結(jié)點在執(zhí)行來自于根結(jié)點的關(guān)鍵字查詢時,可以調(diào)用本地的LFTKB+-Tree快速地得到查詢結(jié)果;今如果是時空查詢,則根結(jié)點將調(diào)用全局時空索引GSTR-Tree來得到查詢結(jié)果,即首先檢查SAP-Table,看看哪些葉結(jié)點的管轄區(qū)域與查詢條件中指定的空間區(qū)域相交,然后將查詢發(fā)送給這些葉結(jié)點并行執(zhí)行;葉結(jié)點在處理來自于根結(jié)點的查詢請求時,可以通過本地的S4T-Tree快速地得到查詢結(jié)果;各葉結(jié)點的查詢結(jié)果由根結(jié)點匯總并返回給查詢用戶;+對于屬性約束條件查詢(如第4節(jié)中的查詢Q3),盡管不是關(guān)鍵字查詢,但是仍然可以通過全局關(guān)鍵字分布式索引,即GFTKB+-Tree中的GKR-Table和KNMB+-Tree,來縮小需要查詢的葉結(jié)點范圍,然后再在各相關(guān)葉結(jié)點上執(zhí)行對應(yīng)的SQL語句(即查詢語句)。在執(zhí)行SQL語句吋,葉結(jié)點不能調(diào)用本地的LFTKB+-Tree,但葉子結(jié)點通過屬性索引(見第2. I節(jié))仍然可以獲得較快的查詢速度。
STDB-KV存儲系統(tǒng)的查詢處理流程如圖5所示。3. 3新采樣數(shù)據(jù)觸發(fā)的數(shù)據(jù)更新處理在STDB-KV存儲系統(tǒng)中,包含多個采樣數(shù)據(jù)接收服務(wù)器,這些服務(wù)器組成ー個集群,共同對傳感器接入層上傳的新采樣值進行處理。新采樣值的數(shù)據(jù)格式為(objID, staticMov, svalue),其中objID是監(jiān)控對象的標識,staticMov標明監(jiān)控對象是靜止的還是移動的,svalue = (t, (x, y), schema, value)是ー個samplingValue類型的值。采樣數(shù)據(jù)接收服務(wù)器接收到上述數(shù)據(jù)之后,首先判斷staticMov,如果是靜止監(jiān)控對象,則可通過SAP-Table找到管轄區(qū)域包含(x,y)的葉結(jié)點,然后將采樣數(shù)據(jù)轉(zhuǎn)發(fā)給該葉結(jié)點進行處理;如果是移動監(jiān)控對象,則需要進ー步判斷上次提交了采樣值之后該監(jiān)控對象是否跨越了葉結(jié)點的管轄區(qū)域邊界,若是,則需要進行相應(yīng)的插值計算,并將插值結(jié)果也發(fā)送給相應(yīng)的葉結(jié)點。為此,采樣數(shù)據(jù)接收服務(wù)器需要保存各移動監(jiān)控對象上一次提交的采樣數(shù)據(jù)值。葉結(jié)點接收到新的采樣數(shù)據(jù)之后,直接通過samplingAppend操作將之附加到相 應(yīng)監(jiān)控對象的“ Samp I ings ”屬性值中。4.數(shù)據(jù)組織及查詢的例子表I給出了 STDB-KV存儲方法中,對各種傳感器米樣值進行統(tǒng)ー表不的例子(注意其中的GPS所采集的經(jīng)度、緯度信息是傳感器采樣值的基本信息,表示在Ioc屬性中,所以并不屬于采樣值的分量)。表I :傳感器采樣值的例子
傳感器類型傳感器采樣值(SamplingValue數(shù)據(jù)類型)
溫度傳感器(il, (39.3, 144.3), (temperature: real), (27.5))
GPS 傳感器(,2, (39.3, 144.3), (speed: real)(direction: real), (62.5)(22))
風速風向傳感器 (,3, (39.3, 144.3), (windspeed: real)(winddir: real), (62.5)(22))
交通流視頻分析傳
(t4, (39.3, 144.3), (averageSpeed: real、(jam: bool), (62.5)(true))
感器
高空遙感識別傳感 O5, (39.3, 144.3), (disasterArea: region), ((((39.3, 144.3), (39.5, 144.5),
器(火災(zāi)區(qū)域識別)(39.2,1441)),((39.2,1444X (396,1448X (39 3,1443X (39.3, 144.3)))))在STDB-KV中定義的所有數(shù)據(jù)類型和查詢操作均實現(xiàn)為數(shù)據(jù)庫系統(tǒng)的內(nèi)嵌形式,因此查詢語言(包括數(shù)據(jù)定義語言DDL和數(shù)據(jù)操縱語言DML)是擴充后的SQL語言形式。下面給出ー些查詢的例子(這些例子基于前文Create Table語句所使用的數(shù)據(jù)庫模式)[查詢Ql]通過關(guān)鍵字查詢獲得監(jiān)控對象ObjIDl的采樣數(shù)據(jù)序列SELECT keySearch(objIDI). SamplingsFROM IoTData ;在上述查詢中,keySearch操作返回一組元組的集合(由于objIDI只對應(yīng)ー個元組,因此該集合中只含ー個元素),而keySearch(objlDl). Samplings返回這些元組的“Saplings” 屬性值。注意,這個查詢雖然采用SQL的表達方式,但是實際上是關(guān)鍵字查詢。當根結(jié)點接收到該查詢時,將首先查詢GKR-Table,從而判斷應(yīng)該進一步查詢哪個葉結(jié)點的KNMB+-Tree ;然后,根據(jù)對應(yīng)葉結(jié)點的KNMB+-Tree,可以得到一組葉結(jié)點的nodelD,這些葉結(jié)點均包含被查詢的關(guān)鍵字;最后,根結(jié)點將查詢廣播給這些葉結(jié)點并行執(zhí)行,執(zhí)行結(jié)果由根結(jié)點最后返回給查詢用戶。各葉結(jié)點在執(zhí)行來自于根結(jié)點的關(guān)鍵字查詢時,可以調(diào)用本地的LFTKB+-Tree快速地得到查詢結(jié)果。[查詢Q2]通過關(guān)鍵字查詢獲得所有由“BeijingTraffic”部署的監(jiān)控對象的采樣數(shù)據(jù)序列SELECT keySearch( “BeijingTraffic”)·SamplingsFROM IoTData ;該查詢表示出了關(guān)鍵字并不僅僅局限為監(jiān)控對象的標識,而可以是任何關(guān)鍵字。原因是我們的全局關(guān)鍵字索弓I是基于全文關(guān)鍵字的。本例中,“BeijingTraffic”可以對應(yīng)于多個葉子結(jié)點中的多個元組。該查詢?nèi)匀粚儆陉P(guān)鍵字查詢,其處理過程與查詢Ql —致。[查詢Q3]通過屬性約束條件實現(xiàn)查詢Q2SELECT SamplingsFROM IoTDataWHERE DeployedBy = “BeijingTraffic,,;本查詢是ー個屬性條件查詢,因此不能像Q2那樣通過調(diào)用關(guān)鍵字索引來處理,而是需要在相應(yīng)的葉子結(jié)點上執(zhí)行SQL語句。盡管不是關(guān)鍵字查詢,但是仍然可以通過GFTKB+-Tree中的GKR-Table和KNMB+-Tree縮小需要查詢的葉結(jié)點范圍,然后再在各相關(guān)葉結(jié)點上執(zhí)行對應(yīng)的SQL語句。各葉結(jié)點在執(zhí)行SQL語句時不能調(diào)用本地的LFTKB+-Tree,而是通過標準的SQL執(zhí)行過程得到查詢結(jié)果。[查詢Q4]查詢所有位于地理區(qū)域regionl內(nèi)且在tl時刻的溫度大于50的溫度監(jiān)控對象,返回除了“ Samp I ings ”屬性之外的其他屬性值SELECT ObjID, ObjType, DeployedBy,DepoyedTime, HostObjFROM IoTDataWHERE ObjType = “Temperature”AND inside(sProjectPoint(Samplings),regionl)ANDgetComponent (atlnstant (Samplings, tl), I) >50;本查詢是針對靜止監(jiān)控對象(溫度傳感器監(jiān)控對象)的查詢,其空間約束條件是inside (sProjectPoint (Samplings),regionl)。在處理該查詢時,根結(jié)點首先檢查SAP-Table,看看哪些葉結(jié)點的管轄區(qū)域與regionl相交,然后將查詢發(fā)送給這些葉結(jié)點并行執(zhí)行;葉結(jié)點在處理來自于根結(jié)點的查詢請求時,可以通過本地的S4T-Tree快速地得到查詢結(jié)果(僅需查詢S4T-Tree的空間R樹部分);各葉結(jié)點的查詢結(jié)果由根結(jié)點匯總并返回給查詢用戶。 [查詢Q5]查詢所有tl時刻位于地理區(qū)域regionl內(nèi)的視頻交通流監(jiān)控移動目標(如安裝在公交車輛上的攝像頭)
SELECT*FROM IoTDataWHERE ObjectType = aBusTrafficVideo^ANDinside (vPro jectPoint (atlnstant (Samplings, tl)), regionl)該查詢是針對移動監(jiān)控對象的查詢,其時空約束條件為inside (vProjectPoint (atlnstant (Samplings, tl)) ,regionl)。在處理該查詢時,根結(jié)點首先檢查SAP-Table,得到與regionl相交的葉結(jié)點,然后將Q5發(fā)送給這些葉結(jié)點并行執(zhí)行;各葉結(jié)點在執(zhí)行Q5吋,通過時空約束條件對S4T-Tree的GSSTR-Tree部分進行搜索并快速得到查詢結(jié)果;由于同一個移動監(jiān)控對象的Samplings屬性是根據(jù)所屬區(qū)域分布在不同的葉結(jié)點上的,根結(jié)點收到各葉結(jié)點返回的結(jié)果之后,還需要進行必要的合并操作,并將最后的結(jié)果返回給查詢用戶。
以上通過實例對本發(fā)明進行了詳細的描述,本領(lǐng)域的技術(shù)人員應(yīng)當理解,在不超出本發(fā)明的精神和實質(zhì)的范圍內(nèi),對本發(fā)明做出一定的修改和變動,比如對傳感器采樣數(shù)據(jù)的具體表示格式進行修改,或?qū)鞲衅鲿r空數(shù)據(jù)庫集群的組織方式進行局部修改,仍然可以實現(xiàn)本發(fā)明的目的。
權(quán)利要求
1.一種海量傳感器數(shù)據(jù)存儲方法,其步驟為 1)建立一包括一根結(jié)點和若干葉結(jié)點的兩層存儲架構(gòu);其中,根結(jié)點存儲ー全局查詢所需的全局數(shù)據(jù)字典,葉結(jié)點存儲傳感器采樣數(shù)據(jù);所述全局數(shù)據(jù)字典包括一管轄區(qū)域分區(qū)表和一全局關(guān)鍵字分區(qū)表;每ー葉結(jié)點對應(yīng)一管轄區(qū)域,所有葉結(jié)點的管轄區(qū)域構(gòu)成所述管轄區(qū)域分區(qū)表;所述全局關(guān)鍵字分區(qū)表的記錄格式為(keyRange, nodeID), keyRange是關(guān)鍵字值域中的ー個區(qū)域范圍,nodeID是與該范圍相對應(yīng)的葉結(jié)點的標識; 2)采樣數(shù)據(jù)接收服務(wù)器根據(jù)所述管轄區(qū)域分區(qū)表將傳感器發(fā)送來的采樣數(shù)據(jù)分配給相應(yīng)的葉結(jié)點; 3)每ー葉結(jié)點將傳感器對同一監(jiān)控對象的歷次采樣值以統(tǒng)ー的形式存儲到葉結(jié)點數(shù)據(jù)庫的一個元組中,構(gòu)成該監(jiān)控對象的采樣數(shù)據(jù)序列;其中,所述數(shù)據(jù)庫采用關(guān)系表存儲所述采樣數(shù)據(jù)序列,所述關(guān)系表的字段包括監(jiān)控對象的標識ObjID、監(jiān)控對象的具體類型ObjType、部署者DeployedBy、部署時間DepoyedTime、監(jiān)控對象的宿主對象HostObj、監(jiān)控對象的采樣數(shù)據(jù)序列Samplings ; 4)建立所述兩層存儲架構(gòu)的全局時空分布式索引和全局關(guān)鍵字分布式索引。
2.如權(quán)利要求I所述的方法,其特征在于所述統(tǒng)ー的形式為svalue= (t, (x, y),schema, value);其中,t為采樣時間,(x, y)采樣地點;schema描述采樣數(shù)據(jù)所包含的數(shù)據(jù)項以及各數(shù)據(jù)項的數(shù)據(jù)類型,value為具體的采樣數(shù)據(jù)值;如果schema和value包含多個分量,則用括號對分量的邊界進行劃分。
3.如權(quán)利要求2所述的方法,其特征在于所述監(jiān)控對象包括靜止監(jiān)控對象和移動監(jiān)控對象;所述傳感器的采樣數(shù)據(jù)的數(shù)據(jù)格式為(objID, staticMov, svalue),其中,objID是監(jiān)控對象的標識,staticMov標明監(jiān)控對象是靜止的還是移動的。
4.如權(quán)利要求3所述的方法,其特征在于按照時間順序存儲同一監(jiān)控對象的η次采樣值,所述移動監(jiān)控對象采樣數(shù)據(jù)序列的存儲形式為SamplingSequence = (schema, ((th (xh y^valueh flag,))"=l ),所述靜止監(jiān)控對象采樣數(shù)據(jù)序列的存儲形式為SamplingSequence =(schema, (x,y), ((th value,,flagt))"=l );其中,是第 i個采樣值的采樣時間、(Xi,Yi)第i個采 樣值的采樣地點、Valuei第i個采樣值的實際采樣數(shù)值,flag,表示第i個采樣值是否為該數(shù) 據(jù)序列中的一個間斷點。
5.如權(quán)利要求3所述的方法,其特征在于對每一移動監(jiān)控對象mObj建立ー個集合nodes (mObj),用于記錄該mObj在監(jiān)控時間范圍內(nèi)其所經(jīng)過管轄區(qū)域的所有葉結(jié)點。
6.如權(quán)利要求5所述的方法,其特征在于如果ー移動監(jiān)控對象在監(jiān)控時間內(nèi)經(jīng)過多個管轄區(qū)域,即同一移動監(jiān)控對象mObj對應(yīng)多個元組,nodes (mObj)中姆個葉結(jié)點存儲其中一個元組,則該移動監(jiān)控對象mOb j在不同葉結(jié)點中的元組的屬性值Ob j ID、ObjType、DeployedBy、DepoyedTime、HostObj 是相互復制的,而其 Samplings 屬性值則在nodes (mOb j)中的各葉結(jié)點之間進行分割。
7.如權(quán)利要求6所述的方法,其特征在于分割Samplings屬性值的方法為采用插值計算方法,計算出nodes (mObj)中相鄰兩個葉結(jié)點管轄區(qū)域邊界的采樣值,并將該采樣值分別發(fā)送給兩個管轄區(qū)域?qū)?yīng)的葉結(jié)點進行存儲。
8.如權(quán)利要求I所述的方法,其特征在于任意兩個不同的葉子結(jié)點的管轄區(qū)域均不相交,所有葉結(jié)點的管轄區(qū)域并集為設(shè)定的總的地理區(qū)域。
9.如權(quán)利要求I所述的方法,其特征在于所述全局時空分布式索引為分布式全局關(guān)鍵字B+樹索引,其為一三層結(jié)構(gòu),其中第一層為存放在根結(jié)點的所述全局關(guān)鍵字分區(qū)表,第二層為葉結(jié)點中的關(guān)鍵字到葉結(jié)點標識的映射B+樹,第三層為存放在各個葉結(jié)點中的本地數(shù)據(jù)元組全文關(guān)鍵字索引;所述全局關(guān)鍵字分布式索引為ー兩層結(jié)構(gòu),其中,第一層是存放在根結(jié)點上的所述管轄區(qū)域分區(qū)表;第二層是各個葉結(jié)點上的傳感器采樣數(shù)據(jù)序列時空索引樹S4T-Tree ;所述S4T-Tree —用以對靜止監(jiān)控對象的空間位置進行索引的空間R樹,一用于對移動監(jiān)控對象的隨時間動態(tài)變化的位置進行索引的格柵概略化時空R樹。
10.如權(quán)利要求9所述的方法,其特征在 于所述映射B+樹的創(chuàng)建方法為每個葉結(jié)點從自己的本地元組中提取關(guān)鍵字,并對姆個關(guān)鍵字生成ー個(keyword, nodeID)偶對;隨后,該葉結(jié)點根據(jù)所述全局關(guān)鍵字分區(qū)表將各個偶對發(fā)送給相應(yīng)的葉結(jié)點,然后每個葉結(jié)點根據(jù)收到一組來自于其他各個葉結(jié)點的(keyword, nodeID)集合構(gòu)建所述映射B+樹;所述全文關(guān)鍵字索引中葉結(jié)點記錄格式為(keyword, Set (tupleID));所述管轄區(qū)域分區(qū)表中的記錄的格式為(area,nodeID);所述格柵概略化時空R樹的建立方法為首先將時空三維空間劃分成設(shè)定粒度的等距格柵,然后將每個移動監(jiān)控對象的軌跡映射成對應(yīng)的概略化軌跡單元,所述概略化軌跡單元是原始軌跡所穿過的格柵單元的中心點連線,最后對概略化軌跡單元進行R樹索引,從而建立格柵概略化時空R樹;其中,keyword是ー個關(guān)鍵字,set(tupID)是所有包含某關(guān)鍵字的所有元組的標識集合,nodeID為葉結(jié)點的標識,area為ー個地理區(qū)域。
11.一種對基于權(quán)利要求I所述存儲方法存儲數(shù)據(jù)的查詢方法,其步驟為 1)根結(jié)點判斷接收的查詢條件的查詢類型; 2)如果是關(guān)鍵字查詢,則根結(jié)點將調(diào)用全局關(guān)鍵字索引來得到查詢結(jié)果; 3)如果是時空查詢,則根結(jié)點將調(diào)用全局時空索引來得到查詢結(jié)果,即首先檢查管轄區(qū)域分區(qū)表,得到管轄區(qū)域與查詢條件中指定的空間區(qū)域相交的葉結(jié)點,然后將查詢條件發(fā)送給這些葉結(jié)點并行執(zhí)行;根結(jié)點匯總各葉結(jié)點的查詢結(jié)果并返回給查詢用戶。
12.如權(quán)利要求11所述的方法,其特征在于所述根結(jié)點中提供下列ー個或多個操作 針對采樣數(shù)據(jù)序列SamplingSequence數(shù)據(jù)類型的查詢操作atlnstant操作, 空間投影操作 sProjectLines、sProjectPoints 和時間投影操作 sProjectTime ;空間截取操作sTruncateGeo,時間截取操作sTruncateTime,新采樣數(shù)據(jù)插入操作sampIingAppend ; 對采樣值的投影操作vProjectTime和vPro jectPoint,以及數(shù)據(jù)提取操作getComponent ,其中, atlnstant操作的實現(xiàn)方法為如果輸入時間t正好為采樣數(shù)據(jù)序列中某個關(guān)鍵采樣值所對應(yīng)的時間,即t =も,j e [I,η],則直接將該關(guān)鍵采樣值(tj, (XjjYj) , schema, Valuej)作為結(jié)果返回;如果V1 < t < tj; j e [2,η],且第j個采樣值為間斷點,則返回未定義;如果不是間斷點,則通過插值方法得到t時刻的結(jié)果;如果t < h,則直接返回未定義;如果t> tn,則返回(tn, (xn, yn), schema, valuen); sProjectLines操作為針對移動監(jiān)控對象的采樣數(shù)據(jù)序列向空間平面上投影,如果不滿足則返回未定義; sPix) jectPoints操作為針對靜止監(jiān)控對象的采樣數(shù)據(jù)序列向空間平面上投影,如果不滿足則返回未定義; sProjectTime操作為將采樣數(shù)據(jù)序列向時間軸上投影,如果不滿足則返回未定義; sTruncateGeo操作為根據(jù)給定的空間范圍截取采樣數(shù)據(jù)序列的一部分; sTruncateTime操作為根據(jù)給定的時間范圍截取采樣數(shù)據(jù)序列的一部分; sampIingAppend操作為將ー個新的采樣值附加到采樣數(shù)據(jù)序列的末尾,同時根據(jù)預定 義的監(jiān)控時間長度淘汰采樣數(shù)據(jù)序列中過時的采樣數(shù)據(jù); vProjectTime操作為提取采樣值對應(yīng)的時間; vProjectPoint操作為提取采樣值對應(yīng)的地點; getComponent操作為提取采樣值的某個指定的分量;其中,采樣數(shù)據(jù)序列SamplingSequence = (schema, (th ((xh yt), value,, flag,))"=l ),tj 是第i個采樣值的采樣時間、(Xi,Yi)第i個采樣值的采樣地點、value,第i個采樣值的實際采樣數(shù)值,schema描述采樣數(shù)據(jù)所包含的數(shù)據(jù)項以及各數(shù)據(jù)項的數(shù)據(jù)類型,f Iagi表示第i個 采樣值是否為該數(shù)據(jù)序列中的一個間斷點,η為采樣數(shù)據(jù)序列的采樣次數(shù)。
全文摘要
本發(fā)明公開了一種海量傳感器數(shù)據(jù)存儲與查詢方法,屬于傳感器數(shù)據(jù)領(lǐng)域。本存儲方法為建立一包括一根結(jié)點和若干葉結(jié)點的兩層存儲架構(gòu);接收服務(wù)器將傳感器發(fā)送來的采樣數(shù)據(jù)分配給相應(yīng)的葉結(jié)點;每一葉結(jié)點將傳感器對同一監(jiān)控對象的歷次采樣值以統(tǒng)一的形式存儲到葉結(jié)點數(shù)據(jù)庫的一個元組中,構(gòu)成該監(jiān)控對象的采樣數(shù)據(jù)序列;建立所述兩層存儲架構(gòu)的全局時空分布式索引和全局關(guān)鍵字分布式索引。本發(fā)明通過全局關(guān)鍵字索引、全局時空索引以及全局查詢處理機制,可以同時支持快速的時空查詢和關(guān)鍵字查詢。本發(fā)明兼容多種查詢類型的快速處理,突破了目前時空數(shù)據(jù)庫主要針對靜態(tài)的空間數(shù)據(jù)或相對單一的時空數(shù)據(jù)、缺乏有效的異構(gòu)數(shù)據(jù)流表示方法的局限。
文檔編號G06F17/30GK102651020SQ201210093419
公開日2012年8月29日 申請日期2012年3月31日 優(yōu)先權(quán)日2012年3月31日
發(fā)明者丁治明 申請人:中國科學院軟件研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1