Amazon dynamodb DynamoDB扫描与查询相同数据

Amazon dynamodb DynamoDB扫描与查询相同数据,amazon-dynamodb,dynamodb-queries,Amazon Dynamodb,Dynamodb Queries,我有一个用例,我必须返回Dynamo DB中表的所有元素 假设我的表有一个分区键列X,它在所有行中都有相同的值,比如monitor和sort键列Y,并且元素不同 以下方法的执行时间是否会有任何差异,还是相同 扫描整张桌子。 基于具有监视器的分区密钥查询数据。 直接回答 据我所知,在您描述的特定情况下,扫描速度会稍微慢一些,尤其是在第一次响应时。这是在假设您不进行任何筛选时发生的,即FilterExpression为空 进一步思考 DynamoDB可能存储大量数据。我所说的“巨大”是指任何机器的内

我有一个用例,我必须返回Dynamo DB中表的所有元素

假设我的表有一个分区键列X,它在所有行中都有相同的值,比如monitor和sort键列Y,并且元素不同

以下方法的执行时间是否会有任何差异,还是相同

扫描整张桌子。 基于具有监视器的分区密钥查询数据。 直接回答 据我所知,在您描述的特定情况下,扫描速度会稍微慢一些,尤其是在第一次响应时。这是在假设您不进行任何筛选时发生的,即FilterExpression为空

进一步思考 DynamoDB可能存储大量数据。我所说的“巨大”是指任何机器的内存都装不下的东西。如果您需要“返回表中的所有元素”,您应该问问自己:如果该表增长到所有元素都不再适合内存,会发生什么?您现在不必处理这个问题,我相信到目前为止,这个表相当小,但是您需要记住返回到这个代码并修复它的可能性,以便它解决这个问题

如果我处在你的位置,我会问自己的问题:

我能不能对我需要阅读的内容设置一个限制, 仅读取前1000项

2该信息是如何在列表中列出的 使用的物品?是否将其发送回运行在内部的JS应用程序 将其显示给用户的浏览器?如果答案是肯定的,那怎么办 用户会处理大量的项目列表吗

3你能一次处理一个项目,还是一次处理10个或100个项目?如果答案是肯定的,那么您只需要在内存中存储一个或10个或100个项目,而不需要存储整个项目列表


一般来说,在DDB中,扫描操作如3所述:一次读取一个或多个项目,进行一些处理,然后转到下一个项目

你应该使用这个概念。基本上,您一次对表的不同部分执行多个扫描。但要注意更高的RCU使用率。

尽量避免使用扫描

Scan将从表中获取所有行,您还必须使用分页来迭代所有行。它更像是从表中选择*;sql操作

如果要基于分区键获取所有行,请使用query。如果您知道要为哪个分区键获取结果,那么应该使用query,因为它只会使用索引来获取具有特定分区键的行