具有唯一非复合键的排序表的最有效设置

时间:2016-12-15 13:08:14

标签: amazon-web-services amazon-dynamodb

让我们说我有一张表,其中每个项目都应该有一个唯一的非复合键" id",一些数据和一个" date"属性。阅读此表时,我总是希望返回按" date"订购的商品。这个简单场景的最佳方法是什么?

1 即可。使用(" id"," date")作为项主键。    *亲:不需要任何二级索引。    * Con:" id"并不保证是唯一的

2 即可。使用" id"单独作为主键并在(" id"," date")上创建二级索引    *专业:" id"保证是独一无二的    * Con:需要额外的索引。

另外,如果使用方法2并且从不直接从表中读取,我可以为表格提供零读取容量单位吗?

1 个答案:

答案 0 :(得分:0)

你的问题中有一些令人困惑的陈述。

您声称“id”是唯一的,但组合(“id”,“date”)不是。怎么会这样?

然后,在第一部分中说你想要按日期排序的顺序“读表”(你的意思是返回表中的所有项目吗?!)。然后在最后你问你是否可以在表格中提供0个读取单位。答案是你不能提供0,但是你可以提供1可忽略不计的$ -wise

如果您确实需要能够按日期订购表格中的所有项目,而不是选项:

  1. 您可以使用包含所有项目的分区键创建GSI,并使用“date”作为范围键,但在这种情况下,您确实需要质疑DynamoDB的使用
  2. 您可以在内存中阅读整个表并订购
  3. 您可以设置层次结构,将一些粗略的日期组件作为分​​区键,将完整的“日期”作为排序键,并通过可能执行多个查询来检索数据来构成结果
相关问题