我有一个表,其中有一个"userId"列(设置为分区键)和"createdAt"列(设置为排序键),以便它们形成复合主键。
我还需要找到准确的行,以防我没有可用的用户ID,所以我创建了另一个列" ID "并使其成为全球二级索引。
在我的例子中,我是否应该使用"id"列主键,并删除&;userid &;作为分区键,或者这将删除什么"Partitioning"DynamoDB做了什么?
同样,如果我需要从表中删除一行,我是否应该发送"createdAt"字段的前端能找出确切的行吗?这有道理吗?发送"id"对我来说,能够删除行似乎更好。您可能不希望在用户主键中放置时间戳。为什么?您需要知道用户创建的确切时间才能获取用户,这可能不是您想要的。
考虑使用USER#<user_id>
的分区键和可预测的排序键,如A
或METADATA
或USER#<user_id>
。这允许您通过用户ID获取/删除用户。
如果你有按照创建帐号的顺序获取用户的访问模式,你可以创建一个GSI,将排序键设置为createdAt
属性。