03.07 GIS的數據是怎麼存儲的?

杯酒難醉


大數據GIS是在大數據浪潮下,GIS從傳統邁向大數據時代的一次變革。大數據GIS能為空間大數據的存儲、分析和可視化提供更先進的理論方法和軟件平臺,促進了傳統GIS的產業升級,為地理信息產業發展提供新的渠道和原動力,服務於我國“十三五”期間的大數據產業發展和部署。

大數據GIS

大數據領域已經出現了許多實用的IT技術,例如分佈式文件系統、分佈式數據庫、分佈式計算框架、流處理框架等。這些技術使我們能夠使用普通機器對大數據進行處理和挖掘,但多聚焦於通用的非空間數據領域,對空間數據的專業分析能力不足。而傳統GIS由於受其IT技術框架的限制,並不能很好地應對大數據對分佈式存儲與計算、流數據處理等的技術要求。

大數據GIS就是把大數據技術與GIS技術進行深度融合,把GIS的核心能力嵌入到大數據基礎框架之內,並打造出完整的大數據GIS技術體系。大數據GIS的核心技術如下圖所示:

分佈式空間數據庫(Distributed Spatial DataBase,DSDB)是使用計算機網絡把面向物理上分散,而管理和控制又需要不同程度集中的空間數據庫連接起來,共同組成一個統一的數據庫的空間數據管理系統。

分佈式空間數據庫可看成是空間數據庫+計算機網絡。但是它絕對不是二者的簡單結合,它是把物理上分散的空間數據庫組織成為一個邏輯上單一的空間數據庫系統;同時,又保持了單個物理空間數據庫的自治性。

分佈式空間數據庫系統是由若干個站點(或節點)集合而成,它們通過網絡連接在一起,每個站點都是一個獨立的空間數據庫系統,它們都擁有各自的數據庫和相應的管理系統及其分析工具。整個數據庫在物理上存儲於不同的設備上,而在邏輯上是一個統一的空間數據庫。

分佈式空間數據庫系統的特點

  • 可靠性:在DDB中,單一部件的失效,不一定使整個系統失效,這比集中式數據庫的一個部件的損壞而導致整個系統的崩潰好得多,也就是可靠性提高了很多。而且,在DDB中,因為在不同的節點上可能有數據的副本,因此可以通過多個版本的副本恢復失效的數據。
  • 自治性:DDB允許每個場所有各自的自主權,允許機構的各個組織對其自身的數據實施局部控制,有局部的責任制,使它們較少地依賴某些遠程數據處理中心。
  • 模塊性:DDB是一個類似於模塊化的系統,因為增加一個新的節點,遠比用一個更大的系統代替一個已有的集中式系統要容易得多。這使得整個系統的結構十分靈活,增加或減少處理能力比較容易,而且這種增減對系統的其他部分影響較小。模塊性決定了DDB具有很強的升級能力和較低的投資費用。
  • 高效率、高可用性:在DDB中,通過合理的分佈數據,使得數據存儲在其常用的節點,這樣既縮短了響應的時間,減少了通信費用,又提高了數據的可用性。並且,對常用數據的重複存儲,也可以提高系統的響應速度和數據的可用性。

Hbase 分佈式數據庫

概述:Hbase 是一個基於 HDFS 的面向列的分佈式數據庫,源於 Google 的 BigTable 基於 GFS 進行分佈式數據存儲一樣,前文提到,Hbase 是基於流式數據訪問,對於第時間延遲的數據 訪問並不適合在 HDFS 上運行,所以需要實時性的隨機訪問超大規模的數據集,使用 Hbase 則是更好的選擇;

作用:Hbase 作為典型的非關係型數據庫,Nosql 數據庫主要分為以下幾類:

Ø 基於鍵值對存儲的類型;

Ø 基於文檔存儲的類型;

Ø 基於列存儲的類型;

Ø 基於圖形數據存儲的類型;

