Database 迁移技术:将整个数据库复制到v2,还是始终在同一数据库版本上进行更改?
我知道标题可能会让人困惑,但为了解释这个问题,这是我能提供的最好的标题 背景: 我有一个域,一个域有两个数据库:一个nosql(Mongodb)和一个sql(Postgres);每个数据库都有自己的模型。例如,如果域名是“myapp”,版本是“v01”,那么它在sql和nosql中都有一个名为“myapp_v01”的数据库 迁移-复制数据库: 在迁移时,我通常会创建一个名为“myapp_v02”的新数据库(请注意第2行)。然后,迁移脚本将克隆表或从“myapp_v01”获取数据,以某种方式对其进行更改,并以另一种方式将其保存到“myapp_v02”。我不知道这是否具有很强的可扩展性,也不知道当迁移需要1个小时时会是什么样子 迁移-复制表: 我可以简单地创建一个新的临时表来进行迁移更改(从表“cars”复制到“cars\u temp”,然后删除“cars”表并将“cars\u temp”的名称更改为“cars”) 迁移-更改表: 这有点棘手,因为我们有两个sql数据库。 在sql中,我需要首先创建alter模式,然后在需要时以某种方式更新每一行 结论: 我认为第三个是最快的,但我真的不知道这里的最佳实践是什么Database 迁移技术:将整个数据库复制到v2,还是始终在同一数据库版本上进行更改?,database,migration,Database,Migration,我知道标题可能会让人困惑,但为了解释这个问题,这是我能提供的最好的标题 背景: 我有一个域,一个域有两个数据库:一个nosql(Mongodb)和一个sql(Postgres);每个数据库都有自己的模型。例如,如果域名是“myapp”,版本是“v01”,那么它在sql和nosql中都有一个名为“myapp_v01”的数据库 迁移-复制数据库: 在迁移时,我通常会创建一个名为“myapp_v02”的新数据库(请注意第2行)。然后,迁移脚本将克隆表或从“myapp_v01”获取数据,以某种方式对其进
谢谢
< P>我会考虑第三默认方法。它有两个赞成的理由:- 创建并填写C列
- 可能会删除A和B上的NOTNULL和类似约束
- 部署并启动仅使用C列的应用程序的新版本
- 以后任何时候都可以删除A列和B列,可能仅在几周后发布下一个版本
- 创建并填写C列
- 放下A和B
- 部署并启动仅使用C列的应用程序的新版本
- 创建保持A、B和C同步的触发器(这也可以通过视图和其他特定于供应商的RDBMS功能实现)
- 部署并启动仅使用C列的应用程序的新版本
- 将所有其他应用程序迁移为仅使用C
- 以后任何时候都可以删除A列和B列,可能是几年后
我不知道猫鼬的续集。。。对我来说,听起来像是童话般的冒险:-)我认为第三个选择是一个不错的选择——当然“视情况而定”。我仍然有一个问题。假设我有表_v01,其中有字段“a1”和“b2”,我想将它们合并到“a2”中。我应该首先创建“a2”字段,但是我会遇到问题,因为我使用模型,v2中的模型没有“a1”和“b1”字段,v1中的模型没有“b2”。我在mongoose中使用sequelize。我的目的是创建一个迁移文件夹,其中包含v1、v2、v3的模型。主应用程序中的型号为实际版本型号。因此,在我的第一种方法中,我打开了两个连接,一个是v1的模型,另一个是v2的模型,然后复制粘贴。但是第三种方式我不知道如何使用模型。。。