全部產品
Search
文件中心

Lindorm:時空索引介紹

更新時間:Jul 06, 2024

Lindorm Ganos時空服務擴充了Lindorm原有的主鍵索引二級索引能力來提高時空查詢速度。時空查詢是指查詢條件中包含空間列(經緯度座標或Geometry類型的列)或者空間和時間組合列(經緯度座標或Geometry類型的列+時間列)的查詢。本文介紹時空索引的概念、分類和使用情境。

Z-ORDER索引

在建立主鍵索引或二級索引時,通過加入Z-ORDER索引函數來為空白間列或者空間和時間組合列添加索引。Z-ORDER索引函數返回一個編碼值(稱為Z-ORDER編碼或時空編碼),該編碼值作為主鍵索引或二級索引的一部分。因此,時空索引並不是一個獨立的索引,而是內嵌到Lindorm主鍵索引或二級索引中來實現加速時空查詢的需求。

Z-ORDER函數索引分類

Z-ORDER主鍵索引

Z-ORDER編碼作為主鍵索引的組成部分,此時主鍵索引為Z-ORDER主鍵索引。例如:PRIMARY KEY(Z-ORDER(g))

Z-ORDER二級索引

Z-ORDER編碼作為二級索引的組成部分,此時二級索引為Z-ORDER二級索引。例如:Z-ORDER(g)

建立Z-ORDER索引的方法請參見建立時空索引

Z-ORDER函數說明

Lindorm Ganos根據Z-ORDER索引函數的入參自動計算出不同的時空編碼,Z-ORDER索引函數的類型和說明如下表。

說明

當兩個空間對象在位置上足夠相近時(厘米層級),Z-ORDER索引函數產生的時空編碼可能相同。

類型

參數說明

適用情境

Z-ORDER(Point)或者Z-ORDER(X, Y)

  • 點類型的列

  • 由經度x列和緯度y列組成

為點資料建立索引,當查詢條件包含空間範圍時,可使用該索引進行加速。

Z-ORDER(Point, Time)或者Z-ORDER(X, Y, Time)

  • 由點類型的列和時間列組成

  • 由經度x列、緯度y列和時間列組成

為點資料和時間建立索引,當查詢條件包含時間範圍和空間範圍時,可使用該索引進行加速。

Z-ORDER(LineString)或者Z-ORDER(Polygon)

  • 線類型的列

  • 面類型的列

為線或者面資料建立索引,當查詢條件包含空間範圍時,可使用該索引進行加速。

Z-ORDER(LineString, Time)或者Z-ORDER(Polygon, Time)

  • 由線類型的列和時間列組成

  • 由面類型的列和時間列組成

為線資料和時間、面資料和時間建立索引,當查詢條件包含時間範圍和空間範圍時,可使用該索引進行加速。

網格二級索引

重要

2.6.5以上版本的寬表引擎支援網格二級索引功能。

在建立索引時,如果對Geometry(目前支援POLYGON、MULTIPOLYGON、LINESTRING、MULTILINESTRING)列使用了S2索引函數,寬表引擎會自動構建網格二級索引。使用網格二級索引可以實現基於網格的過濾和計算功能。

網格二級索引根據Google S2演算法,將空間劃分成均勻大小的網格(S2Cell),每個網格對應一個唯一ID(S2CellID)。每個網格都會與一個面或多個面相交,這些相交資訊都會被記錄在索引中。

S2索引函數說明

文法

輸入幾何對象和精度,計算幾何對象覆蓋到的該精度下的網格,並返回網格ID(S2CellID)的集合。建立網格索引的方法請參見建立時空索引

Set<Long> S2(String geomColumnName, int level)

參數說明

參數

說明

geomColumnName

面類型(POLYGON或MULTIPOLYGON)或線類型(LINESTRING或MULTILINESTRING)列的列名,該列儲存的空間資料座標需為WGS84座標系座標。

重要

僅寬表引擎2.6.7.5及以上版本,支援線類型(LINESTRING或MULTILINESTRING)。如果您的寬表引擎無法通過控制台進行升級,請聯絡Lindorm支援人員(DingTalk號:s0s3eg3)。

level

S2網格精度,取值範圍為[1,30]。

索引選擇

Z-ORDER索引適用情境

Z-ORDER索引對空間點類型資料有較好的過濾效果,當查詢條件涉及到對空間點位置關係判斷時,您可以根據Z-ORDER函數的適用情境,選擇適合的函數建立索引。Z-ORDER函數的適用情境,請參見Z-ORDER函數說明

以下是使用Z-ORDER索引的最佳實務情境:

  • 時空範圍查詢:查詢過去某段時間內車輛在某個地區的行駛軌跡。

  • 周邊查詢:查詢某位置附近一定距離內的車輛,返斷行符號輛的即時位置。

  • 軌跡出入統計:統計出軌跡點出入某個地區的資訊,包括:駛入時間、駛出時間、停留時間長度、軌跡數量等。

同時,Z-ORDER索引對線或面類型資料也有一定的過濾效果,可以支援簡單的過濾查詢,例如:

  • 對線類型:查詢某位置附近一定距離內的道路,每條道路是一個LINESTRING或MULTILINESTRING。

  • 對面類型:查詢落在某個範圍內的商圈,每個商圈是一個POLYGON或MULTIPOLYGON。

網格二級索引適用情境

網格二級索引較Z-ORDER索引對線或面有更好的過濾效果。對於非彙總查詢,使用網格二索引可有效過濾掉與查詢條件不相關的網格內的資料,加速查詢,例如:

  • 圍欄監測:即時查詢軌跡點落在哪些圍欄內,可達到百萬級圍欄資料毫秒級返回結果。

  • 周邊查詢:即時查詢某位置周邊一定半徑範圍內的商區。

同時,網格索引可以隨時更新儲存統計資料,可基於網格進行快速彙總統計,例如:

  • 統計數量:以網格為單位統計商區數量、軌跡數量等。

  • 統計地區屬性:以網格為單位統計植被覆蓋率、交易量總和等指標。