我们可以更新DynamoDB GSI分区密钥吗



根据文档,我了解PrimaryKey PK&无法在主表上更新SortKey SK。然而,这对于GlobalSecondaryIndex(GSI(来说并不清楚,更新GSI SK似乎是可以的(如果我错了,请纠正我(。

假设我有下面的账户表,其中我们有下面的PK(ID(+SK(createdAt(

id     createdAt     email          username
21     20220101      abc@xyz.com    blah1
22     20220102      123@xyz.com    blah2
...

如果我想通过电子邮件进行索引,我可以创建一个GSI,其中电子邮件是PK,createdAt是SK。

我们如何处理允许用户更改电子邮件或用户名的情况?

  • 这本质上是另一个分区中的一个新PrimaryKey,因此是GSI表中的一行吗
  • 这是否意味着旧的争论可能会在GSI中过时?如果是这样的话,如果我们不能在GSI直接删除,DynamoDB会清理旧条目吗

GSI不直接接受写入,但您可以通过编辑基表中的项来更新GSI项的键。

注意;写入放大";因为对基表的一次写入会导致对GSI的两次写入:在旧键下进行删除,在新键下进行插入。这一切都是自动为你完成的。

最新更新