深度解析時空數據技術要點

隨着物聯網迅速崛起,智能設備廣泛普及,各類聯網傳感器正以前所未有的速度推動着我們走向智能時代。這些智能設備不僅實現了自動化、遠程控制和實時監測,還產生了龐大且多樣化的數據資源。這些數據涵蓋傳統的溫度、溼度等遙感傳感數據,同時也包含大量的地理位置信息、音頻、視頻等多種數據類型。這些物聯網數據蘊含着巨大潛力,但也伴隨一個至關重要的挑戰:如何高效、安全地存儲、管理和處理這些信息。數據的價值並不僅僅體現在存儲本身,而在於如何從中提煉出有價值的信息。度能團隊基於自身長期對時序數據存儲管理的技術積累,不僅擴展了對空間屬性維度的數據管理和分析應用能力,打造了時空數據管理平臺產品,還通過多源時空數據管理及服務發佈的能力,廣泛應用於工業、園區、水務、智慧城市、數字孿生、物聯網、GIS等私有化場景,爲業務應用系統築造時空數據服務底座。本文聚焦物聯網數據的發展趨勢,重點探討數據存儲關鍵技術要點。





智能領域的重要角色:時序數據





聯網設備迅猛發展推動大量時序數據應運而生。時序數據在智能設備領域即提供了設備狀態和行爲的關鍵洞察,通過設備傳感器記錄了諸如溫度、溼度等重要感應數據。與其同時,時序數據正在廣泛應用於金融、氣象、生產製造等不同領域。


▌1.1 時序數據五大特點


時序數據具有五大特點,第一,時間順序性作爲時序數據主要特徵,數據點按照時間先後順序進行排列,這種順序性使時序數據在分析過程中有一定規律。第二,時序數據的數據點採集頻率取決於設備傳感器工作頻率,因此數據點之間通常存在一定時間間隔,這種頻率性可以揭示出數據採集的速率和節奏。第三,時序數據可能表現出明顯時序趨勢,即數據值在較長時間跨度內逐漸上升或下降。這一趨勢有助於我們理解數據的演變和發展。第四,時序數據在較長時間跨度上可能呈現出重複的模式和週期性,這種呈現可以揭示出某種規律性,對於預測和決策制定至關重要。第五,時序數據中常常包含噪音和異常值,這些干擾因素可能影響數據的準確性和可靠性,因此需要特別處理。如圖1所示,基於這些特點,我們可以爲時序數據定義特殊語義度量、字段和標籤,從而構建核心時間序列概念。


▲ 圖1 時序數據


▌1.2 時序數據常見問題與挑戰


時序數據通常以大規模和高頻率方式產生。例如傳感器數據,由於數據量龐大,需要低成本存儲方案,以確保高效地保存大量時序數據,但同時需保持成本效益。在數據分佈式存儲時,多臺服務器共同承擔數據存儲,常常會面臨數據傾斜的問題,即數據在分佈上不均勻,導致一些節點或分區負載過重,需要有效解決這一問題以確保系統性能穩定性。時序數據在實際存儲和查詢時,實際寫入/查詢的數據大小可能存在比程序要求寫入查詢數據更大的情況,既讀寫放大,在這個過程中會產生額外存儲和計算成本,如何有效減少讀寫放大對降低數據處理成本至關重要。查詢時的隨機IO也是時序數據難點之一,有效減少查詢時的隨機IO對於提高查詢性能至關重要。這些技術難點構成了打造高性能、低成本的時序數據存儲系統關鍵挑戰。


▌1.3 四大時序數據技術多維度解決數據管理痛點


時間索引技術是一種關鍵數據管理方法,用於加速和優化時間序列數據的查詢。它通過對數據按時間進行排序、分區以及採用特定索引結構來實現,從而使在時間範圍內迅速定位和檢索數據成爲可能。這種索引結構極大地提升了查詢性能,有效減少讀寫的隨機IO。此外,時序壓縮技術採用多種方法和策略,以降低存儲佔用。其中一種關鍵方法是 Delta-of-delta (二階差分編碼)編碼,通過存儲實際數據值,連續數據點之間的變化,從而有效減少數據存儲需求。針對不同數據點類型,也可以採用諸如Simple8b、Gorilla等壓縮後,再通過 Snappy、LZ4和 Zstd 等壓縮算法,以減小實際數據存儲空間的佔用。存儲空間越連續、緊湊,就意味着實際存儲查詢時,可以最大程度減少讀寫IO成本。


