代码之家  ›  专栏  ›  技术社区  ›  Moha the almighty camel

AWS Dynamo db,选择键

  •  0
  • Moha the almighty camel  · 技术社区  · 6 年前

    我使用dynamodb来存储客户发票,其中每个发票都有自己的唯一标识符 invoiceId .

    我的读取操作主要是获取某个客户的发票。

    如果我用 发票ID 作为分区键,同一客户机的发票可能会写入不同的分区。 这个假设正确吗?如果正确,我应该担心吗?

    2-另一个场景是使用客户机Id作为分配键(尽可能地将分区中同一客户机的发票分组),并使用invoiceId作为排序键。

    我来自一个关系数据库的背景,在一个组件是冗余的情况下使用复合主键似乎很奇怪。

    1 回复  |  直到 6 年前
        1
  •  1
  •   notionquest    6 年前

    第一点:假设是正确的

    第二点:这可能不是最好的方法,因为Dynamodb只允许对分区键进行查询操作。如果您不知道分区键,则需要扫描(昂贵的操作-不推荐)表或创建GSI。

    我的提议solution:-

    根据您的用例要求,按发票id获取数据,具有 Invoice id 分区键是最好的方法。

    发票id-分区密钥

    如果您有另一个用例来获取 client id

    客户端Id-分区密钥

    GSI

    在DynamoDB表中,每个键值必须是唯一的。然而,关键 全局次索引中的值不必是唯一的。

    您可以为您的用例分别查询主表和GSI。更多详情,请阅读GSI。

    另一个重要的一点,GSI会的 你。只有在有用例的情况下才创建GSI。