选择时序 ID 的最佳做法
注意
时序见解服务将于 2024 年 7 月 7 日停用。 请考虑尽快将现有环境迁移到备用解决方案。 有关弃用和迁移的详细信息,请访问我们的文档。
本文总结了 Azure 时序见解第 2 代环境的时序 ID 的重要性,以及有关选择时序 ID 的最佳做法。
选择时间序列 ID
选择适当的时序 ID 至关重要。 选择时序 ID 与为数据库选择分区键相同。 它在创建时序见解第 2 代环境时是必需的。
重要
时序 ID 如下:
- 区分大小写的字符串属性:搜索、比较和更新以及分区都会用到字母和字符的大小写。
- 不可变属性:一旦创建,无法更改。
提示
如果事件源是 IoT 中心,则时序 ID 可能是 iothub-connection-device-id。如果计划使用 IoT 即插即用设备模型,或在不使用组件的情况下使用这些模型,则应在组合键中包含 dt-subject,以便以后需要时使用。
要遵守的主要最佳做法包括:
- 选择具有许多(例如,几百甚至几千个)非重复值的分区键。 在许多情况下,该键可能是 JSON 中的设备 ID、传感器 ID 或标记 ID。
- 在时序模型的叶节点级别,时序 ID 应是唯一的。
- 时序 ID 属性名称字符串的字符数限制为 128 个。 时序 ID 属性值的字符数限制为 1024 个。
- 如果时序 ID 的某个唯一属性值缺失,该值将被视为 null 值,并遵循相同的唯一性约束规则。
- 如果时序 ID 嵌套在复杂的 JSON 对象中,请确保在提供属性名称时遵循入口平展规则。 查看示例 B。
- 此外,最多可以选择三个键属性作为时序 ID。 这些属性的组合将是表示时序 ID 的组合键。
注意
三个键属性必须是字符串。 必须针对此组合键运行查询,而不能每次查询一个属性。
选择多个键属性
以下方案描述如何选择多个键属性作为时序 ID。
示例 1:具有唯一键的时序 ID
- 你有两个传统的资产群。 每个群有一个唯一键。
- 其中一个群以属性 deviceId 进行唯一标识。 另一个群的唯一属性为 objectId。 这两个群都不包含对方的唯一属性。 在此示例中,可选择两个键 deviceId 和 objectId 作为唯一键。
- 我们接受 null 值,且如果事件有效负载中缺少某个属性,则计为 null 值。 向两个事件源发送数据时,这种方法同样合适,其中每个事件源中的数据具有唯一的时序 ID。
示例 2:具有组合键的时序 ID
- 同一组资产中需要多个唯一的属性。
- 你是一家智能建筑制造商,希望在每个房间部署传感器。 对于每个房间,通常对 sensorId 使用相同的值。 例如,sensor1、sensor2 和 sensor3。
- 建筑物在属性 flrRm 中包含不同场地的重叠楼层号和房间号。 这些数字使用类似于 1a、2b 和 3a 的值。
- location 属性包含类似于 Redmond、Barcelona 和 Tokyo 的值。 若要实现唯一性,可将以下三个属性指定为时序 ID 键:sensorId、flrRm 和 location。
示例原始事件:
{
"sensorId": "sensor1",
"flrRm": "1a",
"location": "Redmond",
"temperature": 78
}
然后,可在 Azure 门户中输入组合键,如下所示:
注意
在 Azure 门户中,请不要在一个文本框中输入以逗号分隔的属性名称,否则,它将被视为单个包含逗号的属性名称。 请在每个属性名称自己的文本框中输入每个属性名称。
后续步骤
阅读 JSON 平展和转义规则以了解事件将如何存储。