当前位置: 首页 > 知识库问答 >
问题:

什么是哈希和范围主键?

曹恩
2023-03-14

共有1个答案

阎裕
2023-03-14

“哈希和范围主键”意味着DynamoDB中的单行具有由哈希和范围键组成的唯一主键。例如,如果哈希键为X,范围键为Y,则主键实际上是XY。对于同一个散列键,也可以有多个范围键,但是组合必须是唯一的,比如XZ和XA。让我们对每种类型的表使用它们的示例:

哈希主键-主键由一个属性组成,一个哈希属性。例如,ProductCatalog表可以将ProductID作为其主键。DynamoDB在此主键属性上构建无序的哈希索引。

这意味着该值的每一行都被键入。DynamoDB中的每一行都将为该属性提供一个必需的惟一值。无序的哈希索引意味着所说的--数据没有排序,并且您不能保证数据是如何存储的。您将无法对无序索引进行查询,如ProductID大于X的Get me所有行。例如,从表中获取具有ProductID X的行。您正在对一个无序索引进行查询,因此对它的查询基本上是键值查找,速度非常快,使用的吞吐量非常小。

哈希和范围主键-主键由两个属性组成。第一个属性是hash属性,第二个属性是range属性。例如,论坛线程表可以将ForumName和Subject作为其主键,其中ForumName是哈希属性,Subject是range属性。DynamoDB在hash属性上构建一个无序的hash索引,在range属性上构建一个排序的range索引。

这意味着每行的主键都是哈希键和范围键的组合。如果同时具有hash和range键,则可以对单行进行直接获取,或者可以对排序的range索引进行查询。例如,get get me表中所有带散列键X且范围键大于Y的行,或其他受此影响的查询。与针对未索引字段的扫描和查询相比,它们具有更好的性能和更少的容量使用。从他们的文档中:

查询结果始终按范围键排序。如果range键的数据类型为Number,则按数字顺序返回结果;否则,将按ASCII字符代码值的顺序返回结果。默认情况下,排序顺序是升序。若要反转顺序,请将ScanIndexForward参数设置为false

 类似资料:
  • 从原理到应用分析什么是哈希? 一、什么是哈希? 哈希(hash):将任意长度的输入(关键字),通过Hash算法变成固定长度的输出。这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值,通常哈希值代表了关键字的存储位置。 但是为什么要这样做呢?或者说,哈希是怎样来的呢? 哈希的出现解决了两个问题:存储和搜索。 1. 存储(数据结构):如果在容器中保存对象及其关联的键,并且不用键

  • 我必须经常在那里做两件事:1。给定一个category#域,获取所有匹配项。2.给定grouptype#groupname,获取所有匹配项。 这两种操作都相当频繁,所以我不想使用扫描。在DynamoDB中有没有一种有效的方法可以做到这一点?是否有更好的方法来设计模式(更多的表、辅助索引等)?任何建议都是有帮助的。有人建议使用全局辅助索引,但我的问题是,我能否将主表的范围键作为GSI的哈希键?我知道

  • 是否可以使用哈希和 我想在查询中比较三个属性。两个是主哈希键和范围键,第三个是本地二级索引的范围键。

  • 我有一张dynamodb桌子。 它有主分区键IdType(String)和主排序键Id(String) 由于它是哈希范围模式,IdType不是唯一的,一个键可以多次使用。我需要找到所有唯一的ID类型。 我们如何找到它?一种可能的解决方案是使用扫描和处理所有客户端来获取所有IdType,并使用我们自己的代码找到唯一的。但扫描成本很高,每次扫描只能扫描1MB的数据,因此扫描是不可行的,因为表中的数据已

  • 下面是我的用例:我有一个带有哈希+范围键的Dynamo表。当我将新项放入表中时,我希望进行唯一性检查。有时我想保证哈希是唯一的(忽略范围)。其他时候,我希望允许重复的哈希值,但要保证哈希值和范围的组合是唯一的。我怎样才能做到这一点? 我试验了attribute_not_exists。它似乎可以处理第二种情况,即检查哈希+组合键。下面是一个PHP示例: 知道如何处理我只想检查唯一性的情况吗?

  • 问题内容: 我试图了解在多个JavaConfig上下文中放置注释的正确位置在哪里? 考虑以下情形:我在JPAConfig.java和AppConfig.java中具有服务bean集的JPA配置。然后,在RootConfig.java中编写整个应用程序配置。 我在JPAConfig.java中定义事务管理器,并启用对JPA存储库的扫描- 当这些暴露事务行为时,我将其放到JPAConfig上,并且它可

  • 我刚开始编码。我想对同一个变量使用两次switch语句,我被告知要这样做,变量必须是'inscope'。 作为一个初学者,我不知道那是什么意思。那么在范围内意味着什么呢?而且,如果一个变量不在作用域中,我如何使它在作用域中?

  • 主要内容:哈希表的构建,哈希函数的构造,处理冲突的方法,总结前面介绍了静态 查找表以及动态查找表中的一些查找方法,其查找的过程都无法避免同查找表中的数据进行比较,查找算法的效率很大程度取决于同表中数据的查找次数。 而本节所介绍的 哈希表可以通过关键字直接找到数据的存储位置,不需要进行任何的比较,其查找的效率相较于前面所介绍的查找算法是更高的。 哈希表的构建 在初中的数学课本中学习过函数的相关知识,给定一个 x,通过一个数学公式,只需要将 x 的值带入公式就