圖2 時序數據抽象架構


在預聚合技術方面,高頻率生成的原始時序數據不僅按照指定時間窗口進行聚合,形成更大時間粒度數據點,極大減少了數據點數量,還顯著降低了存儲需求,在長期數據保留和成本控制方面至關重要。另一方面,在大規模時序數據場景下,查詢預聚合數據比查詢原始高頻率數據更快,最大程度上縮短查詢響應時間。


時序數據分級存儲是將時序數據分成不同層級的策略,每個層級使用不同存儲介質和策略,用以最優化存儲資源的使用和查詢性能。熱數據,即頻繁訪問的數據,通常存儲在高性能介質如固態硬盤(SSD)或內存中,以確保快速讀取和查詢響應時間。相對不經常訪問的暖數據,雖然需要更多存儲空間,但通常存儲在成本較低但查詢性能稍慢的傳統磁盤驅動器上。冷數據,即很少訪問的歷史數據,通常需要長期保存以滿足法規或合規性要求,可以歸檔到成本最低的存儲介質上,如磁帶存檔或雲存儲,以進一步降低存儲成本。


時序數據分級存儲通常需要自動數據遷移策略,以將數據從一個層級遷移到另一個層級,觸發條件可以基於數據訪問頻率、時間戳或其他標準。合理化數據生命週期管理策略有助於確定何時將數據從熱層級遷移到暖層級,後續再次遷移至冷層級,以最大程度地降低存儲成本。





發展過程中的新突破:時序和空間數據深度結合





▌2.1 空間實體的描述形式:空間數據特點


空間數據(Spatial Data)是對空間實體的描述,空間實體則是由自然世界中地理實體抽象而來,比如一個城市地圖可以由點(Point)、線(Line)、多邊形(Polygon)以及由這3種基本空間類型衍生的複合空間類型進行描述,除了表達其本身形狀的空間描述外,還需要包含其所處空間位置的描述(如經緯度),以及一些業務屬性(如所屬轄區)。


對於空間數據的建模,分爲2種類型,一種是基於對象的模型,一種是基於場的模型。基於對象的模型是將整個地理空間看作一個空域,所有的空間實體作爲獨立對象分佈其中,這種模型的空間數據我們稱之爲矢量數據;基於場的模型是將地理空間中的空間實體和現象看作連續變量,比如地表的溫度分佈、土壤溼度等,這種模型將地理空間劃分爲均勻的網格,每個網格取值就是其表示的現象數值表達,比如溫度、海拔等,這種模型的空間數據我們稱之爲柵格數據。


矢量數據和柵格數據是兩種截然不同的空間數據,存儲方式也完全不同,由於矢量數據是由多個獨立對象表示,因此往往採用支持空間索引的數據庫來存儲;而柵格數據由於主要用於表達連續的空間現象,因此主要採用tiff這種圖像格式來存儲,而圖像則主要使用文件系統、對象存儲等方式來進行持久化存儲。


▌2.2 空間數據融合時間信息:時空數據特點


時空數據(Spatial-Temporal Data)是由空間數據和時間信息複合而成的數據,用於描述在地理空間中隨着時間變化的現象、事件或屬性。時空數據的空間屬性描述了該數據在地理空間中的位置,比如經緯度信息,而時間信息則往往用於表達數據採集、觀察或者記錄的時間點。由於時空數據能夠描述一段時間內連續變化的現象,因此這種數據類型能夠幫助我們分析空間位置和時間信息間的關聯,比如地理區域內隨時間變化的溫度、人口流動等。


基於空間數據從模型上可以分爲矢量數據和柵格數據,所以時空數據模型也是來源於這兩種模型。矢量數據的時空數據,可以將時間戳作爲一個屬性附加到空間數據上,這樣空間數據就變成了時空數據,並且由於矢量數據是結構化數據,因此存儲空間佔用很低,還可以很好地支持幾何空間查詢,這也是主流時空數據描述方式;對於柵格數據的時空數據,則需要保存採樣時間內的所有柵格圖像,這對於存儲空間極其不友好,往往難以支持高效的時空查詢。


 ▌2.3 空間索引技術解決時空數據存儲遇新挑戰


