首页 > 解决方案 > 扫描大型 DynamoDB 表 - 1.5TB 大小,包含 100 亿条记录

问题描述

背景

我需要扫描一个相当大的 DynamoDB 表,并且正在寻找优化扫描速度的方法。我试过运行一个简单的扫描查询,即使运行了一天,扫描也没有完成。该表1.5TB的大小与10 Billion记录有关,平均记录大小为0.15KB

细节

PrimaryKey: "{userId}:{barcode}"
SortKey: "{epochTimeInMillis}"

在我们的用例中,我们只能访问 ,userId我们必须扫描表以查找 userId 在PrimaryKey.

问题

关于加快 ScanTime 的请求我可以尝试什么的任何想法?现在,我设置了 30K 读取容量单位,但在扫描运行时,我只看到大约 1500 个 RCU 被使用,所以我认为这不是问题。

最好的,

标签: databaseamazon-web-servicesamazon-dynamodb

解决方案


我不知道有什么方法可以加快 DDB Scan() ..(编辑duh ...来自 F_SO_K 的答案使用并行扫描)

虽然我不认为 100 亿行需要超过一天的时间。(编辑是的,实际上需要一天半的时间来分批读取 1.5TB,每批 1MB 85ms 响应时间)

如果这是您预计不止一次做的事情,我会设置一个 GSI,将其userId作为散列键,并将其他东西作为排序键。也许barcode:epochTimeInMillis

老实说,我会考虑userId作为我表的哈希键......用户真的有多个条形码吗?或者条形码不是用户独有的?

编辑
我可以理解不想为您不经常需要的 GSI 付费……但在存储方面,1.5TB 仅为 375 美元/月左右(美国东部)。而你假设整个记录都被复制了。您希望 WCU 与表匹配,但 RCU 可能是 1 或 2,如果需要,只需在您实际需要使用它的日子将其提高。


推荐阅读