我希望有人能帮我理解如何最好地为DynamoDb设计表格 . 我正在构建一个应用程序,用于跟踪某个用户对其他用户的 Profiles 的访问 .
目前我有一个MongoDB,其中一个条目包含以下字段:
-
userId
-
visitedProfileId
-
日期
-
状态
-
是移动
如何以一种不会太慢的方式转换为DynamoDB?我需要进行搜索查询以选择具有特定userId的所有项目,并将状态和isMobile视为有效 . 我的钥匙是什么?我是否可以使用限制功能仅请求最新的x条目(按日期排序?) .
我非常喜欢DynamoDB的使用方式,但在常规NoSQL数据库和键值nosql数据库之间进行点击似乎有点复杂 .
1 回答
有几种方法可以做到这一点 - 它可能取决于您可能想要在此表上执行的任何其他查询 .
HashKey
为userId
,然后RangeKey
可以为<status>:<isMobile>:<date>
(例如active:true:2013-03-25T04:05:06.789Z
) . 然后你可以在RangeKeyCondition
中使用BEGINS_WITH
(并且ScanIndexForward
设置为false
以升序返回) .所以,假设你想找到最近的20行用户ID
1234abcd
,status
为active
,isMobile
为true
('m guessing that'是你的意思"taking [them] into affect"),那么你的query看起来像:HashKey
<userId>:<status>:<isMobile>
,RangeKey
就是date
. 在这种情况下,您不需要RangeKeyCondition
(在示例中,HashKeyValue
将是{ "S": "1234abcd:active:true" }
) .