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
索引函數生成的時空編碼可能相同。
類型 | 參數說明 | 適用場景 |
|
| 為點數據創建索引,當查詢條件包含空間范圍時,可使用該索引進行加速。 |
|
| 為點數據和時間創建索引,當查詢條件包含時間范圍和空間范圍時,可使用該索引進行加速。 |
|
| 為線或者面數據創建索引,當查詢條件包含空間范圍時,可使用該索引進行加速。 |
|
| 為線數據和時間、面數據和時間創建索引,當查詢條件包含時間范圍和空間范圍時,可使用該索引進行加速。 |
網格二級索引
僅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技術支持(釘釘號: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索引對線或面有更好的過濾效果。對于非聚合查詢,使用網格二索引可有效過濾掉與查詢條件不相關的網格內的數據,加速查詢,例如:
圍欄監測:實時查詢軌跡點落在哪些圍欄內,可達到百萬級圍欄數據毫秒級返回結果。
周邊查詢:實時查詢某位置周邊一定半徑范圍內的商區。
同時,網格索引可以隨時更新存儲統計數據,可基于網格進行快速聚合統計,例如:
統計數量:以網格為單位統計商區數量、軌跡數量等。
統計區域屬性:以網格為單位統計植被覆蓋率、交易量總和等指標。