15.6. 累积式索引配置

GeoMesa提供了各种可用于定制和优化给定安装的配置选项。Acumulo数据存储支持中介绍的大多数常规选项 索引配置

15.6.1. 属性指数

看见 属性索引 有关属性索引的概述。Acumulo数据存储使用存储较少数据的附加‘Join’格式扩展了普通属性索引。

15.6.1.1. 联接索引

连接索引在索引中存储数据的精简子集-仅存储要素ID、默认日期和默认几何图形。要回答大多数查询,需要对记录索引进行连接以检索完整的简单特性--因此称为连接索引。当返回许多结果时,针对记录表的连接速度很慢,通常应该避免,除非是小查询。

如果可以仅使用连接索引中的数据来回答查询,则GeoMesa将避免对记录表进行连接。通常,这意味着查询只返回默认日期、默认几何图形和要查询的属性的属性。此外,任何CQL筛选器也必须仅对这三个属性进行操作。

要启用联接索引,关键字 join 可以用来代替 true 属性中指定属性索引时 SimpleFeatureType

15.6.1.2. 完整的索引

完整的索引存储了完整的简单功能。这会占用最多的磁盘空间,但允许在不连接记录表的情况下回答任何查询。这是非累积数据存储的唯一选项。若要使用完整索引,关键字 fulltrue 属性中指定属性索引时可以使用 SimpleFeatureType

15.6.2. 功能到期

警告

在设置功能到期之前,应删除任何手动配置的老化迭代器,因为它们可能会因配置名称而无法正常运行。

GeoMesa Acumulo数据存储支持设置每个功能的生存时间。过期时间可以在 SimpleFeatureType 用户数据,使用密钥 geomesa.feature.expiry 。看见 设置架构选项 有关配置用户数据的详细信息,请参阅。可以在调用前设置过期时间 createSchema ,或者可以通过调用 updateSchema ,这可能会导致当前接收的功能过期。

过期可以基于摄取时间或功能属性。要根据摄取时间设置过期时间,请将生存时间指定为持续时间字符串,例如 24 hours180 days 。要根据功能属性设置过期时间,请在括号中指定属性和生存时间,例如 dtg(24 hours)event-time(30 days) (其中 dtgevent-timeDate -在模式中键入属性)。

警告

摄取时间过期要求在架构中禁用逻辑时间戳。看见 逻辑时间戳 ,见下文。

功能到期使用累加过滤器实现。看见 configure-age-off 以了解有关查看或修改现有筛选器的详细信息。

15.6.2.1. 统计数据

随着功能老化,汇总数据统计数据将过时,这可能会降低查询规划。对于可管理的数据集,建议定期重新分析统计数据,通过 stats-analyze 指挥部。如果数据集太大而无法实现,则可以通过以下方式完全禁用统计数据 geomesa.stats.generate

15.6.2.2. 强制删除记录

在进行压缩之前,GeoMesa老化迭代器不会完全删除记录。要强制真正删除磁盘上的数据,必须手动压缩一个表或区域。在压缩整个表时,您应该注意不要使系统不堪重负。为便于执行此操作,您可以使用GeoMesa Acumulo命令行 compact 指挥部。

15.6.3. 逻辑时间戳

默认情况下,GeoMesa索引表是使用Acumulo的逻辑时间创建的。这确保了对给定简单特性的更新将被正确排序,但是它模糊了底层数据行的实际插入时间。对于高级用例,可以使用标准系统时间而不是逻辑时间。要禁用逻辑时间,请在调用之前将以下用户数据提示添加到简单要素类型 createSchema

// append the hints to the end of the string, separated by a semi-colon
String spec = "name:String,dtg:Date,*geom:Point:srid=4326;geomesa.logical.time='false'";
SimpleFeatureType sft = SimpleFeatureTypes.createType("mySft", spec);

15.6.4. 升级现有索引

GeoMesa经常对索引格式进行更新,以提高查询和写入性能。但是,给定架构的索引格式在第一次创建时是固定的。更新GeoMesa版本将提供错误修复和新功能,但不会将现有数据更新为新的索引格式。

用于每个架构的索引的确切版本可以从 SimpleFeatureType 用户数据,或简单地检查由GeoMesa创建的索引表的名称。有关当前索引版本的说明,请参见下文。

使用GeoMesa命令行工具,您可以使用将索引添加或更新到较新版本 add-index 。例如,可以添加XZ3索引以使用非点几何图形替换要素类型的Z3索引。该命令将使用分布式作业填充新索引。对于大型数据集,您可以选择仅填充与CQL过滤器匹配的要素(例如,上个月),或者选择不填充任何数据。更新是无缝的,客户端可以在更新运行时继续查询和摄取。

看见 add-index 以获取有关命令行工具的更多详细信息。