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

DynamoDB:如果其哈希范围架构,如何从主键中找到唯一的哈希键?

宋子辰
2023-03-14

我有一张dynamodb桌子。

它有主分区键IdType(String)和主排序键Id(String)

由于它是哈希范围模式,IdType不是唯一的,一个键可以多次使用。我需要找到所有唯一的ID类型。

我们如何找到它?一种可能的解决方案是使用扫描和处理所有客户端来获取所有IdType,并使用我们自己的代码找到唯一的。但扫描成本很高,每次扫描只能扫描1MB的数据,因此扫描是不可行的,因为表中的数据已经超过了1MB,并且将来会逐渐增加。

有没有其他方法可以做到这一点?任何帮助都将不胜感激。

PS:没有索引

共有1个答案

融建树
2023-03-14

简而言之,答案是否定的,要查询DynamoDB表,您首先需要的是哈希键,这样就消除了查询数据的所有选项,因为您必须有哈希键才能找到数据。

据我所知,DyanmoDB没有任何用于查找密钥唯一性的内置属性。

如果你想做到这一点,你可以通过

1)如您所提到的那样扫描表并在应用程序级别对其进行过滤。

2) 如果数据不经常更新,则可以将数据存储在缓存中并检索所需信息

3) 您可以使用另一个名为cloudSearch的AWS服务来实现所需的结果(需要支付更多费用)

如果你能用其他方法实现,请分享。

希望有帮助

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

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

  • 问题内容: 我有一个dynamodb表来存储电子邮件属性信息。我在电子邮件上有一个哈希键,在时间戳(数字)上有范围键。使用电子邮件作为哈希键的最初想法是按电子邮件查询所有电子邮件。但是我想做的一件事是检索所有电子邮件ID(在哈希键中)。我为此使用了boto,但不确定如何检索不同的电子邮件ID。 我当前提取10,000条电子邮件记录的代码是 但是要检索不同的记录,我将必须进行全表扫描,然后在代码中选

  • 我正在使用Node。js和DynamoDB JavaScript SDK开发。 我有一个表,它使用“ID”作为分区键(散列键),使用“time”作为排序键(范围键)。我想从多分区密钥中获取最新的N个数据。 我可以使用Query从分区键获取最新的N个数据。 但我不知道如何从多分区密钥中获取最新的N个数据。如果我想从10个分区键获取数据,我应该查询10次吗?

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

  • 我有DynamoDB的运动流。我正在通过aws KCL sdk v1.14.0进行处理。我看到下面日志中偶尔出现错误。我还注意到,对于dynamodb租约表中的所有碎片,startingHashKey始终为1,endingHashKey为0。有什么线索吗?