gpt4 book ai didi

amazon-web-services - GSI 与表的区别

转载 作者:行者123 更新时间:2023-12-03 20:18:56 25 4
gpt4 key购买 nike

我无法理解全局二级索引和表之间的区别。

  • 为什么要使用全局二级索引,为什么不创建另一个表?
  • 我必须为两者指定读取和写入吞吐量。当对带有 GSI 的表进行写入时,我必须同时写入表和索引。我的问题是为什么 GSI 不创建另一个表而不是全局二级索引?
  • 使用 GSI 有什么好处?
  • 最佳答案

    我会尝试一下。

    一件事是您可以获得最终一致的数据 View ,它也可以充当一种“事务”模型。

    想象一下,您要跟踪用户/组关系。这可能不是最好的例子,但我认为它可以说明几点。

    假设您的用例是您希望能够Query用户的所有组,以及 Query一个组的所有用户。在这个简单的设置中,您会想到有 2 个表:

  • UsersToGroups哈希+范围为 userId + groupId
  • GroupsToUsers哈希+范围为 groupId + userId .

  • 如果您需要更新客户需要的任何关系:
  • 写信给 UsersToGroups表(哈希:userId,范围:groupId)
  • 写信给 GroupsToUsers表(哈希:groupId,范围:userId)

  • 如果您的第二次写入失败会怎样?如果第二次失败,你如何回滚第一次写入?你怎么知道你的第二次写入失败了,比如连接失败?

    这些问题处理起来并不有趣。

    使用 GSI,您可以拥有一个表,具体取决于您希望如何管理它。如果不是使用 2 个表,假设我使用一个表和一个 GSI。
  • UsersToGroups哈希+范围为 userId +`groupId
  • GSI GroupsToUsers哈希+范围为 groupId + userId .

  • 如果您需要更新客户需要的任何关系:
  • 写信给 UsersToGroups

  • 这就对了。 您只需提出 1 个请求。如果写入成功,您可以保证您的索引(最终)具有相同的数据 .根据您查询此索引的频率或需要传播的数据量,您可以相应地调整吞吐量。

    这个简单的例子假设 userId s 和 groupId是唯一的,当它们被投影到索引时不会发生冲突,但我认为它至少可以很好地解释一些有用性

    有关更多信息,请参阅 Guidelines for Global Secondary Indexes documentation .

    关于amazon-web-services - GSI 与表的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33115991/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com