(This question relates to the best way to temporarily and programmatically keep new records of two databases in synchronization, have very different schemes, and ignore old obsolete and no longer required records).
I am working on a company that provides software information for guides, newspapers, and websites.
I have an old system that has several limitations and is replaced by a new one.
Different clients take data in different formats (xml, sql, txt, even in PDF format) and in different ways (push, pull, partial dumps, simple export, man-assisted export, for example, in the PDF version), etc. .). Some exported goods are produced once a month, others more than once a day.
The problem is that several clients have to rely on data from the old system until the new one is fully developed and loaded, and the data service staff cannot have both databases in sync, as this will require a lot of additional work, but switching systems in one night seems impossible given the size of the project.
We donβt want to completely enter the data from the old database into the new one, because most of them are no longer needed and have a lot of garbage (that is, duplicate records with different levels of detail, old airing information that we only need as an archive).
We want the new records to be inserted into both databases, and the old ones to be edited, copied to the new database.
We are going to start developing a new system using Symfony with Doctrine, and I decided that we could develop a set of ORM proxy classes that should have the same interface as a simple set of ORM classes, but continue to synchronize between the other two sets of classes (those that interact with the new system and those that interact with the old). In the end, the old database should be dropped along with proxy classes, and the Doctrine ORM classes that connect directly to the new database should take this place, as if the old system never existed.
This is a long shot, and I'm not quite sure about it. Does anyone have experience with such a project? Are you aware of any common mistake in this approach or any other solution that may be appropriate for this situation?