使用与HASH和RANGE键相同的DynamoDB属性

时间:2019-03-14 12:19:14

标签: amazon-dynamodb amazon-dynamodb-index

我有一个由单个数字键索引的DynamoDB。我希望能够检索具有特定键值的项目,并通过按反向排序顺序查询和请求单个项目来找到其最大值。当我尝试按以下摘录中的相同键定义2个索引时,出现错误“两个键不能具有相同的名称”。

"KeySchema": [
  {
    "AttributeName": "logs",
    "KeyType": "HASH"
  },
  {
    "AttributeName": "logs",
    "KeyType": "RANGE"
  }
]

1 个答案:

答案 0 :(得分:0)

您可以仅使用哈希键而不使用范围键来定义键架构

"KeySchema": [
  {
    "AttributeName": "logs",
    "KeyType": "HASH"
  }
]

要使用特定的“日志”值请求商品,请使用GetItem

要找到最高值,您需要执行Scan。这将是找到最高价值的一种糟糕方法,因为这将意味着评估表中的每个项目。那会很慢而且很昂贵。

您可能想重新评估您的方法。如果您只是尝试创建唯一的ID,则这不是DynamoDB的正确方法。您应该做的是:

  • 生成一个长的UUID
  • 执行GetItem以验证UUID可用。在DynamoDB中,这非常便宜又快速
  • 使用UUID