我正在为一个新的网络应用程序开发部署系统,我想知道管理数据库迁移过程中的最佳点在哪里(如何进行迁移的问题完全是另一个问题) .
看来有两条路可以走:
- 使用可以 要么从命令手动运行 线或作为自动的一部分 部署/构建过程
- 在应用程序运行时运行迁移 启动(我正在使用 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/