Amazon dynamodb 更改DynamoDB表的模式:最佳/推荐的方法是什么?
Amazon推荐的在生产DynamoDB中更改大表模式的方法是什么 设想一个假设的情况,其中我们有一个表Person,其主散列键为SSN。此表可能包含1000万项 现在有消息说,由于身份盗窃案数量巨大,这个假想国家的政府引入了另一种个人身份:唯一个人识别码(Unique personal Identifier,简称UPI) 我们必须添加一个UPI列并更改Person表的模式,以便现在主哈希键是UPI我们希望在一段时间内支持使用SSN的当前系统和使用UPI的新系统,因此我们需要这两列在Person表中共存Amazon dynamodb 更改DynamoDB表的模式:最佳/推荐的方法是什么?,amazon-dynamodb,Amazon Dynamodb,Amazon推荐的在生产DynamoDB中更改大表模式的方法是什么 设想一个假设的情况,其中我们有一个表Person,其主散列键为SSN。此表可能包含1000万项 现在有消息说,由于身份盗窃案数量巨大,这个假想国家的政府引入了另一种个人身份:唯一个人识别码(Unique personal Identifier,简称UPI) 我们必须添加一个UPI列并更改Person表的模式,以便现在主哈希键是UPI我们希望在一段时间内支持使用SSN的当前系统和使用UPI的新系统,因此我们需要这两列在Person
Amazon推荐的更改模式的方法是什么?有几种方法,但首先您必须了解,您不能更改现有表的模式。要获得不同的模式,必须创建一个新表。您可以重用现有表,但结果与创建其他表时相同
我使用的是亚历山大第三种方法的变体。再次创建一个新表,该表将随着旧表的更新而更新。不同之处在于,在转换时使用现有服务中的代码写入两个表,而不是使用lambda函数。您可能有不希望在临时lambda函数中重现的自定义持久性代码,而且您可能必须为这个新表编写服务代码。根据您的体系结构,您甚至可以在不停机的情况下切换到新表
但是,使用lambda函数的好处在于,对新表的额外写入所引入的任何负载都将在lambda上,而不是在服务上。DynamoDB streams使我们能够在不停机的情况下迁移表。我这样做非常有效,我遵循的步骤是:
如果更改涉及更改分区键,则可以添加新的GSI(全局二级索引)。此外,您可以随时向DynamoDB添加新列/属性,而无需迁移表。感谢建议的解决方案。如何处理其他表中的外键,这些表包含个人SSN作为其属性之一的值?我需要更新一个原子操作中的所有列/属性,否则可能存在竞争条件。好了吗DynamoDB中不是官方的事务机制吗?我偶然发现了一个事务库,但它是用Java编写的,据说落后于最新版本的DynamoDB。有什么事务机制可以在Python中使用(使用Boto)吗?好的,事务库是打开的