無線傳感數(shù)據(jù)存儲算法
【技術領域】
[0001] 本發(fā)明涉及的是無線傳感監(jiān)測網(wǎng)中的一種數(shù)據(jù)存儲算法??蓱糜跓o線傳感網(wǎng)絡 數(shù)據(jù)存儲領域。
【背景技術】
[0002] 無線傳感監(jiān)測網(wǎng)中,對監(jiān)測數(shù)據(jù)實時性要求不高,為節(jié)省能量,節(jié)點將監(jiān)測數(shù)據(jù)暫 存,需要時再將數(shù)據(jù)傳輸,稱該節(jié)點為存儲節(jié)點。存儲節(jié)點的選擇,直接影響到查詢數(shù)據(jù)效 率,以及查詢過程和數(shù)據(jù)傳輸過程中節(jié)點的能量消耗。一些學者提出以數(shù)據(jù)為中心的存 儲方法,該方法是依據(jù)數(shù)據(jù)的屬性值,通過某種映射方法存儲到對應的節(jié)點上,使得每個 節(jié)點只存儲同一類型的數(shù)據(jù),查詢時可通過對應的映射方法從相應的節(jié)點中獲取數(shù)據(jù);如 DoubleRuling、Combs、SCOOP和GHT算法,這些算法中網(wǎng)絡各個節(jié)點的地位相同,數(shù)據(jù)和索 引信息均勻地存儲在各個節(jié)點上。GHT算法中,每類事件只有一個存儲節(jié)點,會產生通信瓶 頸和熱點現(xiàn)象;通過散列函數(shù)得到的散列位置上可能不存在節(jié)點;沒有考慮到數(shù)據(jù)存儲和 查詢過程中的能量開銷。
[0003] 蛇形時隙的節(jié)能存儲算法(SLPS)基于GHT算法思想,將被監(jiān)測區(qū)域按實際應用劃 分為網(wǎng)格,網(wǎng)格內所有無線傳感器節(jié)點的工作時隙以一種蛇形排列方式進行分配,使各節(jié) 點周期性地進入睡眠或偵聽狀態(tài)。在任一時隙,只有兩個傳感節(jié)點處于工作狀態(tài),其他節(jié)點 都處于睡眠狀態(tài),保證了系統(tǒng)的可靠性,又降低了能量消耗。該算法沒有考慮在數(shù)據(jù)傳輸過 程中節(jié)點的能量消耗。文獻考慮到節(jié)點數(shù)據(jù)的重要程度,越重要的數(shù)據(jù)優(yōu)先級越高,查詢頻 率也會相應提高;在SLPS算法的基礎上,對事件劃分優(yōu)先級,提出基于事件優(yōu)先級和動態(tài) 散列位置的蛇形時隙算法(P-SLPS),通過縮短數(shù)據(jù)存儲和查詢時數(shù)據(jù)的傳輸路徑,減少能 量消耗。
[0004] 當網(wǎng)絡中的事件分布不均勻時,某些節(jié)點存儲數(shù)據(jù)過多,P-SLPS算法會使網(wǎng)絡出 現(xiàn)熱點現(xiàn)象。超過節(jié)點的存儲空間而引起數(shù)據(jù)丟失,網(wǎng)絡能夠查詢的數(shù)據(jù)和信息減少,熱點 區(qū)域的節(jié)點能量消耗過快甚至耗盡死亡,縮短網(wǎng)絡的生命周期。
【發(fā)明內容】
[0005] 為解決存儲節(jié)點熱點現(xiàn)象,實現(xiàn)網(wǎng)絡中節(jié)點的負載平衡,本文引入多閾值 (multi-threshold)的存儲思想,基于P-SLPS算法,提出無線傳感數(shù)據(jù)存儲算法(Multi Threshold-PSLPS,MT-PSLPS)。MT-PSLPS算法根據(jù)節(jié)點剩余存儲空間選擇網(wǎng)格內的工作節(jié) 點,有效的改善節(jié)點能量分布不均的問題,延長網(wǎng)絡生命周期。MT-PSLPS算法通過劃分網(wǎng)格 區(qū)域,將特定類型的數(shù)據(jù)存儲在相應的網(wǎng)格中,不是存儲在某個節(jié)點上;通過定義事件優(yōu)先 級以及設定節(jié)點存儲閾值,將高優(yōu)先級的事件存儲在距離查詢節(jié)點更近的網(wǎng)絡區(qū)域,保證 高優(yōu)先級事件最先被搜索;根據(jù)監(jiān)測節(jié)點和存儲映射地址計算動態(tài)散列位置,結合節(jié)點剩 余存儲空間,將檢測事件存儲在同一優(yōu)先級區(qū)域內離監(jiān)測節(jié)點近且剩余存儲空間大的存儲 網(wǎng)格。若某個節(jié)點存儲容量超過閾值,將告知網(wǎng)格內其他節(jié)點自身存儲達到存儲閾值,該節(jié) 點不再參與節(jié)點工作時隙的分配,避免存儲熱點現(xiàn)象發(fā)生。MT-PSLPS算法具體如下:
[0006] 1.網(wǎng)絡劃分:假設網(wǎng)絡區(qū)域為一個L*L的正方形區(qū)域,節(jié)點均勻分布,每個節(jié)點分 別有實際坐標LR和虛擬坐標Lv,令其初始值Lv=LR,且無線傳感器網(wǎng)絡符合以下規(guī)則:網(wǎng) 絡有很好的連通性,即節(jié)點密度足夠大;網(wǎng)絡部署后,Sink節(jié)點和其它節(jié)點不再移動;網(wǎng) 絡的周界已知,節(jié)點可以獲得自己的位置坐標;節(jié)點間的通信范圍相同。另外,網(wǎng)絡中事件 的產生是隨機的,每個事件都有事件類型,不同節(jié)點可以產生相同類型的事件和數(shù)據(jù)。
[0007] 令Sink節(jié)點坐標為(0,0),監(jiān)測事件有K類,以[IV(K+I)]*i(i= 1、2、3. . .K)為 半徑,(〇, 〇)為頂點,畫圓構成K個圓環(huán)區(qū)域,分別存儲K類事件,如圖1所示。每類事件賦 予一種優(yōu)先級,其值由事件按查詢頻率確定。優(yōu)先級值越小,事件優(yōu)先級越高,事件存儲區(qū) 域距離Sink節(jié)點越近。如優(yōu)先級為1的事件存儲在離Sink節(jié)點最近的圓環(huán)區(qū)域內。
[0008] 為了使存儲節(jié)點距離監(jiān)測節(jié)點更近,提出動態(tài)散列位置的概念。首先以Sink節(jié)點 為頂點,90/n為夾角,將網(wǎng)絡區(qū)域劃分為a、b、c、d. . .n區(qū)。將存儲區(qū)域劃分為網(wǎng)格,如圖2 所示。
[0009] 2.節(jié)點工作時隙的分配:首先,計算每個網(wǎng)格內的節(jié)點個數(shù),以及各個節(jié)點到網(wǎng) 格中心點的距離,按距離從小到大為節(jié)點編號(A、B、C. . .N),用一個m行n列的矩陣T為網(wǎng) 格內的每個節(jié)點分配偵聽或睡眠時隙。矩陣T中的元素L表示節(jié)點工作時隙。為保證每 個節(jié)點睡眠和偵聽周期公平,m和n的值盡量接近。矩陣T的行m和列n與網(wǎng)格內節(jié)點數(shù) 量N的關系如公式(1)所示:
[0010] (1)
[0011] 公式⑴中,若N為偶數(shù),滿足m=n=N/2 ;若N為奇數(shù),規(guī)定矩陣行數(shù)m為N/2 向上取整,列數(shù)n=N-m,m+n個節(jié)點對應mXn個工作時隙。
[0012] 節(jié)點工作時隙L分配如公式(2)所示:
[0013]
[0014] 假設網(wǎng)格內有7個節(jié)點(A、B、C、D、E、F、G),則N= 7,由公式(1)計算得m= 4, n= 3。根據(jù)公式⑵帶入i,j值,構建矩陣T如圖3所示。
[0015] 從第一行第一列開始,自左向右分配連續(xù)的時隙,如遇矩陣邊界則垂直換到下一 行,并以相反的方向在該行繼續(xù)分配連續(xù)的時隙。如圖3所示,第一行從左到右為時隙1、2、 3,第二行從右到左為時隙4、5、6,以此類推。每個節(jié)點被映射到i行或j列,保證每個時隙 內有兩個節(jié)點處于活動狀態(tài)。矩陣T中,節(jié)點對應行或列中的元素表示節(jié)點的工作時隙。節(jié) 點A的活動時隙為1、2、3,其余時隙處于睡眠狀態(tài)。節(jié)點E的活動時隙為1、6、7和12。采用 蛇形時序分配方式,在時隙切換時始終保證有節(jié)點處于連續(xù)工作狀態(tài),如時隙1中節(jié)點A、E 處于工作狀態(tài),當時隙1切換到時隙2時,節(jié)點E進入休眠狀態(tài),節(jié)點F從休眠狀態(tài)進入工 作狀態(tài),而節(jié)點A在時隙1切換到時隙2的過程中始終處于工作狀態(tài),這種分配方式避免了 時隙切換時的丟包現(xiàn)象,保證了網(wǎng)絡運行的可靠性。
[0016] 3.存儲節(jié)點的選擇:如圖4所示,監(jiān)測節(jié)點B(Xb,Yb)監(jiān)測到事件優(yōu)先級為K-1的 數(shù)據(jù),對應存儲點應在第K-1層環(huán)內。利用散列表映射到散列位置G(Xg,Yg),節(jié)點B在區(qū)域b中,散列位置G在區(qū)域c中,利用監(jiān)測節(jié)點和散列位置坐標計算動態(tài)散列位置G。(Xg。,Yg。), 其中散列位置G和動態(tài)散列位置G。位于同一半徑圓弧上,監(jiān)測節(jié)點B和動態(tài)散列位置G。位 于同一半徑軸線上。選擇動態(tài)散列位置G。所在網(wǎng)格內的工作節(jié)點作為事件存儲節(jié)點,其 坐標由公式(3)和公式(4)求得。
[0017]
[0018]
[0019] 考慮到同一時隙監(jiān)測到的某一類型的事件數(shù)量不一樣造成各節(jié)點存儲容量的差 異,為每個節(jié)點設定存儲閾值,每一輪工作時隙結束后,檢測網(wǎng)格內各個節(jié)點的存儲容量。 若某個節(jié)點存儲容量超過閾值,將該節(jié)點虛擬坐標設為(0,0 ),同時告知網(wǎng)格內其他節(jié) 點自身存儲達到存儲閾值,網(wǎng)格內其他節(jié)點改變該節(jié)點的相關信息。下一輪根據(jù)各節(jié)點距 離網(wǎng)格重心的距離為各個節(jié)點分配工作時隙時,該節(jié)點不再參與節(jié)點工作時隙的分配;其 余節(jié)點分配工作時隙后重新開始新一輪的工作,以此類推。
[0020] 4.基于距離的存儲閾值策略:假定網(wǎng)絡中每個節(jié)點同構且有一個Grid_Node表 (用來存儲網(wǎng)格內其他節(jié)點信息的數(shù)據(jù)信息表),并為其設定多個存儲閾值及存儲閾值等 級TY。當存儲節(jié)點的數(shù)據(jù)達到預定義的閾值,其虛擬坐標Lv改為無窮大(°°,°° ),表示遠 離當前事件的散列位置,用虛擬坐標"覆蓋節(jié)點的原始坐標;同時該節(jié)點向網(wǎng)格內其他節(jié) 點發(fā)送Storage_Full包,告訴其他節(jié)點自身存儲達到某一閾值。網(wǎng)格內收到Stor