如果DynamoDB二级索引内部没有属性更改,是否会重写它?

问题描述 投票:0回答:1

在AWS文档中:

[每当对表进行写操作时,表的所有索引必须为更新。在具有大表的大量写入环境中,这可以消耗大量的系统资源。以只读或在大多数情况下,这不是一个大问题。然而,您应该确保您的索引实际上正在使用应用程序,而不仅仅是占用空间。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SQLtoNoSQL.Indexes.html

但是,如果我要创建一个全局二级索引,而该索引的属性未发生任何变化,它将导致重写吗?

例如,假设我有下表:

关键字(哈希)|电话号码(范围)|属性1 ... N |帐户ID

[KEYWORDPHONE NUMBERACCOUNT ID不会改变(但是整个项目可能会删除)。

以及全局二级索引:

帐户ID(哈希)|电话号码(范围)|关键字

用例是,我将需要在第一个表中找到所有具有相同ACCOUNT IDPHONE NUMBER的项目。然后,我将需要KEYWORD属性。但是,这不需要经常发生。全局二级索引中的任何属性都不会在原始表中随时更改。

文档尚不清楚(对我而言)。我假设如果ACCOUNT IDPHONE NUMBERKEYWORD不变(但其他属性可能),则全局二级索引将不会写入。 (但是,如果删除原始表项,它将导致重写。)>

在AWS文档中:每当在表上进行写操作时,必须更新表的所有索引。在具有大表的大量写入环境中,这可能会消耗大量...

amazon-dynamodb database-schema secondary-indexes
1个回答
1
投票

我相信这将取决于GSI的预测。如果您计划使用KEYS_ONLY,那么我不希望在GSI上再写一次。但是,如果您将默认设置为ALL,则所有数据都保存在表和GSI中,因此,是的,它必须更新GSI。

© www.soinside.com 2019 - 2024. All rights reserved.