【问题标题】:Are Dynamodb UUID hashkeys better than sequentially generated onesDynamodb UUID 哈希键是否比顺序生成的更好
【发布时间】:2014-08-05 15:09:02
【问题描述】:

我想我理解没有热 hashKeys 的概念,以便您使用所有分区来配置吞吐量。但是 UUID hashKeys 在跨分区分布方面是否比按数字顺序排列的更好?在这两种情况下,是从键生成的哈希码和用于分配给分区的值吗?如果是这样,来自两个字符串(如:“100444”和“100445”)的哈希码有何不同?他们离得很近吗?

【问题讨论】:

    标签: amazon-dynamodb


    【解决方案1】:

    “100444”和“100445”不太可能在同一个分区中,而不是完全不同的数字,例如“12345”。将 DynamoDB 表想象成一个大哈希表,其中表的哈希键是进入哈希表的键。底层哈希表是由键的哈希组织的,而不是键本身。您会发现数字和字符串 (UUID) 在 DynamoDB 中的分布都很好,就它们在分区之间的分布而言。

    UUID 在 DynamoDB 中很有用,因为很难以可扩展的方式为主键生成序号。随机数适用于主键,但很难无间隙地生成顺序值,并且很难以可扩展到您可以在 DynamoDB 表中预置的吞吐量级别的方式生成。当您将新项目插入 DynamoDB 表时,您可以使用 conditional writes 确保不存在具有该主键值的项目。

    (注意:这个问题也在this AWS Forums post 中交叉发布并在那里进行了讨论)。

    【讨论】:

    • 是的,很抱歉。我试图发布你的答案,但它不会让我 8 小时。
    • 完全没有问题,将问题发布到多个地方和所有内容很常见 - 我只是在堆栈溢出中处理未解决的问题并遇到了这个问题。
    • 感谢您澄清这一点,大卫!仅供参考,David 是 AWS DynamoDB 团队的成员,并在 AWS re:Invent 2014 (youtube.com/watch?v=tDqLwzQEOmM) 上介绍了该团队
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2019-03-19
    • 2013-01-31
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    相关资源
    最近更新 更多