在 DynamoDB table 中获取哈希键列表的扫描操作?
Scan operation for getting a list of hash keys in DynamoDB table?
我想知道我是否必须使用 dynamodb "Scan" 操作来获取 dynamodb table 中所有哈希键值的列表,或者是否有另一种 "less-expensive" 方法要做到这一点。我尝试过 "Query" 操作,但在我的案例中没有成功,因为我必须定义 table 散列键才能使用此操作。我只想获取 table 中所有哈希键值的列表。
是的,您需要使用 scan
方法来访问 table 中的每个项目。您可以通过将 attributes_to_get
属性设置为仅您需要的内容 (*) 来减少返回给您的数据的大小——例如只是哈希键值。另外,请注意扫描操作最终是一致的,因此如果此数据库正在积极增长,您的结果集可能不包括添加到 table.
的最新项目
(*) 这将减少消耗的带宽量并减少应用程序端处理结果所需的资源,但它不会减少您需要支付的吞吐量。扫描操作根据整个项目的大小收费,而不仅仅是返回的属性。
不幸的是,要获得哈希键值列表,您必须执行扫描操作。你的用例是什么?通常,应用程序应跟踪散列键值,因为需要均匀分布的工作负载。因此,用于此目的的扫描操作不应经常发生。
编辑:请注意,如果您使用 attributes_to_get 或投影表达式过滤掉结果,这将有助于使结果更清晰,但不会减少您支付的吞吐量。扫描操作根据整个项目的大小收费,而不仅仅是返回的属性。
我想知道我是否必须使用 dynamodb "Scan" 操作来获取 dynamodb table 中所有哈希键值的列表,或者是否有另一种 "less-expensive" 方法要做到这一点。我尝试过 "Query" 操作,但在我的案例中没有成功,因为我必须定义 table 散列键才能使用此操作。我只想获取 table 中所有哈希键值的列表。
是的,您需要使用 scan
方法来访问 table 中的每个项目。您可以通过将 attributes_to_get
属性设置为仅您需要的内容 (*) 来减少返回给您的数据的大小——例如只是哈希键值。另外,请注意扫描操作最终是一致的,因此如果此数据库正在积极增长,您的结果集可能不包括添加到 table.
(*) 这将减少消耗的带宽量并减少应用程序端处理结果所需的资源,但它不会减少您需要支付的吞吐量。扫描操作根据整个项目的大小收费,而不仅仅是返回的属性。
不幸的是,要获得哈希键值列表,您必须执行扫描操作。你的用例是什么?通常,应用程序应跟踪散列键值,因为需要均匀分布的工作负载。因此,用于此目的的扫描操作不应经常发生。
编辑:请注意,如果您使用 attributes_to_get 或投影表达式过滤掉结果,这将有助于使结果更清晰,但不会减少您支付的吞吐量。扫描操作根据整个项目的大小收费,而不仅仅是返回的属性。