gpt4 book ai didi

amazon-dynamodb - 更改 DynamoDB 表 : what is the best/recommended way? 的架构

转载 作者:行者123 更新时间:2023-12-03 07:50:53 31 4
gpt4 key购买 nike

亚马逊推荐的在生产 DynamoDB 中更改大表架构的方法是什么?

想象一个 假设 如果我们有一个表 Person,带有主哈希键 SSN。该表可能包含 1000 万个项目。

现在有消息称,由于身份盗窃的严重数量,这个假设国家的政府引入了另一种个人身份识别:Unique Personal Identifier,或 UPI。

我们必须添加一个 UPI 列并更改 Person 表的架构,以便现在主哈希键是 UPI。 我们希望在一段时间内同时支持使用 SSN 的当前系统和使用 UPI 的新系统 ,因此我们需要这两列在 Person 表中共存。

亚马逊推荐的这种架构更改的方法是什么?

最佳答案

有几种方法,但首先您必须了解您不能更改现有表的架构。要获得不同的架构,您必须创建一个新表。您也许可以重用现有的表,但结果与您创建不同的表是一样的。

  • 延迟迁移到同一个表,没有 Streams。每次修改 Person 表中的条目时,使用 UPI 而不是 SSN 作为哈希键的值在 Person 表中创建一个新项目,并删除以 SSN 为键的旧项目。这假设 UPI 取自与 SSN 不同的值范围。如果 SSN 看起来像 XXX-XX-XXXX,那么只要 UPI 的位数与 SSN 不同,那么您就永远不会有重叠。
  • 使用 Streams 延迟迁移到同一个表。当流变得普遍可用时,您将能够为您的 Person 表打开一个流。创建一个具有 NEW_AND_OLD_IMAGES 流 View 类型的流,并且每当您检测到对 Person 表中现有人员添加 UPI 的项目的更改时,创建一个 Lambda 函数来删除以 SSN 为键的人员并添加具有相同属性以 UPI 为键。这种方法具有竞争条件,可以通过向项目添加原子计数器版本属性并调节版本属性上的 DeleteItem 调用来缓解竞争条件。
  • 使用 Streams 预先(脚本化)迁移到不同的表。运行一个脚本来扫描您的表并向 Person 表中的每个 Person-item 添加唯一的 UPI。使用 NEW_AND_OLD_IMAGES 流 View 类型在 Person 表上创建一个流,并订阅该流的 lambda 函数,当 lambda 函数检测到具有 UPI 的 Person 已更改或 Person 具有添加了UPI。基表上的突变通常需要数百毫秒才能作为流记录出现在流中,因此您可以对应用程序中的新 Person_UPI 表进行热故障转移。拒绝请求几秒钟,在此期间将您的应用程序指向 Person_UPI 表,然后重新启用请求。
  • 关于amazon-dynamodb - 更改 DynamoDB 表 : what is the best/recommended way? 的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301160/

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