在 Nosql 領域中,Hbase 本身不是最優秀的,但得益於與 hadoop 的整合,為其帶來了強大 的擴展空間。Hbase 本質只有插入操作,更新刪除等操作都是通過插入操作來完成,這是由 於底層 HDFS 流式訪問(一次寫入,多次讀取)決定的,每次插入數據時,數據會帶有“時 間戳”的標記,形成多個版本,Hbase 對於一個數據會保留其固定的版本數量,如果在查詢 時,也是顯示出距離當前時間最近的一個新版本;

傳統的GIS數據存儲大多是關係型數據庫,但關係型數據庫在海量數據的管理中面臨許多問題,包括高併發讀寫、難擴展等,已經成為制約GIS發展的瓶頸。同時,GIS數據中的圖片、影像數據等都是非結構化的,關係型數據庫不能合理地處理非結構化數據。而HBase以其高可靠性、高擴展性、高容錯性、高效性以及適用於海量非結構化數據存儲處理分析的優勢在處理GIS數據方面提供了另一種思路,即解決HBase應對GIS中的兩大挑戰:大規模數據處理的時延和空間位置建模.

格柵數據獲取

柵格數據的索引

層級編碼、X座標與Y座標表示的不僅是一個瓦片數據的索引,同時還是瓦片數據的地理位置標誌,通過數學公式在查詢和檢索時,行列編碼和經緯度之間可以實現相互轉換。本文中柵格數據存於HBase,rowkey的表示方式為zoom_level、x_coordinate、y_coordinate,列簇(column family)為i,列(column)為png_info。柵格數據在系統中的展示形式如圖所示。

在柵格數據切片及寫HBase上主要是略去了磁盤寫步驟,默認的柵格數據獲取是以文件形式存儲在本地磁盤,再通過讀磁盤文件寫入HBase。對北京市分別切片至16層、18層,並將柵格數據寫入HBase測試結果

從表可以看出,改進後略去磁盤寫操作,在柵格數據量較少時性能反而下降。但在處理數據規模較大(如對中國地圖或世界地圖進行切片)時,會因持續寫磁盤操作,生成文件夾及切片文件數太多導致inode(索引節點)耗盡。經過約24 h的持續切片,生成海量切片小文件,導致服務器inode用盡,即使硬盤空間仍有空餘,也無法在硬盤上創建新文件,進而切片工作無法正常完成。

若將切片直接寫入傳統數據庫(如MySQL、Oracle、PostgreSQL等),寫入速度不斷降低,導致寫入時間不可接受,後期的檢索時間也較慢。另外,海量切片小文件寫入傳統數據庫會對數據庫造成較高的負載,系統的穩定性和擴展性難以控制。

經過改進測試,對世界地圖連續切片一個月,形成83 GB的柵格數據,未經過磁盤寫操作直接寫入HBase,未出現任何異常情況。

本文對柵格數據的檢索也進行了驗證,在124 217 416條記錄的HBase表上檢索指定切片的響應時間為毫秒級(0.004 s)。同時,HBase也支持指定範圍檢索,一次返回萬級別切片的響應時間為秒級(5.077 s)。

為了對海量矢量空間數據進行高效存儲、管理與檢索,本文設計了矢量空間數據的rowkey,並將數據存儲於HBase。實驗結果顯示,對中國地圖的矢量空間數據在24 201 991條記錄的Hbase表上檢索指定空間矢量點的響應時間為毫秒級(0.021 s)。檢索線或面的響應時間為秒級,若返回一個面上的千級別的座標點時間約為3.551 s。

針對智慧城市建設中的數據管理問題,利用HBase分佈式數據庫的列存儲模型特點,設計了一種基於HBase的GIS數據管理系統,實現了對矢量空間數據與柵格數據的高效存儲、索引與檢索。GIS矢量空間數據在HBase中存儲,首先確定rowkey的設計,使得在檢索空間位置時返回儘可能少的數據請求,即在檢索時既考慮經度與緯度,又考慮空間數據類型和圖層屬性。設計了基於表名、空間數據類型、經緯度Geohash編碼、網格ID的rowkey方法。為了加快切片效率和減少存儲成本,本文在生成柵格數據時在mapnik切片的基礎上做了優化,使柵格數據不經過磁盤寫操作,直接寫入HBase。

參考文獻

《基於HBase的海量GIS數據分佈式處理實踐》


分享到:


相關文章: