Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查询dynamoDB以获取每个哈希键的最新条目_Python_Aws Lambda_Amazon Dynamodb_Dynamodb Queries - Fatal编程技术网

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

Python 查询dynamoDB以获取每个哈希键的最新条目,python,aws-lambda,amazon-dynamodb,dynamodb-queries,Python,Aws Lambda,Amazon Dynamodb,Dynamodb Queries,我有一个dynamoDB表,在那里我存储传感器事件 哈希键:传感器id 范围键:时间戳 传感器信息 我现在需要查询每个传感器的最新事件 我能想出的唯一解决方案是查询每个传感器id的最新事件。但是,对于2000多个传感器来说,这将是很多查询。 我也不想在以后扫描整个表来进行排序,因为表的增长速度可能非常快 有什么想法吗 由于定义了范围_键,因此可以使用 Query(hash_key=HASH_KEY, ScanIndexForward=True, Limit=1) 你必须决定什么对你来说是重

我有一个dynamoDB表,在那里我存储传感器事件

  • 哈希键:传感器id

  • 范围键:时间戳

  • 传感器信息

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

我能想出的唯一解决方案是查询每个传感器id的最新事件。但是,对于2000多个传感器来说,这将是很多查询。 我也不想在以后扫描整个表来进行排序,因为表的增长速度可能非常快


有什么想法吗

由于定义了
范围_键
,因此可以使用

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

你必须决定什么对你来说是重要的,并且设计你的表来匹配你的用例

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

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

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


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

我不需要经常使用这些查询。我想初始化显示数千个对象和传感器状态的可视化。所以我一次需要所有对象的当前状态。由于数据是异步传入的,所以我也无法查询时间段或时间范围。但我也考虑了两表版本,这就是我现在正在实现的。很高兴它成功了。我问你将如何使用2000+值的原因是,一次可视化2000个不同的传感器可能非常具有挑战性。如果其他人在k.wahome中难以找到答案,
limit
中的
L
必须是大写,因此
查询(hash\u key=hash\u key,ScanIndexForward=True,limit=1)
有效!OP表示,这是他们已经拥有的解决方案,但扩展性不好,因为这是每个哈希键的请求