使用相同的 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
我有一个由单个数字键索引的 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