我希望将旧版 Web 应用程序的数据库从 SQL Server 迁移到 MySQL。我必须注意的 MySQL 的局限性是什么?在开始实际修改代码之前,哪些项目将成为综合清单的一部分?
3 回答
我要检查的第一件事是数据类型——数据类型的确切定义因数据库而异。我将创建一个映射列表,告诉我将每个数据类型映射到什么。这将有助于构建新表。我还会检查现在未使用的数据表或列。迁移它们没有意义。对函数、作业、sps 等做同样的事情。现在是清理垃圾的时候了。
您如何通过数据库中的 sps 或动态查询访问数据?通过在新的开发数据库中运行每个查询来检查每个查询,并确保它们仍然有效。同样,两种风格的 SQl 工作方式之间存在差异。我没有使用过我的 sql,所以我不确定一些常见的故障点是什么。当您使用它时,您可能想要对新查询进行计时并查看它们是否可以优化。优化也因数据库而异,当您使用它时,现在可能存在一些性能不佳的查询,您可以将其作为迁移的一部分进行修复。
还需要查看用户定义的函数。如果您正在这样做,请不要忘记这些。
不要忘记预定的作业,这些作业也需要在 myslq 中检查和重新创建。
您是否定期导入任何数据?所有导入都必须重写。
一切的关键是使用测试数据库并测试、测试、测试。测试一切,尤其是季度或年度报告或您可能忘记的工作。
你想做的另一件事是通过版本控制的脚本来做所有事情。在您可以在 dev 上按顺序运行所有脚本且没有失败之前,请不要进入生产环境。
我忘记了一件事,确保您正在运行迁移的开发数据库(sql server 数据库)在每次测试运行之前立即从生产中更新。讨厌因为您正在针对过时的记录进行测试而导致产品失败。
您的客户端代码几乎肯定是最复杂的修改部分。除非您的应用程序具有非常高质量的测试套件,否则您最终将不得不进行大量测试。你不能依赖任何工作相同的东西,即使是你可能期望的东西。
是的,数据库本身的东西需要改变,但客户端代码是主要操作所在,需要大量工作和严格的测试。
忘记迁移数据,这是您最不应该考虑的事情;数据库模式可能可以毫不费力地转换;其他数据库对象(SP、视图等)可能会导致问题,但客户端代码是问题的焦点所在。
几乎每个执行数据库查询的例程都需要更改,但绝对所有这些例程都需要进行测试。这将是不平凡的。
我目前正在考虑将我们应用程序的主数据库从 MySQL 4.1 迁移到 5,这差别不大,但这仍然是一项非常非常大的任务。