创建索引表
创建索引表
Ganos通过多个内置的空间索引机制对空间数据、时空数据进行索引,用户只需在前端输入时空数据,并指定要建立的索引即可,不用再关心HBase的KV如何设计与构建,使用较为方便。
因此,在数据写入之前,需要先定义好索引表结构。
索引类型
Ganos目前支持四类索引,适应于不同的查询查询场景。这些索引可以同时存在,也可以根据需求只创建某个索引(如业务场景中只有周边范围查询,那么就只需要创建Z2索引,而不用创建其他索引)。
ID索引(id):
适应于根据空间要素对象的FID查询场景,适应范围较少,几乎不用
Z2/XZ2索引(z2/xz2)
适应于空间查询,如地理围栏判断、周边范围查询等;其中Z2是用于「点」对象;XZ2用于「线」、「面」对象
Z3/XZ2索引(z3/xz3)
适应于时空查询,如某个空间范围以及时间段内的历史轨迹等;其中Z3是用于「点」对象;XZ3用于「线」、「面」对象
属性索引(attr)
适应于根据其他属性查询的场景
建立索引的步骤
1、定义空间/时空数据类型,即SimpleFeatureType
- 类型schema名称,可以认为是索引表的别名
- schema具体内容,包含了属性,空间对象(Geometry)以及时间等列的定义
- 其他自定义信息,包括:
如何创建指定的索引
如前所述,Ganos的索引可以同时存在,也可以根据需求只创建某个索引(如业务场景中只有周边范围查询,那么就只需要创建Z2索引,而不用创建其他索引)。默认情况下是建立所有的索引,这样对所有的查询场景来说都能提供较高的性能,但会占用较多的存储空间。为了节省空间存储,可以据查询场景选择合适的索引。
Ganos内置了特定的Hints,用来在定义SimpleFeatureType的时候指定对应的索引,语法如下:
//sft为SimpleFeatureType的一个实例对象
sft.getUserData().put("geomesa.indices.enabled", "{index_name}:{col1}:{col2}:...,{index_name}:{col}");
- index_name取下面常量之一:id,attr,z2,z3,xz2,xz3
- col为SimpleFeatureType中定义的列
- 可以创建多个index,每个index之间用「,」分割;
- 可以将多个列添加到同一个索引中,索引和每个列之间用「:」分割
下面这个示例中,一共创建了z3和attr两个索引,其中start列+dtg列为z3索引;end列+dtg列为z3索引;name列和dtg列为attr索引。
sft.getUserData().put("geomesa.indices.enabled", "z3:start:dtg,z3:end:dtg,attr:name:dtg");
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论