[英]How can I make a sparse index if the key is always required?
我对DynamoDB中的某些东西感到非常困惑:
对于表中的任何项目,DynamoDB仅在项目中存在索引排序键值的情况下才会写入相应的索引条目。 如果排序键未出现在每个表项中,则该索引被认为是稀疏的。
[...]
要跟踪未结订单,您可以在CustomerId(分区键)和IsOpen(排序键)上创建索引。 只有定义了IsOpen的表中的那些订单才会显示在索引中。
但是,如果您有一个用备用排序键定义的LSI,则在创建新项目时,该备用排序键永远不能为空。 因此,索引一点也不稀疏,因为我创建的每个项目都会出现在索引中。
我想念什么?
表的排序键不能为null。 您在LSI中使用的字段可以为空。
首要的关键
必须具有哈希键,并且可以选择具有排序键。 主键必须是唯一的。
全球二级指数
必须具有哈希键,并且可以选择具有排序键。 GSI独立于主键索引。
本地二级指数
用于为现有索引提供替代的排序键。 根据定义,现有索引必须已经具有唯一键,因此LSI不需要具有值,因此允许使用NULL值。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html
在DynamoDB表中,每个项目的组合分区键值和排序键值必须唯一。 但是,在本地二级索引中,对于给定的分区键值,排序键值不需要唯一。 如果本地二级索引中有多个具有相同排序键值的项目,则Query操作将返回所有具有相同分区键值的项目。 在响应中,不按任何特定顺序返回匹配项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.