我最近正在研究亚马逊提供的新NoSQL服务,更具体地说是DynamoDB。
亚马逊说你应该避免使用分布不均匀的密钥作为主键,即主键应该越独特越好。我可以看到这是因为每个项目都有唯一的主键是最好的情况吗?如何让一些项目具有重复的密钥?
我想知道底层机制是如何工作的,所以我知道它有多糟糕。
答案 0 :(得分:4)
表基于散列键在多台机器上进行分区,因此越随机越好。在我的应用程序中,我使用company_id作为散列,然后使用该范围的唯一ID,这样我的表可以合理均匀地分布。
他们试图避免的是您为大多数数据使用相同的哈希键,它们越随机,Dynamo就越容易让您的数据快速恢复。