【问题标题】:Most efficient setup for sorted table with unique non-composite keys具有唯一非复合键的排序表的最有效设置
【发布时间】:2017-04-02 01:00:50
【问题描述】:

假设我有一个表,其中每个项目都应该有一个唯一的非复合键“id”、一些数据和一个“日期”属性。阅读此表时,我总是想退回按“日期”排序的物品。这种简单场景的最佳方法是什么?

1。使用 ("id", "date") 作为项目主键。 * Pro:不需要任何二级索引。 * 缺点:“id”不保证是唯一的

2。单独使用“id”作为主键,并在(“id”,“date”)上创建二级索引 * Pro:“id”保证是唯一的 * 缺点:需要一个额外的索引。

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

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb


    【解决方案1】:

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

    您声称 "id" 是唯一的,但组合 ("id","date") 不是。怎么可能?

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

    如果您确实需要能够按日期订购表中的所有项,那么您必须选择:

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

    【讨论】:

      猜你喜欢
      • 2021-01-01
      • 2016-04-06
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2012-04-28
      • 1970-01-01
      相关资源
      最近更新 更多