【问题标题】:dynamoDB unique key-value in map which is not a partition key地图中的 dynamoDB 唯一键值不是分区键
【发布时间】:2021-12-23 07:41:55
【问题描述】:

您好,我是 Dynamo DB 的新手。我有一个场景,movies_watched 应该是独特电影的地图。有没有办法实现这一点,而不是每次添加新电影时都阅读和检查地图?

我正在使用带有 dynamoDB 的节点

{
   "user_id":1, // partition key
   "dob":"1991-09-12", // sort key 
   "movies_watched":{
      "1":{
         "movie_name":"twilight",
         "movie_released_year":"1990",
         "movie_genre":"action"
      },
      "2":{
         "movie_name":"harry potter",
         "movie_released_year":"1996",
         "movie_genre":"action"
      },
      "3":{
         "movie_name":"lalaland",
         "movie_released_year":"1998",
         "movie_genre":"action"
      },
      "4":{
         "movie_name":"serendipity",
         "movie_released_year":"1999",
         "movie_genre":"action"
      }
   }
}

【问题讨论】:

    标签: database-design amazon-dynamodb schema dynamodb-queries


    【解决方案1】:

    DynamoDB 不允许您对复杂属性执行该类型的操作。您需要在应用程序代码中强制执行这种逻辑。但是,有一个替代方案可能适用于您的用例。

    您似乎正在为用户和他们看过的电影之间的一对多关系建模。要以让 DynamoDB 为您处理唯一性的方式执行此操作,请考虑将电影存储在用户分区而不是属性中。

    例如,您的 User 实体的主键为 PK=user_id 和 SK=dob。您可以使用 PK=user_id 和 SK=movie_name 制作电影实体。这样做可以确保电影在用户分区中是唯一的。

    【讨论】:

      猜你喜欢
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多