DynamoDB GSI:更新索引属性,保留以前的索引条目

时间:2018-04-04 15:11:56

标签: java amazon-dynamodb

我有下表:

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

1 个答案:

答案 0 :(得分:1)

您可以将GSI视为基础DynamoDB表顶部的物化视图,GSI仅包含基表中存在的那些记录。

因此,如果您更新基表中的记录,则更新最终会传播到GSI,您只能在任何时间点拥有一条记录,无论是旧状态(更新传播之前)还是新状态(更新后传播,但不是两者。

您似乎需要跟踪更改的历史记录,这应该是一个单独的表格。