使用 Amazon Timestream 构建的时序数据分析平台 - IoT 数据的存储与查询优化
将 IoT 传感器数据摄取到 Timestream,通过基于 SQL 的实时聚合和计划查询进行时序分析。讲解借助内存存储与磁性存储的自动分层进行的成本优化。
Timestream 概述
Amazon Timestream 是一项完全托管的时序数据库服务。它可以大量摄取 IoT 传感器数据、应用程序指标、基础设施监控数据等带时间戳的数据,并使用 SQL 进行分析。在传统 RDB 中处理时序数据时,分区和索引设计需要下功夫,并且随着数据量的增加,查询性能容易下降。Timestream 拥有针对时序数据优化的存储引擎,AWS 称其每天可以存储和分析数万亿个时序数据点。与 DynamoDB 这样的键值存储不同,其优势在于可以直接用 SQL 编写指定时间范围的聚合查询和时序函数(移动平均、插值、差分)。此外,这种传统的 Timestream for LiveAnalytics 已于 2025 年 6 月 20 日停止接受新客户。对于新的时序工作负载,建议使用 Timestream for InfluxDB。
数据模型与存储分层
Timestream 的数据模型分为数据库、表、记录 3 个层级。每条记录由维度(设备 ID、区域等识别属性)、度量(温度、湿度等测量值)和时间戳组成。存储采用内存存储和磁性存储的两层结构,按表设置内存存储的保留期(1 小时到 8766 小时)。超过内存存储保留期的数据会自动移动到磁性存储,无需在应用程序端进行数据迁移处理。查询会透明地检索内存存储和磁性存储,因此无需关注数据所在的位置。内存存储每 GB 约 0.036 美元/小时,磁性存储每 GB 约 0.03 美元/月,成本差异大,因此保留期的设计是成本优化的关键(截至 2026 年 10 月)。
查询与时序函数
Timestream 提供在标准 SQL 基础上扩展了时序函数的独有查询语言。使用 CREATE_TIME_SERIES 函数可以将记录转换为时序对象。转换后,可以通过 INTERPOLATE_LINEAR(线性插值)、INTERPOLATE_SPLINE(样条插值)补全缺失数据。还内置提供移动平均、累计总和、差分、百分位数等聚合函数。计划查询是定期执行查询并将结果写入另一张表的功能。可以自动执行将 1 分钟间隔的原始数据聚合为 1 小时平均值并保存到磁性存储之类的预处理,会带来仪表板查询成本的降低。官方提供与 Grafana 集成的插件,可以在 Grafana 仪表板上实时可视化 Timestream 的数据。
Timestream 的费用
Timestream 的费用由写入、存储、查询 3 个要素组成。写入费用为每 100 万次 1 KiB 写入约 0.50 美元。内存存储每 GB 约 0.036 美元/小时,磁性存储每 GB 约 0.03 美元/月。查询根据所使用的计算容量(TCU)的时间计费,每 TCU 小时约 0.518 美元(截至 2026 年 10 月)。通过对使用计划查询预先聚合的数据执行仪表板查询,查询的处理量随之减少,并带来查询成本的降低。推荐采用这样的设计:将内存存储的保留期设置为必要的最小值,并在磁性存储中以低成本保留历史数据。
时序数据的特性与用例
时序数据是随时间连续记录的值,IoT 传感器的测量值、应用程序的指标、设备的运行日志等都属于此类。这些数据具有共同的特性:大量数据不间断地写入,数据越新被引用得越频繁,并且经常按时间范围进行聚合。Timestream 是为高效处理这类时序数据而设计的。它适合高速摄取海量数据点,并沿时间轴进行聚合和趋势分析的用途。在设备监控、需求预测、异常检测等分析随时间变化的数据的场景中发挥作用。
与其他数据库之间的选用
时序数据也可以存储在通用数据库中,但当数据量变得庞大时,会在写入性能、存储成本、时间范围查询效率等方面产生问题。专用的时序数据库针对这些问题进行了优化,高效处理大量写入,自动将旧数据移动到低价的层级,并具备时序特有的分析函数。如果以事务处理或复杂关联数据的管理为中心,选择通用数据库;如果以与时间相关的大量数据的积累和分析为中心,则选择时序数据库。像这样根据数据的性质选用数据库,会带来性能与成本的优化。
总结
Amazon Timestream 是专门针对时序数据的完全托管数据库,兼顾 IoT 传感器数据和应用程序指标的大量摄取与 SQL 分析。通过内存存储与磁性存储的自动分层优化成本,并通过计划查询自动执行预先聚合。将基于 Grafana 集成的实时可视化与基于时序函数的高级分析结合起来加以利用。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。