DynamoDB检索大量数据子集的最佳实践

时间:2018-09-04 10:00:33

标签: amazon-dynamodb amazon-dynamodb-index

说我有一张桌子,上面有50,000个项目,每条记录的PK是一个唯一的数字。这些项目中有一半的“发布”属性设置为“ 1”,另一项设置为“ 0”。

大多数时候,我会使用哈希键来检索单个项目,但有时我希望能够获得发布= 1或0(理想的分页批处理)的所有项目。

我可以在“已发布”属性上拥有一个带有PK的GSI,但随后每个值将有25,000条记录,我知道这是不好的,因为PK应该比这更独特(请让我知道是否理解不正确)。

我可以为已发布/未发布的表提供单独的表格,但是在检索单个项目的常见用例中,我宁愿不必事先知道该项目是否已发布(亚马逊says也是如此设计的应用通常只有一张桌子。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:1)

DynamoDB不能用于批量更新或批量读取。它用于事务性读取或写入。如果您要处理批量更新,RDS将是交易数据的不错选择。

如果只想使用一组有限的数据,则可以在给定的时间读取一组数据,但是将不会一直要求您请求的数字。届时所有可用的内容都会与称为lastEvaluatedKey的标记一起提供给您。

另外,您可以使用发布作为范围键,将有助于分区读取,仍然读取大批读取/写入dynamodb将花费很长时间,而且架构也不佳。

希望有帮助。

答案 1 :(得分:1)

几件事:

  1. 25,000个分区中没有多少项。但是,如果您的表增长到数千万个项目,您将遇到问题

  2. 不要害怕扫描-如果您希望检索表中一半的项目,那么扫描确实非常有效!

  3. 如果您知道只有一小部分项目将被发布(或未发布),那么稀疏的GSI将会非常有效率-但是,如果分发的内容大约是一半,那么它就不会带来太多收益感觉:只需扫描桌子!