逐步迁移到新的数据库模式。 ¿建议?

时间:2010-08-06 20:56:02

标签: database design-patterns language-agnostic oop migration

(这个问题是关于暂时的最佳方式,并以编程方式保持两个数据库的新记录同步,具有非常不同的模式,并忽略旧的过时的,不再需要的记录。)

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

我有一个旧系统,有一些限制,正在被一个新系统取代。

不同的客户端以不同的格式(xml,sql,txt,甚至是打印就绪的PDF)以不同的方式(推送,拉取,部分转储,简单导出,人工辅助导出 - 像PDF版本等)获取数据)。有些出口产品每月生产一次,其他出口产品则每天生产一次。

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

我们不希望将旧数据库中的数据完整地输入到新数据库中,因为大部分数据已经没有必要,并且有大量垃圾(即具有不同细节级别的重复记录,旧的空调信息,我们只需要作为档案。)

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

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

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

1 个答案:

答案 0 :(得分:1)

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

我过去常常为一家不关心这类问题的公司工作,最后这是一个完整的混乱,补丁后的补丁,大喊大叫和无情的压力。我知道......伤心。