如何修改DynamoDB GSI属性?能否不重建添加投影字段?
能否不删除重建DynamoDB GSI就添加投影字段?
很遗憾,目前AWS DynamoDB并不支持直接修改现有GSI的投影字段——不管是通过控制台还是update-table CLI命令,都没有这个操作选项。
这是因为GSI的投影配置属于其核心结构的一部分,在创建GSI时就已经固定下来了。DynamoDB的GSI是独立的索引表,投影字段决定了索引表中存储哪些主表数据,一旦创建完成,就无法动态修改这个配置,必须通过删除旧GSI再重建的方式来更新投影字段。
替代方案(最小化业务影响)
如果你想避免直接删除旧GSI导致的查询中断,可以按以下步骤操作:
- 创建一个新的GSI,包含原有的投影字段加上你需要新增的字段
- 等待新GSI的状态变为
ACTIVE(DynamoDB会自动同步主表数据到新索引) - 将你的应用代码切换为使用这个新GSI进行查询
- 确认新GSI运行稳定、查询正常后,再删除旧的GSI
这样做的好处是,在新GSI同步期间,旧GSI依然可以正常提供查询服务,不会导致业务中断。需要注意的是,创建新GSI会占用一定的读写容量资源,如果你主表数据量很大,同步时间可能会比较久,建议在业务低峰期操作。
内容的提问来源于stack exchange,提问作者soup_boy
相关产品推荐
相关产品推荐

