WriteRecords - Amazon Timestream
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

WriteRecords

让您能够将时间序列数据写入 Timestream。您可以指定要插入系统的单个数据点或批量数据点。Timestream 提供灵活的架构,能够根据您在调用数据库写入操作时指定的数据点维度名称和数据类型,自动检测 Timestream 表的列名和数据类型。

Timestream 支持最终一致性读取语义。这意味着,如果您将批量数据写入 Timestream 后立即查询数据,查询结果可能不会反映最近完成的写入操作结果。结果可能还包含某些陈旧数据。如果您在短时间后重复查询请求,结果将返回最新的数据。适用服务配额

请参阅代码示例,了解详细信息。

更新插入

您可以在 WriteRecords 请求中使用 Version 参数,以更新数据点。Timestream 会跟踪每条记录的版本号。当请求中没有为记录指定版本号时,Version 默认为 1。当 Timestream 接收到针对某条记录具有更高 Version 号的写入请求时,会更新该记录的度量值及其 Version。当 Timestream 收到更新请求时,如果该请求的度量值与现有记录相同,只要该值大于 Version 的现有值,Timestream 仍会更新 Version。只要 Version 的值不断增加,即可根据需要多次更新数据点。

例如,假设您写入新记录,但没有在请求中注明 Version。Timestream 会存储此记录,并将 Version 设置为 1。现在,假设您尝试使用具有不同度量值的相同记录的 WriteRecords 请求更新此记录,但与之前一样,没有提供 Version。在此情况下,Timestream 将拒绝此更新,并显示 RejectedRecordsException,因为已更新记录的版本不大于“版本”的现有值。

然而,如果您重新发送更新请求时将 Version 设置为 2,Timestream 将成功更新该记录的值,并将 Version 设置为 2。接下来,假设您发送的 WriteRecords 请求具有相同的记录和相同的度量值,但将 Version 设置为 3。在此情况下,Timestream 仅会将 Version 更新为 3。任何进一步的更新都需要发送大于 3 的版本号,否则更新请求将收到 RejectedRecordsException

请求语法

{ "CommonAttributes": { "Dimensions": [ { "DimensionValueType": "string", "Name": "string", "Value": "string" } ], "MeasureName": "string", "MeasureValue": "string", "MeasureValues": [ { "Name": "string", "Type": "string", "Value": "string" } ], "MeasureValueType": "string", "Time": "string", "TimeUnit": "string", "Version": number }, "DatabaseName": "string", "Records": [ { "Dimensions": [ { "DimensionValueType": "string", "Name": "string", "Value": "string" } ], "MeasureName": "string", "MeasureValue": "string", "MeasureValues": [ { "Name": "string", "Type": "string", "Value": "string" } ], "MeasureValueType": "string", "Time": "string", "TimeUnit": "string", "Version": number } ], "TableName": "string" }

请求参数

有关所有操作的通用参数的信息,请参阅常用参数

请求接受采用 JSON 格式的以下数据。

CommonAttributes

一条记录,包含请求中所有记录共享的常用度量、维度、时间和版本属性。当数据写入 Timestream 时,指定的度量和维度属性将与记录对象中的度量和维度属性进行合并。维度不得重叠,否则将抛出 ValidationException。换言之,记录必须包含具有唯一名称的维度。

类型:Record 对象

必需:否

DatabaseName

Timestream 数据库的名称。

类型:字符串

长度约束:最小长度为 3。最大长度为 256。

必需:是

Records

记录的数组,包含每个时间序列数据点的唯一度量、维度、时间和版本属性。

类型:Record 对象数组

数组成员:最少 1 个项目。最多 100 个项目。

必需:是

TableName

Timestream 表的名称。

类型:字符串

长度约束:最小长度为 3。最大长度为 256。

必需:是

响应语法

{ "RecordsIngested": { "MagneticStore": number, "MemoryStore": number, "Total": number } }

响应元素

如果此操作成功,则该服务将会发送回 HTTP 200 响应。

服务以 JSON 格式返回以下数据。

RecordsIngested

有关此请求所摄取记录的信息。

类型:RecordsIngested 对象

错误

有关所有操作的常见错误的信息,请参阅常见错误

AccessDeniedException

您无权执行此操作。

HTTP 状态代码:400

InternalServerException

由于内部服务器错误,Timestream 无法完全处理此请求。

HTTP 状态代码:500

InvalidEndpointException

请求的端点无效。

HTTP 状态代码:400

RejectedRecordsException

在以下情况下,WriteRecords 将抛出此异常:

  • 包含重复数据的记录,即存在多个具有相同维度、时间戳和度量名称的记录,但:

    • 度量值不同

    • 请求中未包含版本信息,新记录的版本值等于或小于现有值

    在此情况下,如果 Timestream 拒绝数据,则 RejectedRecords 响应中的 ExistingVersion 字段将指示当前记录的版本。如需强制执行更新,您可以重新发送请求,并将该记录的版本设置为大于 ExistingVersion 的值。

  • 记录的时间戳超出内存存储的保留期限。

  • 维度或度量超过 Timestream 所定义限制的记录。

有关更多信息,请参阅《Amazon Timestream 开发人员指南》中的限额

RejectedRecords

HTTP 状态代码:400

ResourceNotFoundException

该操作试图访问不存在的资源。该资源可能未正确指定,或其状态可能不是“活动”状态。

HTTP 状态代码:400

ThrottlingException

用户发出的请求过多,已超出服务配额。请求已被阻止。

HTTP 状态代码:400

ValidationException

请求无效或格式错误。

HTTP 状态代码:400

另请参阅

有关在特定语言的 Amazon SDK 中使用此 API 的更多信息,请参阅以下内容: