DynamoDB GSI表复制:分区键与主表相同时的情况
DynamoDB GSI与LSI:数据复制逻辑及成本对比
场景2的GSI复制逻辑
不管GSI的分区键是否和主表一致,GSI本质都是独立的后台索引表——和场景1的复制逻辑完全一样:DynamoDB会把主表中符合GSI投影规则的数据(默认是全量属性)完整复制到GSI的独立存储中,相当于后台自动维护了另一张结构不同的同步表。
改用LSI的收益(减少复制+降成本)
完全可行,而且确实能达到你想要的效果,核心原因在于GSI和LSI的底层设计差异:
- LSI是主表的附属索引,和主表共享同一存储分区,不会创建独立的复制表。它只是在主表写入/更新数据时,同步维护额外的排序键索引,不需要复制完整的数据行(仅需维护排序键与主表主键的关联,以及你指定投影的属性——默认是全属性,但存储上和主表共享,不会额外占用独立存储空间)。
- 成本差异明显:LSI的存储成本包含在主表中,不需要单独付费;而GSI不管分区键是否和主表一致,每一条数据都是独立存储的,会产生额外的存储成本,同时GSI的读写请求也会单独计费。
不过要注意LSI的硬性限制:每个主表最多只能创建5个LSI,且LSI必须和主表使用相同的分区键(只能自定义排序键)。如果你的业务需求能满足这些限制,改用LSI绝对是更经济的选择。
内容的提问来源于stack exchange,提问作者Naeem
相关产品推荐
相关产品推荐

