Hash DynamoDB:散列键是如何使用的?

Hash DynamoDB:散列键是如何使用的?,hash,amazon-dynamodb,Hash,Amazon Dynamodb,我最近正在研究Amazon提供的新NoSQL服务,更具体地说是DynamoDB Amazon说您应该避免使用分布不均匀的密钥作为主键,即主键应该越独特越好。我能认为每个项目都有唯一的主键是最好的情况吗?有一些钥匙重复的物品怎么样 我想知道底层机制是如何工作的,这样我就知道它有多糟糕。表是基于哈希键在多台机器上进行分区的,所以它们越随机越好。在我的应用程序中,我使用company_id作为散列,然后使用唯一的id作为范围,这样我的表可以合理地均匀分布 他们试图避免的是,您对大多数数据使用相同的哈希

我最近正在研究Amazon提供的新NoSQL服务,更具体地说是DynamoDB

Amazon说您应该避免使用分布不均匀的密钥作为主键,即主键应该越独特越好。我能认为每个项目都有唯一的主键是最好的情况吗?有一些钥匙重复的物品怎么样


我想知道底层机制是如何工作的,这样我就知道它有多糟糕。

表是基于哈希键在多台机器上进行分区的,所以它们越随机越好。在我的应用程序中,我使用company_id作为散列,然后使用唯一的id作为范围,这样我的表可以合理地均匀分布


他们试图避免的是,您对大多数数据使用相同的哈希键,它们越随机,Dynamo就越容易让您的数据快速返回

表是基于哈希键跨多台机器进行分区的,因此它们越随机越好。在我的应用程序中,我使用company_id作为散列,然后使用唯一的id作为范围,这样我的表可以合理地均匀分布


他们试图避免的是,您对大多数数据使用相同的哈希键,它们越随机,Dynamo就越容易让您的数据快速返回

谢谢你的回复,但是如果我用一些单调递增的整数作为键,而不是完全随机的值呢?这非常有效。我通常使用随机生成的UUID,而不是递增计数,因为它更容易实现。哈希也可以用于将事物逻辑地组合在一起,以加快查询速度。感谢您的回复,但是如果我使用一些单调递增的整数作为键,而不是完全随机的值,该怎么办?这非常有效。我通常使用随机生成的UUID,而不是递增计数,这仅仅是因为它更容易实现。哈希还可以用于将事物逻辑地组合在一起,以加快查询速度。