假设我有一个包含以下属性的表:
user_id
(主哈希键)category_id
(GSI哈希索引)timestamp
我会有很多用户,但只有少数几个类别。
user_id | category_id
1 1
3 1
4 1
5 3
.. ..
50000000 1
是否可以存储与全球二级索引具有相同category_id
值的数百万条记录?我应该期待任何限制吗?
我想知道扫描是不是一个糟糕的选择。我每天只会使用category_id
过滤一次。扫描数百万条记录的成本(时间和金钱)是多少?
谢谢!
答案 0 :(得分:1)
根据Limits文档,唯一的限制是:
没有本地二级索引的表没有实际限制。
对于具有本地二级索引的表,项目集合大小存在限制:对于每个不同的哈希键值,所有表和索引项的总大小不能超过10 GB。根据您的项目大小,这可能会限制每个哈希值的范围键数。有关更多信息,请参阅项目集合大小限制。
现在,关于您是应该进行查询还是扫描的第二个问题,您要求从性能和货币成本两方面进行询问。维护GSI是昂贵的,因为你必须支付吞吐量(如果我还记得正确的存储),所以它就像支付另一张桌子,再加上另一张桌子,你必须监控其吞吐量,以确保你不是。受到扼杀另一方面,性能要好得多。
如果您计划每天检查一次所有类别(这意味着表中的每个文档),那么扫描就是您的选择。你并没有从查询中获得任何东西。加上它更便宜(没有额外的GSI),你不必担心预测。