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

如何在不使用hashKey的情况下查询DynamoDB

经福
2023-03-14

我有一个具有两个属性的dynamoDB表:

A: 主分区键

B: 主排序键

我想使用属性B查询这个表,因为我不知道A的值。可以这样做吗?

是否可以将B设为GSI(全局二级索引),如何使用B查询表,因为B已经是排序键。

共有1个答案

荆鸿畅
2023-03-14

您需要分区键来进行查询-您不能单独使用排序键。您只能扫描。

因此,唯一的出路是创建一个以B作为分区键的GSI。

使现代化

是的,您可以使用范围键作为GSI。

使用GSI的缺点是:

  • 每个表最多只能有5个GSI,因此明智地选择您需要索引的内容,因为GSI只能在表创建期间指定,并且不能更改。
  • GSI将花费您额外的钱,因为您需要为其分配预配的吞吐量。
  • GSI最终是一致的,这意味着DynamoDB不保证当与表的哈希键关联的数据写入DB时,数据的GSI哈希键立即可用于查询。文档指出这通常是立即的,但GSI哈希键可能需要几秒钟才能变得可用。
 类似资料:
  • 我对Dynamo DB非常陌生,可能这是一个非常琐碎的问题,但我浏览了Dynamo DB和堆栈溢出问题的文档,但我找不到一个链接来告诉如何为GSI查询DDB,GSI只有哈希键,没有指定范围键。 我得到异常非法查询表达式:在查询中没有找到哈希键条件。

  • 我有一个对象,其中有的对象与映射。对象有一个方法来获取给定问题的评论。 我想通过一次获取有限数量的评论来分页。 如果我写了一个对象,那么我就可以通过和。但我的问题是,如果可能的话,如何在不必编写

  • 问题内容: 如果我要使用DefaultServeMux(我将其指定为ListenAndServe的第二个参数来指定),那么我可以访问,您可以在Go Wiki的以下示例中看到该: 在当前代码中,我无法使用DefaultServeMux,即我将自定义处理程序传递给ListenAndServe 因此,我没有内置的代码。但是,我必须将一些授权代码修改为需要类似的授权代码。例如,如果我一直在使用Defaul

  • 问题内容: 我有和。 我的Linux Mint 12上有很多错误,我只是重新安装了它,所以我想再次从头开始安装所有内容。 这是我的错误之一。我在那里收到一个有趣的答案: 停止使用su和sudo运行virtualenv。 你需要以普通用户身份运行virtualenv。 你已经使用sudo创建了virtualenv,这就是为什么你会收到这些错误的原因。 那么如何不使用安装呢?我可以使用还是不使用?还是

  • 问题内容: 建立一个社交网络,我正在尝试获取实时通知。当前,站点使用setInterval每隔几秒钟发送一次AJAX请求。看起来像这样: 那很好,但是我非常担心创建服务器过载。我尝试了彗星技术,但由于某种原因,它发送的请求比上述代码多得多。还有其他更有用的技术来实时发布此数据吗? 编辑:为实现长轮询,我使用了以下内容(使用此处提到的示例:http : //techoctave.com/c7/pos

  • 对于上面的查询,我得到了错误