DynamoDB的Local Secondary Indexes(LSI)是否可以是稀疏索引?
关于DynamoDB Local Secondary Indexes(LSI)是否支持稀疏特性的解答
LSI完全支持稀疏索引特性,底层逻辑和GSI的稀疏特性是一致的。
核心逻辑说明
- 稀疏索引的本质是:只有基表中的数据条目包含索引定义的全部键属性时,才会被写入到索引中,缺少对应属性的条目不会出现在索引里。
- 对于LSI来说,它的分区键固定和基表的分区键完全相同,仅排序键是自定义的,因此只要基表条目包含LSI的排序键属性,就会被纳入LSI,否则就会被排除,自动形成稀疏索引。
实际使用示例
假设你的基表主键定义为user_id(分区键) + create_time(排序键),你基于这张表创建了一个LSI,指定排序键为paid_amount。那么所有没有paid_amount属性的未支付订单条目,都不会被写入到这个LSI中,索引仅会包含有支付金额的订单数据,体积远小于全量基表,查询效率和成本都会更优。
注意:和GSI的稀疏规则唯一的差异是,GSI如果是复合主键(自定义分区键+自定义排序键),需要基表条目同时包含GSI的分区键和排序键才会被纳入索引;而LSI不需要额外判断分区键属性,只要包含自定义排序键即可。
内容的提问来源于stack exchange,提问作者user1016765
相关产品推荐
相关产品推荐

