本發明涉及數據庫管理系統、時空數據庫、浮動車輛跟蹤、交通情報分析,位置相關服務,大數據計算等領域,提出一種面向數據庫的時空軌跡大數據存儲系統及方法,屬于計算機互聯網技術領域。
背景技術:
隨著支持GPS的移動終端(如車輛導航儀、智能手機和物聯網定位器等)以及在線地圖服務(如Google Maps、百度地圖、MapQuest)的不斷推廣與普及,使得人們可以記錄他們當前的地理坐標并分享他們的運動信息到互聯網上去,如互聯網應用Bikely、GPS-Way-points、Share-My-Routes和Microsoft的GeoLife等項目。同時,越來越多的社交網絡,諸如微博、微信、Twitter、Foursquare和Facebook等,也提供基于GPS位置和行程共享的功能。根據歐盟GSA的報告,在Apple和Android手機APP市場上大約一半的應用在不斷手機用戶的位置信息。藉此,越來越多的智能手機用戶可以在日常生活中享受基于位置的服務LBS。
現今,空間數據專家和科學家把這類帶有時間戳的地理點序列數據稱作軌跡(Trajectory)。軌跡數據用來記錄移動對象隨著時間不斷改變的空間位置。它的通用數據表示形式是:<id,(latitude1,longitude1,t1,o1),(latitude 2,longitude 2,t2,o2)…>,其中(latitudei,longitudei)為空間維度的位置信息,(ti)為時間戳,(oi)為其他擴展屬性,比如速度、方向、狀態等?;谲壽E數據,人們可以研究一個移動對象的運動和一組移動對象的運動行為,如游客在博物館的游覽習慣。隨著巨量軌跡數據的生成,催生了許多新型的應用,比如社交網絡、行程規劃、線路推薦和通勤模式等。以軌跡相似性搜索和行程推薦類應用為例,其基本算法是:給定一些選中的位置(比如用戶在地圖上點擊了幾個坐標點),從數據庫中檢索出經過(或接近)這組坐標點的軌跡,Cyclopath就是一個生動的例子,它向用戶提供能夠匹配個人騎行需求的自行車路徑來,并將個人騎行知識共享到社區去。
軌跡數據區別于其它地理空間數據類型(比如OSGeo規范中的Geometry和Raster數據)的一個主要特征是:軌跡是一種時間序列化的地理空間數據。軌跡數據的實踐意義在于:離散的、孤立的GPS采樣點難以被直接理解與檢索,通過軌跡這種新型的數據模型,用戶可以輕松跨越時空采樣源數據與上層空間數據分析需求之間的語義間隔,進行高效快捷的軌跡大數據存儲與檢索。
近年來,科學家和學者已經提出了一些軌跡數據庫的原型系統,比如美國UIC大學的Domino、德國FernUni大學的Secondo、希臘UP大學的Hermos、瑞士EPFL的ST-Toolkit和澳大利亞UQ大學的SharkDB等。在中國科研界在逐漸研發軌跡數據管理的原型系統,比如中國科學院軟件研究所所提出的移動對象數據庫DTNMOD系統,用以管理路網受限的運動軌跡。但是這些系統都是基于學術研究和教育目的開發的,難以適用于大數據級的實踐應用中,具體不足之處體現為兩點:(1)難以支持大規模并發的數據注入。在大數據時代進行數據系統設計必須遵守的一條規則是:“數據是有重量的”,需要考慮數據并發加載和注入的能力。比如一個城市有數萬輛出租車,每秒鐘有數萬條GPS記錄注入(參考當前最大叫車軟件嘀嘀打車數據和最大交通數據服務商四維圖新)?,F有的軌跡數據庫原型中均將GPS源數據轉換為軌跡數據模型,無論是實時數據注入還是批量數據導入,其數據加載性能與擴展性非常有限。(2)難以支持復雜的數據分析場景?,F在大數據系統具有2個技術特征:采用可以水平擴展的集群架構,提供可以靈活定制的OLAP分析技術。前者意味著數據需要在集群之間進行高速的交換(比如MapReduce架構下的shuffle技術或MPP架構下地interconnect技術),造成通訊風暴;后者意味著如果沒有提供貼近高層語義的軌跡查詢接口,用戶將難以進行高效快捷的開發,甚至會造成通過商業智能軟件(BI)生成非常復雜、難以解讀和調優的查詢計劃,堵塞了大數據分析計算隊列。
綜上所述,對于面向數據庫的軌跡大數據存儲方法,目前已有的相關方案難以適用于大數據級的實踐應用,難以支持大規模高并發的數據注入以及難以支持復雜的數據分析場景。
技術實現要素:
本發明的目的在于:克服現有技術的不足,提供一種面向數據庫的軌跡大數據存儲方法,確保大規模高并發的數據注入,以及對復雜的數據分析場景提供支持。
本發明技術解決問題:針對快速增長的海量時空軌跡數據的存儲需求,提供一種面向數據庫的軌跡大數據存儲方法(Database-oriented Trajectory big data Storage method,簡稱DOTS),提供源時空采樣數據的高并發注入、軌跡數據查詢計劃高效執行和豐富的軌跡語義查詢擴展框架,所提方法涉及時空軌跡數據在數據庫管理系統中的存儲、表征與查詢等環節,充分考慮實踐性,具有大規模源數據并發加載、輕量級軌跡數據表征和靈活查詢處理等先進技術特征?;诒景l明所提方法,數據工程師和數據科學家們可以搭建軌跡大數據存儲系統,向手機APP應用、企業Cloud服務和個人行程管理等提供基礎軟件支撐。
本發明技術解決方案包括:一種面向數據庫的軌跡大數據存儲方法,實現步驟為:
步驟1,利用信息采集終端對某一具有位置信息采樣的對象所處的狀態信息如經緯度、速度等等進行信息采集,通過必要的傳輸設備將采集到的信息發送到數據處理系統;
步驟2,在數據處理系統,對接收到的原始數據信息進行必要的噪音過濾和數據清洗,之后將簡單處理過的數據信息直接注入數據庫,通過以上步驟得到數據存儲層。以下步驟中所述軌跡信息的源軌跡數據都是通過此步驟的操作得到的;
步驟3,對上述步驟得到的源空間數據進行建模與處理,并通過截取、投影、度量、擬合等內部函數操作,得到軌段(Track)數據,通過以上操作步驟得到軌跡層;
步驟4,在基于步驟3得到的軌段數據的基礎上,提供時空數據分析的復雜查詢功能。
步驟1所述的某一具有位置信息采樣的對象所處的狀態信息為:信息采集對象的狀態信息包括唯一識別id號,經緯度信息<latitude,longitude>,時間信息time,運行速度speed以及其他信息,可以表示為<id,latitude,longitude,time,speed,others>。
所述步驟2中對接收到的原始數據信息進行必要的噪音過濾和數據清洗,這是為了將一些明顯的存在數據信息誤差的錯誤數據丟棄掉,避免因為錯誤數據對后續的操作帶來更多的累計影響。對接收到的原始數據信息進行必要的噪音過濾和數據清洗之后將簡單處理過的數據信息直接注入數據庫,這么做對數據庫的好處是:短事務、高并發、可水平擴展。軌跡大數據注入的數量和速度都會對數據庫系統造成致命威脅,比如占用連接池、消耗鎖資源、耗盡內存空間等,所以除了基本的數據清洗和噪音過濾外,對于數據注入不能進行太復雜的處理。數據將以“元數據表+數據子表”的方式進行組織,具體形式如下:軌跡數據庫由一組軌跡池構成,每個軌跡池由一組軌跡構成;軌跡池和子表的對應關系保存在元數據表中,元數據表中每一行對應一條軌跡,同一個軌跡池的軌跡保存在同一個子表中;元數據表除了保存軌跡池和軌跡對應關系,還保存該軌跡的唯一ID號,以及時空范圍、最后一次更新時間、所采用的坐標系、時空精度誤差等等源數據。
所述步驟3中對存儲層的源空間數據進行建模與處理,存儲層的源數據是對連續的運行軌跡的離散采樣數據存儲,離散的采樣點是難以解讀的,所以需要將其進行整體或局部建模,并提供包括截取、投影、度量、擬合等內部加工函數。得到軌段數據,因為中間數據需要在數據庫集群環境下進行交換,為了提高集群節點之間的交換效率,所以提出軌段概念。對源空間數據進行操作后得到軌段數據,每個軌段是一個虛擬的軌跡子段,它只是對一個軌跡特定時間、空間范圍內連續軌跡段的元數據表示,并沒有記錄真實數據(GPS序列),所以軌段結構簡單,單項數據的尺寸小而固定,數據規模很小,適合在數據庫中作為中間數據類型進行計算與加工。對源空間數據進行操作后得到軌段數據,每個軌段數據對應著某條軌跡的子段,它負責保存該軌段的數據分布特性,比如數據劃分效率、時間區間、空間閉包等功能,但是只有經過實例化的軌段才具有真實數據。
所述步驟4在基于軌段數據的基礎上,提供時空數據分析的復雜查詢功能,其中所依賴的支撐函數包括數據實例化、格式轉換和I/O操作等??梢蕴峁┌ɑ谡Z義的軌跡特征分析以及其他復雜功能,如軌跡推薦(給出一組點或一條軌跡,找出經過這些點的其他相似軌跡)和軌跡聚類(給定一組軌跡,找出并行時間足夠長的軌跡子組來),以及軌跡異常檢測(給定一組軌跡,找出其中可能存在的異常軌跡)。
本發明與現有技術相比的優點和積極效果如下:
(1)本發明支持大規模高并發的數據注入,在數據庫中以擴展方式進行相關的用戶定義數據類型和用戶定義函數,并提供了四種源軌跡數據注入數據庫的方法,以“元數據表+數據子表”的方式進行數據組織,確保大規模高并發的數據注入的實時運行。
(2)本發明支持復雜的數據分析場景,可以根據數據庫的標準SQL接口來訪問軌跡相關的擴展函數,并提供了不同的數據輸出方式以應對基于語義的軌跡特征分析以及其他復雜功能的應用,擴展了方法的應用范圍。
附圖說明
圖1為本發明的實施例流程圖。
具體實施方式
如圖1所示,本發明實例建立的面向數據庫的軌跡大數據存儲方法為:利用信息采集終端對某一具有位置信息采樣的對象所處的狀態信息如經緯度、速度等等進行信息采集并通過必要的傳輸設備將采集到的信息發送到數據處理系統,在數據處理系統,對接收到的原始數據信息進行必要的噪音過濾和數據清洗,之后將簡單處理過的數據信息直接注入數據庫,對數據庫中的源空間數據進行建模與處理,并通過截取、投影、度量、擬合等內部函數操作,得到軌段數據,并在軌段數據的基礎上,提供時空數據分析的復雜查詢功能。本發明方法提供源時空采樣數據的高并發注入、軌跡數據查詢計劃高效執行和豐富的軌跡語義查詢擴展框架,涉及時空軌跡數據在數據庫管理系統中的存儲、表征與查詢等環節,充分考慮實踐性,具有大規模源數據并發加載、輕量級軌跡數據表征和靈活查詢處理等先進技術特征。以目前世界上用戶最多的開源數據庫PostgreSQL及其集群方案(如PG-XL,PG-XC,GPDB)為例,說明一下如何在其中實施本發明所提方法,對本發明的具體實施方式做詳細描述。
具體實現步驟如下:
該框架分為三層,分別為存儲層,軌跡層和語義層:
1、存儲層,負責保存源時空采樣數據,除了進行必要的噪音過濾和數據清洗外,不對數據進行太多加工,比如將GPS采樣直接注入數據庫。這么做的對數據庫的好處是:短事務、高并發、可水平擴展。軌跡大數據注入的數量和速度都會對數據庫系統造成致命威脅,比如占用連接池、消耗鎖資源、耗盡內存空間等,所以除了基本的數據清洗和噪音過濾外,對于數據注入不能進行太復雜的處理。
在數據庫中以extension方式的方式實現Trajectory相關的用戶定義數據類型UDT和用戶定義函數UDF。關于計算幾何相關算法,可以基于GEOS庫和GDAL庫兩個開源的OSGeo標準庫實現。關于時空索引,可以基于PostgreSQL的GiST索引框架進行擴展。對于需要數據分發的場景(如GPDB),可以采用三種方式進行解決:增加時空數據的分發策略,提供基于UDF的數據分發機制,或通過擴展不可見列來保存數據降維數據(如保存其GeoHash值,后者為一維字符串,可以適用于原有分發策略)。
數據注入:有四種方式可以將軌跡源數據注入數據庫,一種是調用trajectory.append()函數操作trajectory的meta-data元數據表;一種是直接通過SQL的INSERT語句往raw源數據表中添加新的時空采樣值;或者通過數據庫的COPY TO語句進行DDL操作;最后一種是通過ETL工具進行加載。數據注入方式的靈活性保證了本發明所提方法的實用性。
在存儲層,數據將以“元數據表+數據子表”的方式進行組織具體形式如下:
(1)軌跡數據庫由一組軌跡池構成,每個軌跡池由一組軌跡構成;
(2)軌跡池和子表的對應關系保存在元數據表中,元數據表中每一行對應一條軌跡,同一個軌跡池的軌跡保存在同一個子表中;
(3)元數據表除了保存軌跡池和軌跡對應關系,還保存該軌跡的唯一ID號,以及時空范圍、最后一次更新時間、所采用的坐標系、時空精度誤差等等源數據。
2、軌跡層,負責對存儲層的源空間數據進行建模與處理,存儲層的源數據是對連續的運行軌跡的離散采樣數據存儲,離散的采樣點是難以解讀的,所以需要將其進行整體或局部建模,并通過截取、投影、度量、擬合等內部函數操作,得到軌段數據,因為中間數據需要在數據庫集群環境下進行交換,為了提高集群節點之間的交換效率,所以提出軌段概念。每個軌段是一個虛擬的軌跡子段,它只是對一個軌跡特定時間、空間范圍內連續軌跡段的元數據表示,并沒有記錄真實數據(GPS序列),所以軌段結構簡單,單項數據的尺寸小而固定,數據規模很小,適合在數據庫中作為中間數據類型進行計算與加工。每個軌段數據對應著某條軌跡的子段,它負責保存該軌段的數據分布特性,比如數據劃分效率、時間區間、空間閉包等功能,但是只有經過實例化的軌段才具有真實數據。
3、語義層,在基于軌段數據的基礎上,提供時空數據分析的復雜查詢功能,其中所依賴的支撐函數包括數據實例化、格式轉換和I/O操作等。
數據查詢:根據數據庫的標準SQL接口來訪問軌跡相關的擴展函數。數據的輸出,可以通過SQL返回,也可以保存在單獨的結果臨時表中,僅返回該臨時表的名稱或者其ID信息。數據輸出以OSGeo的字符串標準輸出,亦或可以通過JSON格式進行輸出,以便于直接服務于當前互聯網應用。
可以提供包括基于語義的軌跡特征分析以及其他復雜功能,如軌跡推薦(給出一組點或一條軌跡,找出經過這些點的其他相似軌跡)和軌跡聚類(給定一組軌跡,找出并行時間足夠長的軌跡子組來),以及軌跡異常檢測(給定一組軌跡,找出其中可能存在的異常軌跡。
關于DOTS的內部查詢函數定義及其完整列表,不在本發明范圍內,本發明僅對起軌跡大數據的存儲方法進行約定。
以上通過實例對本發明進行了詳細的描述,本領域的技術人員應當理解,在不超出本發明的精神和實質的范圍內,對本發明做出一定的修改和變動,比如對數據庫返回數據的具體表示格式進行修改,或對索引的組織方式及搜索過程進行局部修改,仍然可以實現本發明的目的。
本發明未詳細闡述部分屬于本領域技術人員的公知技術。