我第一次涉足DynamoDB(使用boto3),我不知道如何定义我的分区键。我已经习惯了SQL,你可以使用AUTO_INCREMENT来确保密钥总是会增加。
我没有在DynamoDB中看到过这样的选项 - 相反,当使用put_item时,“主键属性是必需的” - 我认为这意味着我必须明确地定义值(事实上,如果我把它关掉,我得到botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the PutItem operation: One or more parameter values were invalid: Missing the key id in the item
)
如果已经有id为1,2,3,... N的行,我自然希望我插入的下一行有主键N + 1。但我不知道如何生成 - 给出here的解决方案都是不完美的。
我是否应该独立生成主键值,可能是通过散列项目的其他值?如果我这样做,是否有(小)哈希碰撞的机会?然后,由于DynamoDB似乎确定partition based on a hash of the Partition Key,我有什么理由不简单地使用随机足够长的字符串吗?
答案 0 :(得分:3)
DynamoDb不支持生成的密钥,您必须自己指定。您无法可靠地生成顺序ID。
一种常见的方法是使用UUID。