Amazon dynamodb AWS DynamoDB中本地索引的好处?

Amazon dynamodb AWS DynamoDB中本地索引的好处?,amazon-dynamodb,amazon-dynamodb-index,Amazon Dynamodb,Amazon Dynamodb Index,在DynamoDB中,我有一个如下示例数据表 pk sk name price ======================================================= product cat#phone#name#iPhone11 iPhone 11 500 product cat#phone#name#Nokia1100 Nokia 1100 100 produc

在DynamoDB中,我有一个如下示例数据表

pk        sk                         name         price 
=======================================================
product   cat#phone#name#iPhone11    iPhone 11    500
product   cat#phone#name#Nokia1100   Nokia 1100   100
product   cat#phone#name#iPhone11    iPhone 11    500
在这种情况下,我必须按姓名搜索。首先,我为name创建了一个全局索引,其中在
索引pk=pk,sk=name
中。然后我进行了一次搜索,结果很好

现在我改变了我的决定,为name创建了一个
本地索引,其中
name是sk
。它也很好用。我的问题是,如果我在这里使用本地索引,有什么好处吗?什么时候我不应该使用本地索引?如果此处不需要全局索引,但我已使用过,是否存在任何性能问题?

@niloy-rony

本AWS非常详细地解释了LSI和GSI

现在回答您的问题
-LSI不需要额外成本。您不需要支付GSI的RCU,但WCU需要支付存储费用,如另一个AWS中所述。
-如果您非常确定主表(在LSI中pk保持不变)的单个分区(ie-pk)可以超过10GB,则不应使用LSI。这也在上面共享的链接中讨论。
-LSI和GSI在查询延迟方面没有性能问题。然而,GSI中的读取是最终一致的,而LSI支持强一致读取


编辑、放置AWS摘录,以理解强烈且最终一致的阅读

强一致性读取-当您请求强一致性读取时,DynamoDB将返回一个包含最新数据的响应,反映之前所有成功写入操作的更新

最终一致读取-从DynamoDB表读取数据时,响应可能不会反映最近完成的写入操作的结果。响应可能包含一些过时的数据。如果在短时间后重复读取请求,响应应返回最新数据

请参阅AWS文件,以获取将数据从主表传输到GSIs的延迟降至最低的提示

本AWS非常详细地解释了LSI和GSI

现在回答您的问题
-LSI不需要额外成本。您不需要支付GSI的RCU,但WCU需要支付存储费用,如另一个AWS中所述。
-如果您非常确定主表(在LSI中pk保持不变)的单个分区(ie-pk)可以超过10GB,则不应使用LSI。这也在上面共享的链接中讨论。
-LSI和GSI在查询延迟方面没有性能问题。然而,GSI中的读取是最终一致的,而LSI支持强一致读取


编辑、放置AWS摘录,以理解强烈且最终一致的阅读

强一致性读取-当您请求强一致性读取时,DynamoDB将返回一个包含最新数据的响应,反映之前所有成功写入操作的更新

最终一致读取-从DynamoDB表读取数据时,响应可能不会反映最近完成的写入操作的结果。响应可能包含一些过时的数据。如果在短时间后重复读取请求,响应应返回最新数据


请参阅AWS文档,以了解将数据从主表传播到GSIs的延迟降至最低的技巧

参考此线程可能更有益。参考此线程可能更有益。请您进一步解释“GSI中的读取是最终一致的,而LSI支持强一致读取”。LSI对您来说就像一个新表,而GSI是主表上的索引,主表和GSI之间的数据可能不一致。更新了答案以了解更多详细信息。请您进一步解释“GSI中的读取是最终一致的,而LSI支持强一致读取”。LSI对您来说就像一个新表,而GSI是主表上的索引,主表和GSI之间的数据可能不一致。更新答案以了解更多详细信息。