使用 Amazon Timestream 构建时序数据分析平台 - IoT 数据存储与查询优化
将 IoT 传感器数据导入 Timestream,通过基于 SQL 的实时聚合和计划查询进行时序分析。详解内存存储与磁性存储的自动分层实现成本优化。
Timestream 概述
Amazon Timestream 是一项全托管的时序数据库服务。它能够大量导入 IoT 传感器数据、应用程序指标、基础设施监控数据等带有时间戳的数据,并通过 SQL 进行分析。使用传统关系型数据库处理时序数据时,需要在分区和索引设计上下功夫,且随着数据量增长查询性能容易下降。Timestream 拥有针对时序数据优化的存储引擎,能够在每天导入数万亿条事件的同时,实现对最新数据的毫秒级查询响应。与 DynamoDB 等键值存储不同,Timestream 的优势在于可以直接用 SQL 编写时间范围聚合查询和时序函数(移动平均、插值、差分)。
数据模型与存储分层
Timestream 的数据模型由数据库、表和记录三个层级组成。每条记录由维度(设备 ID、区域等标识属性)、度量值(温度、湿度等测量值)和时间戳构成。存储采用内存存储和磁性存储的双层结构,可为每个表设置内存存储的保留期(1 小时至 8766 小时)。超过内存存储保留期的数据会自动迁移到磁性存储,无需在应用程序端进行数据迁移处理。查询会透明地搜索内存存储和磁性存储,无需关心数据的实际位置。内存存储约 0.036 美元/GB/小时,磁性存储约 0.03 美元/GB/月,两者存在巨大的成本差异,因此保留期的设计是成本优化的关键。
查询与时序函数
Timestream 提供在标准 SQL 基础上扩展了时序函数的专有查询语言。通过 CREATE_TIME_SERIES 函数将记录转换为时序对象,使用 INTERPOLATE_LINEAR(线性插值)和 INTERPOLATE_SPLINE(样条插值)补全缺失数据。还内置了移动平均、累计求和、差分、百分位数等聚合函数。计划查询是定期执行查询并将结果写入另一个表的功能。例如,可以将 1 分钟间隔的原始数据聚合为 1 小时平均值并保存到磁性存储,从而自动化预处理,大幅降低仪表板的查询成本。官方提供了与 Grafana 的集成插件,可在 Grafana 仪表板中实时可视化 Timestream 数据。 如果您想拓展 IoT 数据分析方面的知识,Amazon 上的相关书籍也可供参考。
Timestream 的定价
Timestream 的定价由写入、存储和查询三个要素构成。写入费用约为每 100 万条 0.50 美元。内存存储约 0.036 美元/GB/小时,磁性存储约 0.03 美元/GB/月。查询按扫描的数据量计费,约 0.01 美元/GB。通过对计划查询预聚合的数据执行仪表板查询,可以减少扫描量从而优化查询成本。建议将内存存储的保留期设置为所需的最小值,历史数据则以低成本保存在磁性存储中。
总结
Amazon Timestream 是专为时序数据设计的全托管数据库,兼顾 IoT 传感器数据和应用程序指标的大量导入与 SQL 分析。通过内存存储和磁性存储的自动分层优化成本,利用计划查询自动化预聚合。结合 Grafana 集成实现实时可视化,以及时序函数进行高级分析。