Question:
具有作为复合散列范围键的主键的DynamoDB表是唯一的 . 这是否也扩展到二级指数?
Example:
我有一个注释DynamoDB表与 post_id 主键和 comment_id 范围键 . 此外,还有一个带有 date-user_id 范围键的本地二级索引 .
每个条目都是用户在帖子上留下的评论 . 二级索引的目的是计算在特定日期有多少唯一身份用户对帖子发表评论 .
Entry 1 :post_id:1 comment_id:1 date-user_id:2014_06_24-1
Entry 2 :post_id:1 comment_id:2 date-user_id:2014_06_24-1
Entry 3 :post_id:1 comment_id:3 date-user_id:2014_06_24-2
当我执行指定二级索引的查询,并传入post_id等于1且date-user_id等于2014_06_24-1的条件时,我得到的计数为2,我期望计数为1 .
为什么二级索引有两个具有相同主键/范围键的条目 .
2 回答
本地二级索引(LSI)中的每个项目与表中的相应项目具有1:1的关系 . 在上面的示例中,虽然LSI中的条目1和条目2具有相同的范围键值,但它们指向的表中的项目是不同的 . 因此,索引键(散列或散列范围)不是唯一的 .
全球二级指数(GSI)在这方面与LSI类似 . 每个GSI项都包含表哈希和范围键(对应项) . 更多详情请访问http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Projections
二级索引不保证唯一性 . 来自文档:
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html