AWS DynamoDB 扫描 returns 项数组 - 如何通过主键请求键值字典?
AWS DynamoDB scan returns Item array - how to request Key-Value dictionary by primary key?
为了避免在获取数据时出现延迟,我想在 javascript 应用程序启动时 download/cache 我的整个 DynamoDB(10MB,120'000 个条目,每个条目 3 个值)所以一些数据可以在更新数据被请求时立即显示并在不久之后显示(以防条目在缓存时间之后更新)。
对于初始下载,该应用程序向我的 lambda 函数发出了一个 httprequest,该函数又调用
await dynamo.scan({ TableName: tableName })
.
此 return 的响应如下所示:
{"Items":[{"key":"personA","address":"ABC"},{"key":"personB","address":"XYZ"}],"Count":2,"ScannedCount":2}
在我的应用程序中,我想显示特定人的地址。由于 return 类型是一个数组,恐怕我必须遍历每个条目并检查 entry['key']='personA'
。我更愿意做类似 Items['personA']
的事情,因为我已将 key
设置为 DynamoDB 的主键。
我可以使用其他操作来接收由数据的 key
列索引的字典吗?
所以基本上我的目标是获得
{"Items":{"personA":{"address":"ABC"}},{"personB":{"address":"XYZ"}},"Count":2,"ScannedCount":2}
(以 key
的值作为实际键而不是相当不方便的数组的字典)
以防万一我的用例听起来很危险 - 该应用程序不适用于零售客户,无论如何都不应该访问此数据的任何人都无法使用它。
Is there another operation that I can make use of in order to receive a dictionary indexed by the key
column of the data?
不,DynamoDB 目前没有这样的 API,您可以选择将数据转换为您描述的格式。
所以基本上你有以下两个选择:
使用扫描响应并自行构建 index/dictionary。
- 优点:你可以复用这个索引来查找其他人
- 缺点:建立初始索引可能会很慢,因为它需要完整的列表遍历
通过提供主键使用 GetItem
检索数据。
- 优点:您可以快速只获取您想要的数据
- 缺点:您必须为每个人发出一个 HTTP 请求。尽管 HTTP connection can be kept live and reused.
这可能开销太大
为了避免在获取数据时出现延迟,我想在 javascript 应用程序启动时 download/cache 我的整个 DynamoDB(10MB,120'000 个条目,每个条目 3 个值)所以一些数据可以在更新数据被请求时立即显示并在不久之后显示(以防条目在缓存时间之后更新)。
对于初始下载,该应用程序向我的 lambda 函数发出了一个 httprequest,该函数又调用
await dynamo.scan({ TableName: tableName })
.
此 return 的响应如下所示:
{"Items":[{"key":"personA","address":"ABC"},{"key":"personB","address":"XYZ"}],"Count":2,"ScannedCount":2}
在我的应用程序中,我想显示特定人的地址。由于 return 类型是一个数组,恐怕我必须遍历每个条目并检查 entry['key']='personA'
。我更愿意做类似 Items['personA']
的事情,因为我已将 key
设置为 DynamoDB 的主键。
我可以使用其他操作来接收由数据的 key
列索引的字典吗?
所以基本上我的目标是获得
{"Items":{"personA":{"address":"ABC"}},{"personB":{"address":"XYZ"}},"Count":2,"ScannedCount":2}
(以 key
的值作为实际键而不是相当不方便的数组的字典)
以防万一我的用例听起来很危险 - 该应用程序不适用于零售客户,无论如何都不应该访问此数据的任何人都无法使用它。
Is there another operation that I can make use of in order to receive a dictionary indexed by the
key
column of the data?
不,DynamoDB 目前没有这样的 API,您可以选择将数据转换为您描述的格式。
所以基本上你有以下两个选择:
使用扫描响应并自行构建 index/dictionary。
- 优点:你可以复用这个索引来查找其他人
- 缺点:建立初始索引可能会很慢,因为它需要完整的列表遍历
通过提供主键使用
GetItem
检索数据。- 优点:您可以快速只获取您想要的数据
- 缺点:您必须为每个人发出一个 HTTP 请求。尽管 HTTP connection can be kept live and reused. 这可能开销太大