【发布时间】:2022-10-24 16:27:57
【问题描述】:
我想从 DynamoDB 表中存储和检索数据。
我的数据(一个项目=用户对应用程序功能的评论)具有以下属性:
user string
feature string
appVersion string
timestamp string
rate int
description string
该应用程序的多个版本上有多个功能,用户可以对这些功能进行多次评论。所以我想使用 (user, appVersion, feature, timestamp) 作为主键。
但似乎不可能在 DynamoDB 的主键中使用那么多属性。
我实现的第一个解决方案是将user 用作Partition Key,并将(appVersion、feature、timestamp)的哈希用作Sort Key(在一个名为reviewID 的新字段中)。
我的问题是,我想在不知道timestamp 值的情况下检索给定user、feature、appVersion 的项目(假设我想要具有最新timestamp 或列表的项目所有与 3 个字段匹配的项目)
在不知道timestamp 的情况下,我无法构建检索我的项目所必需的Sort Key。但是,如果我从Sort Key 中删除timestamp,我将无法存储具有相同的多个项目(user、appVersion、feature)。
处理这个用例的正确方法是什么?
我正在考虑使用(user、appVersion、feature)的哈希作为Partition Key,并将timestamp 作为Sort Key,这是一个正确的解决方案吗?
【问题讨论】:
标签: amazon-dynamodb primary-key