時空數據從模型上可以分爲矢量數據和柵格數據,由於柵格數據主要以圖片的方式保存,存儲上也主要以文件系統和對象存儲爲主,因此本文不做詳細介紹,而矢量數據是結構化數據,一般存儲在關係型數據庫中,需要空間索引技術支持,以便能夠查詢一定空間範圍內的空間對象,其技術挑戰主要有以下2點:


1)  如何索引多維數據

數據庫索引大致可以分爲2類,一是哈希索引,二是範圍索引,哈希索引本質上是對單個字段進行精確匹配查詢;範圍索引一般採用多叉樹作爲數據結構,支持對索引字段進行範圍匹配。而時空數據這種多維數據無法直接使用上述這2種索引模型,因此需要單獨設計一種適用於多維數據的索引模型。


2)  如何在支持空間查詢條件的前提下實現一般字段條件查詢

時空數據的查詢往往包含有一般字段的篩選條件,例如,查詢7點到8點之間,位於浦東新區內,類型爲出租車的所有汽車對象。爲了實現這種查詢,要求存儲系統支持多種索引模型,還需考慮到存儲空間和查詢性能,這對存儲系統設計是一個重要挑戰。


▌2.4 時空數據存儲要點


時空數據存儲面臨最大的挑戰是如何索引多維數據,以及如何支持多種索引模型。我們將以二維點和二維多邊形爲例,介紹如何索引這些數據。


2.4.1  二維點的空間索引


圖3 二維空間查詢


由上圖可見二維空間中散落着一些點,如pt-1、pt-2等,紅色矩形框是我們的查詢條件,這個查詢可以表達爲如下的SQL語句:


SELECT * FROM data WHERE ST_Within(geometry, BOX)


其中data表示我們的數據集,ST_Within函數表示被BOX包含的所有空間對象。我們首先對空間進行分塊,圖中將空間劃分爲了4*4的方格,並且爲每個方格賦予了唯一編碼,這樣每個點都散落到了某個方格中,並與其編碼相關聯,這使得我們可以通過編碼值索引到其內部的所有點,我們用下圖的表格來存儲這種關聯關係:


▲表1 index表

由於圖中紅框與0000和0001兩個方格相交,因此查詢可以轉化如下:


SELECT * FROM index WHERE key >= ‘0000’ and key <= ‘0001’


其中index即爲表1所示的index表,通過空間分割加編碼方式,我們將一個二維空間查詢轉化爲了一維範圍查詢,最後我們還需要一個過濾器根據查詢條件過濾出最終結果。


2.4.2 以空間分割、編碼爲基礎二維多邊形的空間索引新思路


對於二維多邊形,大致的思路也相同,但是在編碼方式上有較大區別。在進行編碼前,我們首先需要一些定義,對於在切割空間中產生的子空間,我們稱之爲Element,對於每個Element,我們在計算其是否包含一個多邊形時,會對其本身的範圍向右上方向進行一級擴展(不超過整個空間的邊界),如下圖所示:


圖4 Element的擴展


之所以這樣做,是因爲如果一個多邊形落在中央位置,則沒有任何一個Element可以包含這個多邊形,如圖4中央的多邊形所示。一種常見的二維多邊形編碼方式就可以總結爲,對於包含多邊形的子空間進行不斷切分,直到切分後的子Element無法包含目標多邊形,停止空間切分,如圖5所示。


圖5 二維多邊形的編碼過程


編碼結束後,得到的編碼值無法直接使用,因爲00和0000這種編碼值如果直接使用是重複的,所以要對編碼值進行一次映射,假設分割最大層級是N,則總的Element數是4^0+4^1…+4^N=((4^(N+1)-1))/3,即需要將編碼值映射到[0,( (4^(N+1)-1))/3- 1],映射方式不是唯一的,這裏我們假設映射方式叫做,會在查詢時使用到。


