查询 - Amazon Timestream

有关与适用于 LiveAnalytics 的 Amazon Timestream 类似的功能,可以考虑使用适用于 InfluxDB 的 Amazon Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间,以实现实时分析。点击此处了解更多信息。

查询

借助适用于 LiveAnalytics 的 Timestream,您可以轻松存储和分析 DevOps 的指标、IoT 应用程序的传感器数据、用于设备维护的工业遥测数据以及许多其他使用案例的数据。适用于 LiveAnalytics 的 Timestream 中专门构建的自适应查询引擎,支持使用单个 SQL 语句跨存储层访问数据。该引擎可透明地跨存储层访问和整合数据,无需您指定数据位置。您可以使用 SQL 在适用于 LiveAnalytics 的 Timestream 中查询数据,以便从一个或多个表中检索时间序列数据。您可以访问数据库和表的元数据信息。适用于 LiveAnalytics 的 Timestream SQL 还支持用于时间序列分析的内置函数。有关更多详细信息,可参阅 查询语言参考 参考。

适用于 LiveAnalytics 的 Timestream 旨在实现完全解耦的数据摄取、存储和查询架构,其中每个组件均可独立于其他组件进行扩展(使其能够为应用程序需求提供几乎无限的扩展能力)。这意味着,当应用程序每天发送数百 TB 的数据,或运行数百万次查询处理大小不等的数据时,适用于 LiveAnalytics 的 Timestream 不会“崩溃”。随着数据随时间的推移而增长,适用于 LiveAnalytics 的 Timestream 的查询延迟基本保持不变。这是因为适用于 LiveAnalytics 的 Timestream 查询架构可利用大量的并行性以处理更庞大的数据量,并自动扩展以满足应用程序的查询吞吐量需求。

数据模型

Timestream 支持两种用于查询的数据模型:平面模型和时间序列模型。

注意

Timestream 中的数据使用平面模型进行存储,这是查询数据的默认模型。时间序列模型是一种查询时间概念,用于时间序列分析。

平面模型

平面模型是 Timestream 用于查询的默认数据模型。该模型以表列格式表示时间序列数据。维度名称、时间、度量名称及度量值以列的形式呈现。表中的每一行都是一个原子数据点,对应时间序列中特定时间的测量值。Timestream 数据库、表和列都存在一些命名限制。这些内容在 服务限制 中有所描述。

下表显示一个示例,说明当数据作为单度量记录发送时,Timestream 如何存储 EC2 实例的 CPU 利用率、内存利用率和网络活动数据。在本例中,维度包括区域、可用区、虚拟私有云以及 EC2 实例的实例 ID。度量包括 EC2 实例的 CPU 利用率、内存利用率以及传入的网络数据。region、az、vpc 和 instance_id 列均包含维度值。time 列包含每条记录的时间戳。measure_name 列包含由 cpu-utilization、memory_utilization 和 network_bytes_in 表示的度量名称。measure_value::double 列包含以双精度形式输出的测量值(例如 CPU 利用率和内存利用率)。measure_value::bigint 列包含以整数形式输出的测量值,例如传入的网络数据。

Time 区域 az vpc instance_id measure_name measure_value::double measure_value::bigint

2019-12-04 19:00:00.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

cpu_utilization

35.0

null

2019-12-04 19:00:01.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

cpu_utilization

38.2

null

2019-12-04 19:00:02.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

cpu_utilization

45.3

null

2019-12-04 19:00:00.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

memory_utilization

54.9

null

2019-12-04 19:00:01.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

memory_utilization

42.6

null

2019-12-04 19:00:02.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

memory_utilization

33.3

null

2019-12-04 19:00:00.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

network_bytes

34400

null

2019-12-04 19:00:01.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

network_bytes

1500

null

2019-12-04 19:00:02.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

network_bytes

6000

null

下表显示一个示例,说明当数据作为多度量记录发送时,Timestream 如何存储 EC2 实例的 CPU 利用率、内存利用率和网络活动数据。

Time 区域 az vpc instance_id measure_name cpu_utilization memory_utilization network_bytes

2019-12-04 19:00:00.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

指标

35.0

54.9

34400

2019-12-04 19:00:01.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

指标

38.2

42.6

1500

2019-12-04 19:00:02.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

指标

45.3

33.3

6,600

时间序列模型

时间序列模型是一种用于时间序列分析的查询时间构造。该模型将数据表示为有序的(时间、度量值)对序列。Timestream 支持插值等时间序列函数,以便填补数据中的缺失部分。要使用这些函数,必须使用 create_time_series 等函数将数据转换为时间序列模型。有关更多详细信息,请参阅 查询语言参考

以先前的 EC2 实例为例,以下是以时间序列形式呈现的 CPU 利用率数据。

区域 az vpc instance_id cpu_utilization

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

[{time: 2019-12-04 19:00:00.000000000, value: 35}, {time: 2019-12-04 19:00:01.000000000, value: 38.2}, {time: 2019-12-04 19:00:02.000000000, value: 45.3}]