使用大量数据将坏系统迁移到我们当前的系统中

aki*_*aki 12 php windows asp.net migration lamp

当我公司收购另一家公司时,我继承了一个系统.该系统是LAMP和.NET的混合体.

  1. 1运行asp.net的Windows服务器,控制仅用于apis和webservice的第三方验证 - (让我们称之为WIN)
  2. 8个LAMP服务器(网络,报告,cron,存储库等......) - (我们称之为新)

我们目前的环境:

14个LAMP服务器(网络,邮件,存储库等) - (我们称之为CURRENT)

好消息是新代码非常漂亮.几百万行代码(大多数是apis,第三方),我可以将它转换为CURRENT系统.NEW和CURRENT使用两个CentO,这将使转换变得容易,除了我不知道现在该做什么的Windows服务器.

现在是坏消息.新系统数据库架构并不擅长.它没有规范化,查询很慢(数据库查询和代码也是如此).我的第一个想法是将它们重新设计为与CURRENT代码匹配的更标准化的结构,但我不起作用.新系统的表格是巨大的.新系统有7个数据库,超过10000个表,最小的表有超过10万行,有些表有超过5亿行.其中一个数据库的大多数表都有超过2500万行.

迁移是安全的还是我应该继续运行?如果我应该迁移我想知道什么是最安全的解决方案,以便将Windows和NEW系统迁移到我的CURRENT系统?

Boo*_*eus 29

首先,将WIN + NEW系统移动到CURRENT系统需要时间.因此,您必须确保在开始迁移/转换所有内容时,您知道自己要去哪里.迁移可能不是一件容易的事,您可能遇到启动过程后从未想过的问题.

您迁移新系统的想法有利有弊,您需要确保顺利进行,以便最终获得良好可靠的产品.

优点:

  • 只维护一个系统:你不想维护3个系统;
  • 一个代码/数据库环境:PHP vs ASP.NET和MSSQL vs MySQL;
  • 集中代码/数据库;
  • 一个编码(代码和数据库)标准;
  • 保存/销售设备(您将代码迁移到您的14台服务器,也许您不需要其他9(WIN + NEW),因此您可以出售或保留它们用于下一个项目)

缺点:

  • 更高的风险(崩溃,不兼容,您需要了解的未知功能等);
  • 比迁移或重新设计一切更便宜
  • 失败的风险低于迁移(因为你已经知道两个系统都有效)
  • 规划,控制,实施,质量保证:如果其中一个失败,则非常糟糕;
  • 昂贵的:迁移可能在时间和金钱上都很昂贵;

这是一个大型数据库,改变/优化这将需要在劳动时间上进行大量投资.这不是你可以在几个小时内轻松完成的事情.这可能需要数周或数月才能成功地将数据迁移到CURRENT系统而不会出现错误.如果可以,您可以从两个数据库模式(如客户端或产品)迁移常见或相似之处.这样,您可以导入CURRENT系统可以正常运行的数据,并且您的代码也可以识别.CURRENT系统的用户可以立即开始管理这些项目/记录而不会出现问题.对于您的CURRENT系统无法识别的新记录或记录,您可以简单地重新设计这些表并将它们迁移到CURRENT系统(然后更新当前代码).

在代码迁移时,如果来自NEW系统的代码足够好并且符合您的标准,您可以保留它.这将节省开发时间,只需确保更新查询和服务器连接.另一方面,如果它像意大利面条代码,你将不得不理解代码的作用.这也可以在劳动时间上进行大量投资.我可以在这里建议标准化这个并组织你的代码,就像你在CURRENT上组织它一样.您可以使用通用文件和文件夹结构将代码集中在一个公共文件夹中.您可以将所有公共库,第三方等放在那里.所以当您调用CURRENT和NEW代码时,它会加载相同的PHP类.这将使您轻松从NEW到CURRENT系统的过渡.这样,您就可以在同一个地方知道所有需要的文件,并且非常易于维护.特别是如果您的代码需要需要文件的必需文件.如果您的代码遍布服务器,那么如果您喜欢这个想法,可以创建一个NFS.

现在,我可以建议从并行采用开始.这样您就可以确保所有系统都正常运行并且运行正常.然后慢慢将数据/代码迁移到CURRENT系统,直到完成所有操作.这并不容易,您必须首先确定必须迁移的NEW + WIN系统的哪个部分.我的建议是迁移WIN系统.因为这与CURRENT和NEW系统无关,只要你显示相同的输出就应该没问题.在PHP中搜索开源或类似的验证,或者如果找不到,请构建它们.这样,这个WIN系统可以轻松迁移到您当前的组织结构和编码标准.执行测试和质量保证将很容易,您可以很快完成.

迁移此WIN后,您需要确定首先需要传输到CURRENT系统的内容.例如,如果NEW和CURRENT系统具有"客户端",则从NEW系统收集所有信息,并使用脚本(手动或脚本)将它们移动到CURRENT系统.然后,您可以迁移客户端元素,如产品,帐单或与这些客户端相关的任何其他记录.重复这些步骤,直到迁移所有数据.这样,您不必重新设计任何表或更改NEW系统中的任何代码,所有内容都保存在CURRENT系统上,一切正常.

我不会推荐这个案例的大爆炸采用.