我有下表:
public class Status {
@DynamoDBHashKey
private String requestId;
@DynamoDBIndexHashKey(globalSecondaryIndexName = TASK_ID_INDEX)
private String taskId;
}
(为简单起见省略了一些字段)
当我为requestId: A, taskId: 1
添加条目时,我可以在全局二级索引中看到相应的条目。当我将条目更新为requestId: A, taskId: 2
时,我仍然会在GSI中看到一个条目,taskId: 2
。
有没有办法在索引中保留两个条目,一个用于taskId: 1
,另一个用于taskId: 2
?
答案 0 :(得分:1)
您可以将GSI视为基础DynamoDB表顶部的物化视图,GSI仅包含基表中存在的那些记录。
因此,如果您更新基表中的记录,则更新最终会传播到GSI,您只能在任何时间点拥有一条记录,无论是旧状态(更新传播之前)还是新状态(更新后传播,但不是两者。
您似乎需要跟踪更改的历史记录,这应该是一个单独的表格。