deployment - 数据库迁移 : manage with build script or automatic on app startup?

标签 deployment build-process database-migration

我正在为一个新的网络应用程序开发部署系统,我想知道管理数据库迁移过程中的最佳点在哪里(如何进行迁移的问题完全是另一个问题) .

看来有两条路可以走:

  1. 使用可以 要么从命令手动运行 线或作为自动的一部分 部署/构建过程
  2. 在应用程序运行时运行迁移 启动(我正在使用 ASP.NET 所以这个 可以很容易地完成 导致长时间运行的用户请求)

有人对这些方法有任何建议/见解/经验吗?还有其他建议吗?

我明白为什么 #1 可能更有吸引力 - 它让我可以完全控制数据库何时更新。但是,我非常喜欢 #2,因为它允许我在部署之间快速迭代并减少手动过程。 #2 也可以用在我的开发机器上以允许更快的迭代。嗯,开始认为同时拥有两者可能是一件好事......

最佳答案

我们有一个大约有 100 个客户的销售人员系统,我们在应用程序启动时更新数据库(没错,我们是一个桌面应用程序。)我喜欢这种方法,如果我们有不确定的起点(是客户),它是安全和迭代的数据库是新的还是只更新到版本 x.y.z?)。

但在服务器端,我更喜欢您的第一个选项:我们在虚拟机上创建一个 SQL 查询文件(基于原始数据库的副本)并针对真实服务器运行此查询。

所以恕我直言:

  • 断开连接的客户端:启动、迭代脚本
  • Server:根据实际和真实的数据库在VM上创建的query

所以我也对这个问题感兴趣,并找到了一些(一半)框架作为RikMigrations .经过一些谷歌搜索后,有一个关于数据库版本控制/迁移框架的良好起点:.NET Database Migration Tool Roundup .不一定是文档,但团队博客可能很有趣。

关于deployment - 数据库迁移 : manage with build script or automatic on app startup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752298/

相关文章:

java - 如果有人使用java应用程序,如何部署它

java - 如何关闭 Ant 控制台中 hbm2ddl 的大部分输出?

c++ - 如何使 Visual Studio 的构建变得非常冗长?

xcode - 如何过滤xcodebuild命令行输出?

mysql - 将数据从 MySql 迁移到 Derby (JAVADB) 的简便方法?

ruby-on-rails - Capistrano问题

ruby-on-rails - 将 Rails 应用程序部署到 heroku 错误(sqlite3->Postgresql)?

asp.net - 在 ASP.NET 中无缝部署(IIS 在新工作进程准备好之前杀死工作进程)

image - 在 Laravel 中存储照片。迁移文件的结构

php - 使用 XAMPP Server Linux (Ubuntu) 在 Laravel 4 上迁移时找不到驱动程序