位置更新策略
準確地獲取移動對象的當前位置信息,是進行更為複雜的位置管理的先決條件。
移動對象的當前位置可以通過兩種方式獲得:一種是直接查詢無線通信系統中的位置管理設施(如位置伺服器)所提供的信息,這種方式可以獲得無線通信單元一級的位置精度,大多數情況下,這種位置精度就已經足夠了;另一種是通過全球定位系統(GPS)獲得移動對象的精確位置,這種方式下,位置精度通常可以控制在1m之內。
移動對象的位置總是在改變,要保證位置數據隨時有效,傳統方法是周期性刷新數據。但移動對象位置的頻繁變動會給伺服器帶來嚴重的更新開銷,而且會增加網路負擔,這就需要新的處理方法。目前主要採用位置建模方法:將移動對象的位置抽象成時間的函式,即Location= f( t),系統可根據該函式計算出移動對象在將來任一時刻的位置,移動對象無需周期性地報告當前位置,只在實際位置與計算位置的偏差達到或超過一定閾值時,才對資料庫進行更新。這種方法極大地降低了資料庫的更新開銷,減輕了網路負擔。
在移動對象的位置模型中具有代表性的成果有移動對象時空(MOST)模型和移動對象離散數據模型。
MOST模型引入了動態屬性的概念,動態屬性將移動對象的位置表示為時間的函式,這樣在移動對象正常運動時,無需對其位置信息反覆更新,僅在發生異常情況,如速度突然變化或運動線路發生改變時才進行資料庫更新。
然而MOST模型也存在著一定的局限。由於簡單函式的表達能力有限,動態屬性只能表達移動對象在未來較短時間內的移動軌跡,而對較長時間移動對象軌跡的表示就顯得無能為力了。為了克服這一缺陷,有人提出了移動對象離散數據模型,它將複雜的空間對象及移動軌跡分割為相對簡單的離散片段,為表示和處理複雜移動對象提供了一種可行的解決方案。
移動對象的位置管理方式本質上就具有不確定性(或稱不精確性)。不管採用何種位置管理及位置信息更新策略,移動對象資料庫中保存的位置信息與移動對象的實際位置總會存在一定的偏差。比如在周期性位置更新方法中,位置信息的更新是周期性完成的,在每一個更新周期內,資料庫中的位置信息是不變的,而實際上移動對象可能已經在此期間離開了原來的位置。將位置表示為時間的函式同樣也存在著位置的不確定性,位置函式僅僅是近似地刻畫了實際位置的變化,因此偏差總是客觀存在著。此外,系統通過設定閾值的方式來減少位置信息更新代價的策略,也增加了位置的不確定性。
所以說不確定性是移動對象管理中無法迴避的問題,最好的辦法不是不允許它存在,而是對它進行正確處理。
如果地址資料庫想維護每個移動用戶的精確地址,就要求每個移動用戶在跨越一個無線單元時都向其宿主位置伺服器報告,這樣會給網路及位置伺服器帶來過多的開銷。相反,如果移動用戶不報告地址,只是在進入另一個位置伺服器的覆蓋範圍時才做登記,那么又會使查詢該用戶當前地址的開銷量增大,因為必須對該位置伺服器的每一個MSS傳送尋呼廣播。
因此,更適合的方法是採用一種折衷策略,將每個位置伺服器下的MSS劃分為若干互不交叉的組,每個組稱為一個分割。移動用戶只有在從一個分割移動到另一個分割內時,才向位置伺服器報告地址的變動。
這樣,查詢一個移動用戶地址的步驟為:首先,查詢其宿主伺服器,找到當前所在的位置伺服器;然後,從該位置伺服器查出移動用戶在哪個分割內;最後,從這個分割內的各個MSS中找到該移動用戶。
查詢一個移動用戶的地址是一種最簡單的地址相關查詢。除此之外,還有各種各樣涉及地址的查詢,例如“請尋找一名公園附近的醫生”等。
這種地址相關查詢需要檢查各個對象的實際地址是否滿足約束條件,而這些實際地址必須進行地址查詢才能得到,因為位置伺服器只提供分割一級的不精確的地址。因此,要求得到地址相關查詢的最終答案,必須先查詢足夠的精確地址信息。如果對這一類查詢進行適當的最佳化,可以大大減少查詢地址信息所需的通信開銷。
在這方面,人們提出了多種時空查詢語言,如通過擴充SQL語言得到的時空查詢語言(STQL,Spatial-Temporal Query Language)以及將來邏輯語言(FTL,Future Logic Language)等。
STQL語言和FTL語言在SQL語言的基礎上補充了大量的空間和時間運算符。它們不僅能夠支持對移動對象過去和當前位置的查詢,而且還可以提供對未來位置的查詢,因為在移動對象資料庫的位置表示模型中,通常包含了對象的未來位置信息。
通過這些時間和空間運算符,我們可以表達非常複雜的查詢,如“查詢兩個移動對象,它們之間的距離在進入區域A之前小於2公里”,可以用如下的形式表示:
SELECT o,n FROM Moving Objects
WHERE
BEGINTIME(DIST(o,n)≤5)≤NOW AND
ENDTIME(DIST(o,n)≤2)≥
BEGINTIME(INSIDE(o,A)∧INSIDE(n,A))
查詢結果與提出該查詢的移動用戶的實際地址的相關性
查詢結果與提出該查詢的移動用戶的實際地址常常是相關的,例如,“附近最近的醫生在哪裡?”、“請告訴到大劇院的最佳線路以及相關的交通情況報告”等。這些查詢往往涉及地理數據和實時數據,並要求系統能夠動態生成報告,為移動用戶提供目錄服務。
在移動資料庫中,另一類重要的查詢是位置相關的持續查詢。以一個具體的位置相關的持續查詢Q為例,Q對應於一個時間區域,在該時間區域內,Q處於活動狀態,由於移動對象位置的改變,Q的查詢結果也在不斷變化,系統需要隨時將查詢結果的變化信息傳遞給查詢用戶,使用戶能不斷地實時監控最新的查詢結果。例如,在高速公路上行進的救護車可以提交這樣的持續查詢:“請在未來10分鐘內隨時告訴我離得最近的醫院”,而10分鐘之內,關於醫院的動態信息就會不斷返回給救護車。
位置相關的持續查詢可以促成一類重要的套用——環境感知的查詢處理。構想在2008年北京奧運會期間,一群外賓在旅遊景點參觀,導遊小姐手上的解說器自動播放著伺服器傳送過來的解說內容,隨著導遊的移動,解說器自動變換解說內容。這樣,導遊工作將變成一項輕鬆有趣而且人人都能勝任的工作。
查詢結果與用戶移動方向的相關性
有時,僅僅知道用戶的實際地址是不夠的。例如,可能需要知道用戶當前的前進方向,才能回答該用戶提出的有關行進路線的查詢。例如在某個商業大廈中找衛生間,目前最佳的解決方法是在手機上顯示行進的路線圖,並隨著你的前進而自動修改你的路線圖。
聚集度查詢
這一類查詢可以衡量某個地區的總體交通情況,如擁擠情況。它可以用來幫助移動系統進行動態資源分配,如某個無線網路單元內的頻率分配。例如,足球比賽結束之後,應該給體育場周圍地區分配更多的無線頻帶。
實時數據的查詢
在移動計算環境中,許多信息都是快速變化的,如移動用戶地址、城市交通狀況等。甚至在查詢過程當中,這些信息就可能已經改變了,因此查詢的結果可能已不是最新數據。這就產生了一個最基本的問題:查詢結果的意義究竟是什麼?如果查詢結果不能反映實際情況,那么應該怎樣查詢這種快速變化的實時信息?如何在查詢結果中加入預測信息,使得查詢更有實際意義?