在查詢方面,對多邊形、對點查詢也存在一些差異,如圖6所示,紅色查詢框與對應編號Element相交,將其加入待查詢的key的集合,並對其進行子空間切分,將與查詢框有交集的空間加入待查詢的key集合,直到達到最大切分層級。最後,對得到的key集合進行合併,得到一組key range,對key range使用進行映射,使用映射的結果進行查詢,使用過濾器進行過濾,得到最終結果。


圖6 二維多邊形的空間查詢


2.4.3 差異化空間填充曲線對空間索引的多元影響

我們介紹瞭如何對點和多邊形進行空間索引,其中核心思想是對空間進行分割,其次編碼。其中編碼方式有很多種,不同的編碼方式會導致編碼值在空間上以不同順序相連接,如下圖所示:


圖7 空間填充曲線


我們在2.4.1和2.4.2節中使用的編碼方式稱之爲z曲線,除了z曲線以外,還有其他的空間填充曲線,如希爾伯特曲線、皮亞諾曲線等,這些不同的曲線對於空間索引的性能往往存在一定影響,如下圖所示:


圖8 z曲線和希爾伯特曲線


圖中對於空間使用了z曲線和希爾伯特曲線進行了切分,藍色框是一個空間查詢框。我們會發現,對於z曲線來說,這個查詢會產生2個range查詢;而對於希爾伯特曲線來說,會產生1個range查詢。所以不同的空間填充曲線,在空間查詢時,會帶來不同的IO次數。一般來說,希爾伯特曲線的性能涉及到旋轉操作,所以編碼方式比z曲線複雜。


2.4.4 時空數據存儲


在2.4.1到2.4.3節中,我們介紹了對多維數據進行索引的大致原理,基於這些大致原理,我們可以給出對應存儲設計,來支持多索引模型,以及空間和時間的混合查詢。


圖9 時空數據存儲


時空數據整體上由空間索引表、tag索引表和數據表三個部分組成,空間索引表和tag索引表根據查詢條件得到一批token(token可以看作數據的主鍵),不同token數據全局有序分佈在不同存儲節點上,每個存儲節點數據又按照時間分片,每個時間分片的數據按照token排序,同一個token的數據則按照時間排序。


通過這個設計,可以在查詢時,將對數據表的查詢請求合併成少數batch請求,每個batch請求攜帶一批token,對這一批token的查詢則可以通過順序io的方式查詢磁盤,從而大大降低io次數,提升查詢性能。而時間分片設計則可以大大減少需要過濾的數據量,縮小查詢範圍,並且在數據按照時間批量刪除時,通過直接刪除文件的方式大大提升刪除性能。





時代浪潮下機遇與挑戰共存:時空數據將不斷攀登新高峯





黨的二十大報告提出加快發展數字經濟,促進數字經濟與實體經濟深度融合。由此可見順應新一輪科技、產業變革趨勢,數字化轉型在數字經濟發展過程中的重要地位。2023年9月13日至14日,由中國信息通信研究院、中國通信標準化協會聯合主辦的2023數字化轉型發展大會暨首屆數字原生大會於北京隆重舉辦。會上公佈了第二屆“鼎新杯”數字化轉型應用大賽全國總決賽獲獎案例。本次賽事,百度以智慧北京-面向北京市地理空間領域建設的政務時空大數據平臺案例斬獲二等獎。本次獲獎案例,採用時空數據管理平臺構建政務時空大數據空間底座,賦能時空平臺專區試點應用建設,加速政府數據和行業領域數據融合,提升政府數據使用價值。實現政務地理空間信息資源共享服務平臺對數據接入層、數據託管平臺、數據管理門戶的擴展、升級,搭建時空專區的運營支撐平臺。加深智慧城市業務、空間兩個方向在時間維度上的縱深關聯,建立即時感知、全時響應的“時空動態”智慧城市建設新範式。


第二屆“鼎新杯”數字化轉型應用大賽頒獎圖


未來,我們將努力構建更多創新實踐案例和解決方案,使得時空數據在城市規劃、環境監測、醫療保健、交通管理等多元化領域發揮關鍵作用,推動大數據技術產業創新發展、助力構建以數據爲關鍵要素的數字經濟、同時,在不斷探索時空數據的潛力時,我們也將全力保障數據隱私和安全,確保時空數據的規範使用。

本文分享自微信公衆號 - 百度開發者中心(baidudev)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章