DynamoDB中的非多样化全球二级索引

时间:2014-10-14 09:01:56

标签: amazon-dynamodb

假设我有一个包含以下属性的表:

  • UNIQUE user_id(主哈希键)
  • category_id(GSI哈希索引)
  • timestamp

我会有很多用户,但只有少数几个类别。

user_id  |  category_id
1           1
3           1
4           1
5           3
..          ..
50000000    1

是否可以存储与全球二级索引具有相同category_id值的数百万条记录?我应该期待任何限制吗?

我想知道扫描是不是一个糟糕的选择。我每天只会使用category_id过滤一次。扫描数百万条记录的成本(时间和金钱)是多少?

谢谢!

1 个答案:

答案 0 :(得分:1)

根据Limits文档,唯一的限制是:

  

没有本地二级索引的表没有实际限制。

     

对于具有本地二级索引的表,项目集合大小存在限制:对于每个不同的哈希键值,所有表和索引项的总大小不能超过10 GB。根据您的项目大小,这可能会限制每个哈希值的范围键数。有关更多信息,请参阅项目集合大小限制。

现在,关于您是应该进行查询还是扫描的第二个问题,您要求从性能和货币成本两方面进行询问。维护GSI是昂贵的,因为你必须支付吞吐量(如果我还记得正确的存储),所以它就像支付另一张桌子,再加上另一张桌子,你必须监控其吞吐量,以确保你不是。受到扼杀另一方面,性能要好得多。

如果您计划每天检查一次所有类别(这意味着表中的每个文档),那么扫描就是您的选择。你并没有从查询中获得任何东西。加上它更便宜(没有额外的GSI),你不必担心预测。