在AWS文档中:
[每当对表进行写操作时,表的所有索引必须为更新。在具有大表的大量写入环境中,这可以消耗大量的系统资源。以只读或在大多数情况下,这不是一个大问题。然而,您应该确保您的索引实际上正在使用应用程序,而不仅仅是占用空间。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SQLtoNoSQL.Indexes.html
但是,如果我要创建一个全局二级索引,而该索引的属性未发生任何变化,它将导致重写吗?
例如,假设我有下表:
关键字(哈希)|电话号码(范围)|属性1 ... N |帐户ID
[KEYWORD
,PHONE NUMBER
和ACCOUNT ID
不会改变(但是整个项目可能会删除)。
以及全局二级索引:
帐户ID(哈希)|电话号码(范围)|关键字
用例是,我将需要在第一个表中找到所有具有相同ACCOUNT ID
和PHONE NUMBER
的项目。然后,我将需要KEYWORD
属性。但是,这不需要经常发生。全局二级索引中的任何属性都不会在原始表中随时更改。
文档尚不清楚(对我而言)。我假设如果ACCOUNT ID
,PHONE NUMBER
和KEYWORD
不变(但其他属性可能),则全局二级索引将不会写入。 (但是,如果删除原始表项,它将导致重写。)>
在AWS文档中:每当在表上进行写操作时,必须更新表的所有索引。在具有大表的大量写入环境中,这可能会消耗大量...
我相信这将取决于GSI的预测。如果您计划使用KEYS_ONLY
,那么我不希望在GSI上再写一次。但是,如果您将默认设置为ALL
,则所有数据都保存在表和GSI中,因此,是的,它必须更新GSI。