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

在aws dynamoDb中,如果同时具有分区键和辅助键(GSI),数据如何在表中进行分区

姜弘化
2023-03-14

我是AWS的新手,在阅读DynamoDB文档时,我知道我们可以在同一个表上使用GSI和分区键。

DynamoDB如何根据到键(分区和辅助)将数据保持在同一表中。

谢谢

共有2个答案

柴飞扬
2023-03-14

主表至少由一个分区键和一个可选的sortkey组成。添加GSI时,它实际上是主表的复制,使用GSI作为新的分区键。

更新主表时,更改会传播到GSI。写入父表和写入的数据出现在索引中之间总是有很短的传播延迟。换句话说,您的应用程序应该考虑到全局辅助索引副本最终只会与父表一致。

党佐
2023-03-14

DynamoDB实际上将数据更改复制到GSI,事实上AWS建议GSI的写容量等于或高于基表的写容量。

为了避免潜在的限制,为全局次索引配置的写入容量应等于或大于基表的写入容量,因为新更新同时写入基表和全局次索引

GSI可以存储在与基表完全不同的基础设施上。

全局二级索引存储在远离基表的自己的分区空间中,并与基表分开缩放。

 类似资料:
  • 我试图查询具有分区键和排序键的表(但是分区键和排序键是1:1,我只想使用分区键[仅返回一项]进行查询)。 这是我尝试过的代码,但没有成功(testId是分区键名,1234567890是字符串形式的分区键值);你们都知道我可以只使用分区键进行查询的方法吗?记住,由于分区键和排序键是1:1,所以只会返回一个项?提前非常感谢您。[这是我的第一篇堆栈溢出帖子-很抱歉,如果我用词不当,我很乐意回答关于我的措

  • 说在AWS DynamoDB,我有一个表: 我的GSI会投影原始表的所有属性。 现在我想最终得到一组数据结构{“Alice”,“Bob”,“John”,“Michael”}。 我怎样才能做到这一点?似乎扫描操作本身不能选择唯一值,这意味着在我的情况下,扫描操作不能更快,对吗?然后,在我得到一个检索到的所有项目的列表之后,我需要对这个列表进行操作,以提取列的唯一值,这是唯一的方法吗? 所以我想我需要

  • 问题内容: 我遇到一种情况,我需要在ORM类层次结构中的对象上联接表,其中join列不是基类的主键。这是表格设计的示例: 这是映射(为简洁起见,省略了getter和setter方法 鉴于其连接列不是,我如何添加映射? 我尝试了以下方法: 这将失败,因为用于检索Bar对象的SQL试图从FOO表中获取BAR_ID值。我也尝试过将JoinTable注释替换为 这不会产生SQL错误,也不会检索任何数据,因

  • 问题内容: 我有本身具有外键的表。列 parentid 是外键, 不能 为NULL。 如果我这样做,那么它说不能将NULL插入 父母的父母 。但是,如果还没有插入行,我可以为它设置什么值呢? 我如何编写将向该表添加行的脚本? 谢谢 问题答案: 技巧:拥有一个带有虚拟密钥的虚拟行,例如99999。将其插入为FK,然后将FK更改为其实际值。并在交易中完成。

  • 我有一个用JPA和Spring Data DynamoDB建立的Spring项目。它工作正常。我可以通过分区键和排序键(称为DynamoDBHashKey和DynamoDBRangeKey)读取DynamoDB表中的项。 我的问题是,我的存储库的设置方式是使用查询和扫描操作来读取表,而不是使用获取项目操作,这应该会更高效。 这是我的实体: 这是我的存储库: 当我的表同时具有分区键和排序键时,如何配