3

我的任务是估算从使用 SQL Server 到使用 MySQL 重写 .NET 应用程序的数据访问层所需的时间。这是否会发生尚无定论……只是需要多长时间。

除了将 SQL Server 中的存储过程转换为 MySQL 查询之外,我估计了所有的工作。数据模型本质上是相同的(通过相同的表或通过暗示原始模式的查询),但在 MySQL 中。我有大约 100 个存储过程,其中大部分是数据读取,并且将围绕 DAL 进行体面的单元测试,因此我们可以看到事情何时工作/中断。

所以问题是在两种 SQL 方言之间进行翻译需要做多少工作(广义而言)?一般而言,它往往是微不足道的工作,并且大部分是通过查找和替换自动化的吗?还是需要手动调整大量典型查询?我要求对任务规模提供一些一般性指导。

感谢您的任何帮助。

4

5 回答 5

2

没有正确答案。这取决于。如果你有一个 MySQL 和 MSSQL 的 SQL 明星,他可能会在一两天内移植所有 100 个存储过程,另一个程序员可能需要 2 到 3 周。

SQL在理想世界中被认为是标准的,但我们并不生活在理想世界中。

http://www.joelonsoftware.com/articles/fog0000000245.html

于 2010-01-15T12:36:58.180 回答
0

在最坏的情况下,您可能必须逐行遍历它们。你必须那么彻底,但大多数情况下我想它只是阅读它以确保它与 mysql 兼容。偶尔可能会改变一些事情(主要是在查询中)。

这是一个困难的问题,因为它取决于太多。程序有多复杂?它们可以 100% 兼容 MySQL,也可以 100% 不兼容。你只需要做出自己的评估,真的。

不过,如果您对 MySQL 感到满意,则不应花费超过一天的时间。

于 2010-01-15T12:30:20.100 回答
0

这将取决于,但很可能你会有相当多的逐行爬行。如果 SP 只是简单的选择,那么这可能会相当快,但即使是您认为简单的一些事情也需要手动更改。例如select top 20 [column] from [table],在 MSSQL 中变成select [column] from [table] limit 0,20在 MySQL 中。这甚至可能意味着在处理诸如分页之类的任务的更高级别代码中发生了变化——你不能假设你只需要更改 SQL 就可以让事情正常工作。

如果有更复杂的存储过程,或者任何使用 T-SQL 函数的东西,那么您可能会经历很长一段时间并且通常不会令人满意。

于 2010-01-15T12:37:04.063 回答
0

我不认为有一个正确的答案。

有多少东西使用了特定于 mssql 的东西,是否兼容?没有把握。如果它们是简单的选择,你不应该有太大的问题,但如果你做的不止这些,老实说,你需要进行逐行分析,

最初的开发工作花了多长时间?或者它是在多年的时间内完成的?

就个人而言,我会抵制任何使用剪切和粘贴的诱惑,我会评估你所拥有的,然后在 mysql 中从头开始编写它,希望你的数据库有完整的文档()如果没有,那么我不羡慕这个任务。

这是一个当前正在运行的系统还是正在开发中的系统?你不说..不要忘记排序规则和 unicode 数据之类的东西,如果它不再是一个包含内容的实时数据库,那么它不仅仅是引入 sprocs 的情况。

接下来要问的是,当前的结构实际上是你想要推进的东西,还是你可以转移到休眠状态,然后是性能问题。

您的问题的直接答案是它取决于您所谈论的人和复杂性..但这绝对是一项需要非常小心的任务。特别是如果这是一个实时系统

于 2010-01-15T12:44:26.430 回答
0

我最近不得不将 Oracle DB 移动到 MSSQL Server。我花了大约 3 天时间阅读源代码并在必要时进行调整。与您的项目中的查询数量大致相同,但这些查询几乎是微不足道的(选择、插入、更新、删除)。存储过程通常内部有多个查询,因此一周的工作可能是现实的。

于 2010-01-15T13:02:09.317 回答