Lindorm Ganos时空服务在Lindorm流引擎中实现了基于内存的RTree索引,即时空内存索引。时空内存索引能够在进行流表JOIN操作时显著提升针对时空数据的查询效率。在使用Lindorm流引擎处理计算任务时,您可以在连接器(Connector)中设置相关参数的值,选择是否构建时空内存索引。本文介绍时空内存索引的使用限制及使用方法。
使用限制
一张表仅支持构建一个时空内存索引,且参与索引构建的数据必须满足以下条件:
点坐标:经度在[-180°,180°]范围内,纬度在[-90°,90°]范围内。
面或线段:时空对象不能为空。
使用方法
您可以通过以下两种方式开启时空内存索引:
在Lindorm流引擎的宽表连接器中配置相关参数开启时空内存索引,语句如下:
CREATE TABLE lindorm_table ( c1 INT, c2 VARCHAR, c3 GEOMETRY, PRIMARY KEY (c1, c2) NOT ENFORCED ) WITH ( 'connector'='lindorm', 'seedServer'='ld-bp17pwu1541ia****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020', 'userName'='yourUser', 'password'='yourPassword', 'tableName'='yourTableName', 'namespace'='yourNamespace', 'geomHint'='c3:st_contains', 'geomIndex'='true', 'cacheTTLMs'='1800000' );
geomHint、geomIndex和cacheTTLMs为时空内存索引参数,其中
'geomIndex'='true'
表示构建索引。更多介绍,请参见配置流引擎的宽表连接器。通过SQL HINT动态指定时空宽表连接器的参数。
如果在宽表连接器中未设置时空内存索引参数,可以在创建查询任务时通过SQL HINT来动态添加配置。
假设已创建流表
carData
,包含车辆编码carID、车辆经度lng、车辆纬度lat三列。在地理围栏过滤查询时,启用时空内存索引的语句如下:SELECT A.carID, B.c1, B.c2 FROM carData AS A JOIN lindorm_table /*+ OPTIONS('geomHint'='c3:st_contains','geomIndex'='true','cacheTTLMs'='1800000') */ FOR SYSTEM_TIME AS A.proctime AS B ON B.c3=ST_MakePoint(A.lng, A.lat);
文档内容是否对您有帮助?