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

Amazon dynamodb dynamo db中唯一哈希键和范围键之间的比率,amazon-dynamodb,Amazon Dynamodb,如果我选择散列键和范围键,使唯一散列键的数量非常少(最大值:1000),而有更多的唯一范围键,这是否有问题 唯一散列键和范围键的数量之比是否会影响信息检索的性能 据我所知,这无关紧要。负荷分布取决于接入的“频率”,而不是“可能的组合”。如果您的访问是均匀分布在您正在使用的1000个密钥上的,那么就可以了-这意味着通过key1获取的概率应该与获取key10或key100的概率相似。在内部,我猜他们会把你的1000把钥匙分成3组,每个组“可能”由3台机器提供服务。您需要确保您的访问几乎是一致的,以便

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


唯一散列键和范围键的数量之比是否会影响信息检索的性能

据我所知,这无关紧要。负荷分布取决于接入的“频率”,而不是“可能的组合”。如果您的访问是均匀分布在您正在使用的1000个密钥上的,那么就可以了-这意味着通过key1获取的概率应该与获取key10或key100的概率相似。在内部,我猜他们会把你的1000把钥匙分成3组,每个组“可能”由3台机器提供服务。您需要确保您的访问几乎是一致的,以便所有3台计算机都能获得一致的负载共享。

对于每个if:

  • 哈希键的数目不是太少
  • 您的访问是随机分布在散列键上的
  • 您不需要扩展到极端级别
  • 根据报告:

    配置的吞吐量取决于主键选择,以及 单个项目的工作负载模式。在存储数据时,DynamoDB 将表的项划分为多个分区,并分发 数据主要基于散列键元素。粮食 与表相关联的吞吐量也在 分区,不共享跨 分区

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

    为了解释我的三个警告:

    一,。哈希键的数目不是太少
    您提到了最多1000个哈希键,但问题是最小值是多少。例如,如果只有10个散列键,那么您将很快达到每个键的吞吐量限制,并且实际上无法实现所提供的吞吐量

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

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


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

    据我所知,每个散列键的范围键都有效地存储在某种索引中,这种索引可以很好地扩展。但是,请记住,给定哈希键的所有行都存储在同一个节点上,因此可能会出现给定哈希键的数据过多的情况。各国:

    对于具有本地二级索引的表,项有一个限制 集合大小:对于每个不同的哈希键值,总大小 所有表和索引项的大小不能超过10 GB。取决于你的 项大小,这可能会限制每个哈希的范围键数 价值观


    如果您对回答感到满意,您能将此标记为正确答案吗?