gpt4 book ai didi

amazon-dynamodb - DynamoDB 跨主索引和全局二级索引的键唯一性

转载 作者:行者123 更新时间:2023-12-04 09:06:29 54 4
gpt4 key购买 nike

我正在创建一个 DynamoDB 表来保存与单个对象关联的注释。

评论在特定时间发布到对象,我使用发布的时间作为范围,因此评论可以按时间降序排序。我有发布评论的用户的 userId 的全局二级索引,这应该允许我获得给定用户发布的所有评论。

我的问题是,这个键是唯一的吗?我担心由于两个用户在技术上可以同时向同一个 objectId 发表评论,因此评论哈希和范围键将相同。

我的希望是,由于同一个用户不可能同时对同一个对象发表两条评论,因此全局二级索引将使键唯一。

 Comment table:

Hash Key Range Key Global Secondary Index Hash
---------------------------------------------------------------------------------------
| objectId | datePosted | userId |
| (not unique) | (not unique if multiple users | (unique across objectId and |
| | post for the same object @ same time) | datePosted) |
---------------------------------------------------------------------------------------

最佳答案

DynamoDB 索引与唯一性无关。 Globallocal允许索引具有重复的哈希键和范围键对。只有表本身的哈希键和范围键是唯一的。

在您的示例中,两个不同的用户可能在同一时刻对一个对象发表评论,并产生重复的 objectId、datePosted 键。有几种方法可以解决这个问题。您可以在主键为空的条件下使用 PutItem 请求,如 API reference 中所述。 .这将导致第二条评论保存失败,您可以向用户报告错误或简单地使用更新的时间戳重试。如果没有条件,第二条评论将覆盖第一条评论。或者,您可以将表的范围键设为 datePosted 与 userId 连接的复合值。这样,范围键将始终是唯一的,但仍会按日期时间顺序排序。这是 DynamoDB 的常见做法。

关于amazon-dynamodb - DynamoDB 跨主索引和全局二级索引的键唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25350256/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com