繁体   English   中英

查询 dynamoDB 以获取每个哈希键的最新条目

[英]query dynamoDB for the latest entry of every hash key

我有一个存储传感器事件的 dynamoDB 表。

  • 哈希键:传感器 ID

  • 范围键:时间戳

  • 传感器信息

我现在需要查询每个传感器的最新事件。

我能想到的唯一解决方案是查询每个传感器 ID 的最新事件。 但是如果有 2000 多个传感器,那将是很多查询。 我也不想扫描整个表以在之后对其进行排序,因为该表可以增长得非常快。

有任何想法吗?

您必须决定什么对您很重要,并设计您的表以匹配您的用例。

你说你想查询每个传感器的最后一个值,并且有 2000 多个传感器。 您将如何处理这 2000 多个值? 您多久需要这些值一次,这些值是否会稍微过时?

一种解决方案是拥有两个表:一个用于附加历史值(时间序列数据),另一个用于始终更新每个传感器的最新读数的表。 当您需要最新的传感器数据时,只需扫描第二张表即可获取所有传感器的最新值。 它与读取一样高效。 对于写入,这意味着您必须为每个传感器更新写入两次。

另一个可能的解决方案是编写按时间分区的时间序列数据,而不是传感器 ID。 假设所有传感器在每个时间点都更新,通过一次查询就可以获得所有传感器的值。 这有效,但前提是您每次都更新所有传感器的值,并且前提是您以规律的节奏进行。

但是,如果您一次更新所有传感器,则可以通过将多个传感器读数组合到一个项目中来进一步优化,因此需要更少的写入来更新所有 2000 个传感器。

由于您定义了range_key ,因此您可以使用获取最新项目

Query(hash_key=HASH_KEY, ScanIndexForward=True, Limit=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM