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

Use the same DynamoDB attribute as both HASH and RANGE key

我有一个由单个数字键索引的 DynamoDB。我希望能够检索具有特定键值的项目,并通过查询和请求反向排序顺序中的单个项目来找到其最大值。当我尝试在同一个键上定义下面摘录中的 2 个索引时,出现错误 'Two keys can not have the same name'.

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

您可以仅使用散列键而不是范围键来定义您的键模式

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

要请求使用特定 'logs' 值的项目,请使用 GetItem

要找到最高值,您需要执行 Scan。这不是找到最高值的好方法,因为这意味着要评估 table 中的每个项目。这会很慢而且很昂贵。

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

  • 生成长 UUID
  • 执行 GetItem 验证 UUID 是否可用。这在 DynamoDB
  • 非常 便宜且快速
  • 使用 UUID