根据文档,我了解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的两次写入:在旧键下进行删除,在新键下进行插入。这一切都是自动为你完成的。