Amazon dynamodb 如果DynamoDB二级索引中没有属性更改,它会被重写吗?

Amazon dynamodb 如果DynamoDB二级索引中没有属性更改,它会被重写吗?,amazon-dynamodb,database-schema,secondary-indexes,Amazon Dynamodb,Database Schema,Secondary Indexes,在AWS文件中: 每当表上发生写操作时,必须删除该表的所有索引 更新。在具有大型表的写操作繁重的环境中,这可能会 消耗大量的系统资源。以只读或 主要是阅读环境,这并不是一个太大的问题。然而, 您应该确保您的用户实际正在使用索引 应用程序,而不仅仅是占用空间 但是,如果我正在创建一个全局二级索引,而该索引的属性没有发生任何更改,它会导致重写吗 例如,假设我有下表: 关键字(散列)|电话号码(范围)|属性1…N |帐户ID 关键字,电话号码和帐户ID不会更改(但整个项目可能会被删除) 和全球二级指

在AWS文件中:

每当表上发生写操作时,必须删除该表的所有索引 更新。在具有大型表的写操作繁重的环境中,这可能会 消耗大量的系统资源。以只读或 主要是阅读环境,这并不是一个太大的问题。然而, 您应该确保您的用户实际正在使用索引 应用程序,而不仅仅是占用空间

但是,如果我正在创建一个全局二级索引,而该索引的属性没有发生任何更改,它会导致重写吗

例如,假设我有下表:

关键字(散列)|电话号码(范围)|属性1…N |帐户ID

关键字
电话号码
帐户ID
不会更改(但整个项目可能会被删除)

和全球二级指数:

帐户ID(散列)|电话号码(范围)|关键字

用例是,我需要在第一个表中找到所有具有相同
帐户ID
电话号码的项目。然后我需要
关键字
属性。然而,这不需要经常发生。全局二级索引中的任何属性在任何时候都不会在原始表中更改


文件(对我)不清楚。如果
帐户ID
电话号码
关键字
没有更改(但其他属性可能会更改),我假设全局二级索引将不会写入。(但如果删除原始表项,则会导致重写)。

我相信这将取决于GSI上的预测。如果您只投射
键_
,那么我就不会期望在GSI上再写一次。但是如果您投影
ALL
,这是默认值,那么所有数据都存在于表和GSI中,因此是的,它必须更新GSI


感谢您的链接和想法。我同意,如果我把一切都投射出来,它肯定会写出来;如果我只把钥匙投进去,它肯定不会写。但是,如果包含一个属性,但该属性不变,该怎么办。对我来说,它不会写是有道理的。进一步阅读文档确实证实了你的答案。如果基表和GSI中都有字段,但它们没有更改,则GIS将不会更新。您可以使用请求的ReturnConsumedCapacity参数来测试这一理论,并确认不需要写入GSI的写入是否确实不需要。如果你做这个实验,请在这里报告你的发现!谢谢。Nadav,我正在学习DynamoDB并通过文档(以及学习Node.JS以便我可以使用Lambda)为一个新项目工作。但我一定会这么做!(好主意!)。到时候我会回来报告的,但我相信这不会持续一段时间。