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

在DynamoDB中查询(使用哈希和范围主键)而不提供哈希键

公羊浩气
2023-03-14

我必须经常在那里做两件事:1。给定一个category#域,获取所有匹配项。2.给定grouptype#groupname,获取所有匹配项。

这两种操作都相当频繁,所以我不想使用扫描。在DynamoDB中有没有一种有效的方法可以做到这一点?是否有更好的方法来设计模式(更多的表、辅助索引等)?任何建议都是有帮助的。有人建议使用全局辅助索引,但我的问题是,我能否将主表的范围键作为GSI的哈希键?我知道所有的“键”都是自动复制的,但只有当我可以将grouptype#groupname作为gsi中的哈希键以便能够对其进行查询时,这才会对我有所帮助。还有,有什么特殊的方法来处理来自DynamodbMapper的gsi吗?我需要创建一个新的POJO吗?

共有1个答案

楚鸿波
2023-03-14

在DynamoDB中有没有一种有效的方法可以做到这一点?

听起来像是在寻找全局二级索引(GSI)。您的桌子有:

  • 哈希键:类别#域
  • 范围键:grouptype#groupname
  • 其他属性
  • 哈希键:grouptype#groupname
  • 范围键:取决于设计(在GSI中不是必需的)
  • 需要的其他属性

我将能够使我的主表的范围键作为我的GSI的哈希键吗?

是的,《开发人员指南》上的示例就是这样做的。

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

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

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

  • 问题内容: 有没有一种方法可以使用Amazon的Java AWS开发工具包中的单个查询来查询多个哈希键? 这是我的问题;我有一个用于项目状态的数据库表。哈希键是项目的状态(即:新建,已分配,正在处理或已完成)。范围键是一组项目ID。当前,我有一个查询设置,可以简单地找到所有列为“已分配”状态(哈希)的项目,而另一个查询集可以查找“处理中”状态。有没有一种方法可以使用单个查询而不是针对我需要找到的每

  • 问题内容: 我正在阅读Java 1.6 API提供的HashMap类的代码,无法完全理解以下操作的需要(位于put和get方法的主体中): 该方法具有以下主体: 通过对提供的哈希码执行位操作,可以有效地重新计算哈希。即使API声明如下,我也无法理解这样做的必要性: 这很关键,因为HashMap使用2的幂的哈希表,否则哈希表在低位无差异时会遇到冲突。 我确实知道键值参数存储在数据结构数组中,并且该数

  • HashMap将其数据保存在存储桶中,如下所示: 要在HashMap中放置一些东西,我们需要一个hash()函数,它返回从0到table.length()范围内的关键哈希,对吗? 假设我有: 这将返回以下内容: 字符串本机哈希代码:46882035,哈希映射哈希:46882360 我们应该有大约256个桶(所以关键的散列应该在0到256的范围内),但是HashMap中的内部散列给了我们468823