繁体   English   中英

AWS Dynamo db,选择密钥

[英]AWS Dynamo db, choosing key

我正在使用dynamo db存储客户发票,其中每个发票都有自己的唯一标识符,称为invoiceId

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

1-如果我将invoiceId用作分区键,则同一客户端的发票可能会写入不同的分区。 这个假设是正确的吗?如果是,我应该担心吗?

2-另一种情况是使用客户端ID作为分配密钥(尽可能将分区中同一客户端的发票分组),并使用invoiceId作为排序关键字。 这是正确的方法还是有更好的方法来处理这种情况?

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

第一点:假设是正确的

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

我建议的解决方案:-

由于您的用例需要按发票ID获取数据,因此最好将Invoice id作为分区键。

发票编号-分区键

如果您还有另一个用例来获取client id所有发票,则可以使用以下命令创建GSI(全局二级索引):

客户端ID-分区密钥
发票编号-排序键

GSI

重要的提示:-

在DynamoDB表中,每个键值必须唯一。 但是,全局二级索引中的键值不必唯一。

您可以针对您的用例分别查询主表和GSI。 有关更多详细信息,请阅读有关GSI的信息。

另一个重要的一点,GSI将花费您。 仅在有用例的情况下创建GSI。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM