gpt4 book ai didi

amazon-dynamodb - dynamo db 中唯一哈希键和范围键之间的比率

转载 作者:行者123 更新时间:2023-12-01 10:50:05 25 4
gpt4 key购买 nike

如果我选择我的散列键和范围键,使得唯一散列键的数量非常少(最大值:1000),而有更多的唯一范围键,会不会有问题?

唯一哈希和范围键的数量之间的比例是否影响信息检索的性能?

最佳答案

在以下情况下,如果每个哈希键具有多个范围键,那么具有很少的哈希键应该不是问题:

  • 哈希键的数量也不算少
  • 您的访问随机分布在哈希键
  • 您不需要扩展到极端水平

  • 根据 AWS Developer Guidelines for Working with Tables :

    Provisioned throughput is dependent on the primary key selection, and the workload patterns on individual items. When storing data, DynamoDB divides a table's items into multiple partitions, and distributes the data primarily based on the hash key element. The provisioned throughput associated with a table is also divided evenly among the partitions, with no sharing of provisioned throughput across partitions.



    本质上,每个哈希键都驻留在单个节点(即服务器)上。实际上,它被冗余存储以防止数据丢失,但在本次讨论中可以忽略这一点。当您提供吞吐量时,您是在间接确定散列键分布的节点数量。但是,无论您提供多少吞吐量,单个节点可以处理的单个哈希键都会受到限制。

    解释我的三个警告:

    1.hash key的数量不能太少
    您提到最多 1000 个哈希键,但关注的是最小值是多少。例如,如果只有 10 个哈希键,那么您将很快达到每个键的吞吐量限制,而实际上不会实现预配置的吞吐量。

    2. 您的访问权限随机分布在哈希键中
    如果存在少量“热”键,则您拥有多少个哈希键并不重要。也就是说,如果您经常只读取或写入散列键的一小部分,那么您将达到存储这些键的节点的吞吐量限制。

    3.你不需要扩展到极端水平
    即使假设您有 1000 个不同的散列键,并且您的访问是随机分布在它们之间,如果您需要扩展到极端级别,您最终将达到每个散列键都在一个单独节点上的点。也就是说,如果您提供足够的吞吐量以将每个散列键分配给一个单独的节点(即您有 1000 多个节点),那么任何超出该级别的吞吐量都将无法实现,因为您将达到每个节点对每个键的限制.

    范围键与散列键的比率应该对获取、扫描和查询性能几乎没有影响。

    我的理解是,每个散列键的范围键都有效地存储在某种可以很好扩展的索引中。但是,请记住,给定散列键的所有行都存储在同一个节点上,因此您可能会遇到给定散列键数据过多的情况。 AWS Limits in DynamoDB状态:

    For a table with local secondary indexes, there is a limit on item collection sizes: For every distinct hash key value, the total sizes of all table and index items cannot exceed 10 GB. Depending on your item sizes, this may constrain the number of range keys per hash value.

    关于amazon-dynamodb - dynamo db 中唯一哈希键和范围键之间的比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21378061/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com