Nak*_*euh 0 primary-key amazon-dynamodb
我想从 DynamoDB 表存储和检索数据。
我的数据(项目=用户对应用程序功能的评论)具有以下属性:
user string
feature string
appVersion string
timestamp string
rate int
description string
Run Code Online (Sandbox Code Playgroud)
该应用程序的多个版本具有多种功能,并且用户可以对这些功能进行多次评论。所以我想使用 ( user, appVersion, feature, timestamp) 作为主键。
但似乎不可能在 DynamoDB 的主键中使用那么多属性。
我实现的第一个解决方案是使用useras a ,并将 ( , , )Partition Key的哈希值用作 a (在名为 的新字段中)。appVersionfeaturetimestampSort KeyreviewID
我的问题是,我想在不知道值的情况下检索给定user,的项目feature(假设我想要最新的项目,或与 3 个字段匹配的所有项目的列表)appVersiontimestamptimestamp
如果不知道timestamp,我就无法构建Sort Key检索我的物品所需的必要条件。timestamp但如果我从 中删除Sort Key,我将无法存储具有相同 ( user, appVersion, feature) 的多个项目。
处理这个用例的正确方法是什么?
我正在考虑使用 ( user,, ) 的哈希值作为 a ,并将 the作为 a ,这是一个正确的解决方案吗appVersion?featurePartition KeytimestampSort Key
将时间戳放在 SK 的末尾,然后在查询数据时使用 SK 上的 begin_with 。
PK SK
UserID appVersion#feature#timestamp
Run Code Online (Sandbox Code Playgroud)
这将允许您动态查询数据。例如,您希望所有用户为特定应用程序版本投票
SELECT * FROM Mytable WHERE PK= 'x' AND SK BEGINS_WITH('{VERSION ID}')
Run Code Online (Sandbox Code Playgroud)
这是使用查询命令完成的。
| 归档时间: |
|
| 查看次数: |
611 次 |
| 最近记录: |