0

就像我们过去使用 rdbms sql 脚本一样。我想对我的 dynamodb 表做类似的事情。

目前很难跟踪从环境到环境的变化(dev - qa -prod)。我们直接通过控制台进行更改。

我想要做的是,将表数据/json 保存在 git 版本控制中,并且每当任何开发人员进行更改时,我们应该能够只运行一个脚本,该脚本能够将相应的更改迁移到 dynamodb 表上,例如。更新/创建/删除表,添加/删除/更新记录。

但我目前无法找到合适的方法/指南来实现这一目标。我使用 javascript/nodejs 作为我们的基础语言。

关于这种情况的任何帮助都将是可观的。

谢谢

参考:https ://forums.aws.amazon.com/thread.jspa?threadID=342538

4

1 回答 1

1

据我所知,您描述了不同的问题:

  1. 更改表格“结构”
  2. 更新后更新记录

在我回答之前,请记住 DynamoDB 是一个NoSQL 数据库,而您之前的 RDBMS 是一个关系数据库。两种类型的数据库的操作任务可能会有很大差异。


1.自动更改表格的“结构”

为此,您可以查看基础设施即代码工具,例如 Terraform、CloudFormation 或 Pulumi。

但是由于 DynamoDB 是一个 NoSQL 数据库,你只能做一些事情,比如设置你的哈希和排序键等以及定义索引。向 DynamoDB 添加“字段”不是使用这些工具完成的,因为除了哈希和排序键之外,没有字段。其他一切都不遵循显式(sql)模式。

2. 更新后更新记录

如果您没有很多记录,您可以自己编写一个简单的工具或脚本来使用 AWS 开发工具包完成相关工作,并在 CI/CD 管道期间运行它。一种简单的方法是创建一个“迁移”文件夹,如果其中有文件,管道将执行它。因此,迁移完成后,只需再次删除文件即可。不是很好,但很务实。

如果您有很多记录,这将不再那么好用,至少如果您希望进行无停机部署。在这种情况下,您将更新您的软件,以便能够使用记录结构的新旧版本,同时在后台逐步更新所有记录(使用脚本等)。更新所有记录后,您可以删除处理旧结构的代码路径。

于 2021-06-30T14:17:17.013 回答