DynamoDB:在写入事务中对全局二级索引进行条件检查
DynamoDB: Conditional check on Global Secondary Index in Write Transaction
我有一个 DynamoDB table 正在跟踪两个 ID:
- 第一个ID(A)作为table中记录的分区和排序键,在保存记录时随机生成。
- 第二个ID(B)不是随机生成的,而是在跟踪另一个系统中的实体。在 table 中应该只有一个具有唯一 B 的记录(如果这是 [=51=,那么实际上第二个 ID 字段将具有
UNIQUE
约束]).
此 table 有一个全局二级索引,分区键设置为 B,排序键设置为 A;作为对主 table.
中记录的反向查找
我想在主 table 中添加一条记录,但前提是 B 没有记录。具体来说,我想:
- 检查 GSI
中是否不存在 B
- 调用另一个系统做某事
- 放一条记录 B 和一条随机生成的 A
这是否可能使用 DynamoDB 事务写入?通过查看文档,这里有一个 ConditionCheck 操作可能很有用;但据我所知,似乎无法 运行 对 GSI 进行条件检查,还是我遗漏了什么?
您不能进行包含 GSI 的交易。我建议您遵循此博客 post 的设计,在基 table 中放置一个条目,以 B 作为主键以启用唯一性检查(也许然后使用它而不是 GSI):
我有一个 DynamoDB table 正在跟踪两个 ID:
- 第一个ID(A)作为table中记录的分区和排序键,在保存记录时随机生成。
- 第二个ID(B)不是随机生成的,而是在跟踪另一个系统中的实体。在 table 中应该只有一个具有唯一 B 的记录(如果这是 [=51=,那么实际上第二个 ID 字段将具有
UNIQUE
约束]).
此 table 有一个全局二级索引,分区键设置为 B,排序键设置为 A;作为对主 table.
中记录的反向查找我想在主 table 中添加一条记录,但前提是 B 没有记录。具体来说,我想:
- 检查 GSI 中是否不存在 B
- 调用另一个系统做某事
- 放一条记录 B 和一条随机生成的 A
这是否可能使用 DynamoDB 事务写入?通过查看文档,这里有一个 ConditionCheck 操作可能很有用;但据我所知,似乎无法 运行 对 GSI 进行条件检查,还是我遗漏了什么?
您不能进行包含 GSI 的交易。我建议您遵循此博客 post 的设计,在基 table 中放置一个条目,以 B 作为主键以启用唯一性检查(也许然后使用它而不是 GSI):