2010-08-06 72 views
6

(这个问题是关于对暂时和编程的最佳方式保持同步两个数据库的新记录,具有非常不同的模式,而忽略老-outdated,不再须─记录。)逐渐迁移到新的数据库模式。 ¿建议?

我的工作一家为指南,报纸和网站提供电视节目信息的公司。

我有一个旧的系统,有几个限制,正在被一个新的替换。不同的客户端以不同的格式(xml,sql,txt,甚至可打印PDF)以不同的方式(推,拉,部分转储,简单导出,人工辅助导出 - 如PDF版本 - 等等)。一些出口每月生成一次,其他一次出口不止一次。

问题是几个客户必须依赖旧系统中的数据,直到新系统完全开发和加载,并且维护数据的工作人员不能同时拥有两个数据库,因为这需要很多的额外工作,但考虑到项目的规模,一夜之间的交换系统似乎是不可能的。

我们不想将旧数据库中的数据全部导入新数据库,因为大部分数据已经不再需要,并且有很多垃圾(即具有不同细节级别的重复记录,我们只需要作为存档的旧播放信息)。

我们希望在两个数据库中插入新记录,并且编辑旧记录,并将其复制到新数据库中。

我们即将开始使用Symfony与Doctrine开发新系统,并且我决定设计一组ORM“代理”类,它们应该具有与简单的Doctrine ORM类集相同的接口,但保持同步在两个其他类(与新系统接口的那些类和与旧接口相连的那些类)之间进行。最后,旧数据库应该与代理类一起被丢弃,直接连接到新数据库的Doctrine ORM类应该占据那个位置,就好像旧系统永远不会存在一样。

这是一个长镜头,我对这种方法并不完全有信心。
有没有人有这种项目的经验?
您是否知道这种方法中的任何常见错误,或者可能适合这种情况的其他解决方案?

回答

1

我不确定是否有一种方法可以实现这一点,我只能建议您在开始迁移数据之前完全测试新的数据库,一旦确定它可以正常工作,因为它应该建议您编写一些将查询从旧数据库导出的需要数据的迁移应用程序,您不必(但应该)从旧数据库调试数据,如果新数据库运行,重复数据应该被限制。

我曾经为一家不关心这类问题的公司工作,最后它是一个完整的混乱,修补后的补丁,大喊大叫和毫无准备的压力。我知道......悲伤。