Nosql DynamoDB型号/钥匙建议
我希望有人能帮助我了解如何最好地为DynamoDb设计我的桌子。我正在构建一个应用程序,用于跟踪某个用户对另一个用户的个人资料的访问 目前我有一个MongoDB,其中一个条目包含以下字段:Nosql DynamoDB型号/钥匙建议,nosql,amazon-dynamodb,Nosql,Amazon Dynamodb,我希望有人能帮助我了解如何最好地为DynamoDb设计我的桌子。我正在构建一个应用程序,用于跟踪某个用户对另一个用户的个人资料的访问 目前我有一个MongoDB,其中一个条目包含以下字段: 用户ID visitedProfileId 日期 地位 伊斯莫比尔 如何将其转换为DynamoDB,而不会太慢?我需要进行搜索查询,以选择具有特定用户ID的所有项目,并将状态和isMobile生效。我的钥匙是什么?我是否可以使用限制功能仅请求最新的x条目(按日期排序?) 我非常喜欢DynamoDB的使用方
- 用户ID
- visitedProfileId
- 日期
- 地位
- 伊斯莫比尔
我非常喜欢DynamoDB的使用方式,但在常规NoSQL数据库和键值NoSQL数据库之间进行单击似乎有点复杂。有几种方法可以做到这一点,这可能取决于您可能希望在此表上执行的任何其他查询
HashKey
设置为userId
,然后RangeKey
可以是:
(例如活动:true:2013-03-25T04:05:06.789Z
)。然后,您可以在RangeKeyCondition
中使用以
开头(并且ScanIndexForward
设置为false
以升序返回)
假设你想找到最近的20行用户ID1234abcd
,它们的状态为active
,而isMobile
状态为true
(我猜这就是你所说的“使[它们]生效”)那么你的
{
"TableName": "Users",
"Limit": 20,
"HashKeyValue": { "S": "1234abcd" },
"RangeKeyCondition": {
"ComparisonOperator": "BEGINS_WITH"
"AttributeValueList": [{ "S": "active:true:" }],
},
"ScanIndexForward": false
}
哈希键设置为:
,而范围键将只是日期。在这种情况下,您不需要RangeKeyCondition
(在本例中,HashKeyValue
将是{S:“1234abcd:active:true”}
)
有两种方法可以做到这一点,这可能取决于您可能希望在此表上执行的任何其他查询
HashKey
设置为userId
,然后RangeKey
可以是:
(例如活动:true:2013-03-25T04:05:06.789Z
)。然后,您可以在RangeKeyCondition
中使用以
开头(并且ScanIndexForward
设置为false
以升序返回)
假设你想找到最近的20行用户ID1234abcd
,它们的状态为active
,而isMobile
状态为true
(我猜这就是你所说的“使[它们]生效”)那么你的
{
"TableName": "Users",
"Limit": 20,
"HashKeyValue": { "S": "1234abcd" },
"RangeKeyCondition": {
"ComparisonOperator": "BEGINS_WITH"
"AttributeValueList": [{ "S": "active:true:" }],
},
"ScanIndexForward": false
}
哈希键设置为:
,而范围键将只是日期。在这种情况下,您不需要RangeKeyCondition
(在本例中,HashKeyValue
将是{S:“1234abcd:active:true”}
)