0

我希望有人可以帮助我了解如何最好地为 DynamoDb 设计我的表。我正在构建一个应用程序,用于跟踪某个用户对另一个用户个人资料的访问。

目前我有一个 MongoDB,其中一个条目包含以下字段:

  • 用户身份
  • 访问过的个人资料 ID
  • 日期
  • 地位
  • isMobile

这将如何以不会太慢的方式转化为 DynamoDB?我需要进行搜索查询以选择具有特定 userId 的所有项目,以影响状态和 isMobile。我的钥匙是什么?我可以使用限制功能仅请求最新的 x 条目(按日期排序吗?)。

我真的很喜欢 DynamoDB 的使用方式,但在常规 NoSQL 数据库和键值 nosql 数据库之间进行点击似乎有点复杂。

4

1 回答 1

3

有几种方法可以做到这一点 - 它可能取决于您可能想要在此表上执行的任何其他查询。

  1. 将您HashKey的表设为userId,然后将其RangeKey设为<status>:<isMobile>:<date>(例如active:true:2013-03-25T04:05:06.789Z)。然后您可以使用in 进行查询(并设置为以升序返回)。BEGINS_WITHRangeKeyConditionScanIndexForwardfalse

    因此,假设您想查找最近 20 行1234abcd具有statusofactive和 anisMobile的用户 ID true(我猜这就是您所说的“使 [它们] 生效”),那么您的查询将如下所示:

    {
      "TableName": "Users",
      "Limit": 20,
      "HashKeyValue": { "S": "1234abcd" },
      "RangeKeyCondition": {
        "ComparisonOperator": "BEGINS_WITH"
        "AttributeValueList": [{ "S": "active:true:" }],
      },
      "ScanIndexForward": false
    }
    
  2. 另一种方法是制作HashKey <userId>:<status>:<isMobile>,而RangeKey将只是date。在这种情况下,您不需要 a RangeKeyCondition(在示例中,HashKeyValue将是{ "S": "1234abcd:active:true" })。

于 2013-02-25T00:28:47.587 回答