我们正在开发两个相关的系统。其中一个(A)将安装在我们客户的机器上。其余(B)将由我的组织使用。
每个系统都有其自己的数据库(关系型),并且其架构也不同。但是,两个系统都必须同步。另外,必须将B中的某些更改导出到所有A类系统,而其他仅导出到特定的系统。
有些客户没有Internet连接,因此在某些情况下,必须通过交换文件来完成同步。
因此,我们正计划解决以下问题:
- 每个系统都维护其数据库的变更日志。我们计划用MongoDB实施它。
- 当系统初始化同步过程时,它将从日志中检索所有进行的更改。如果系统是B,则检索到的更改取决于目标。然后,系统以XML格式对它们进行序列化,最后(通过文件或网络)发送它们。
- 当另一端点接收到变更集时,它将对它们进行反序列化。然后,系统对数据进行一些必要的转换,最后记录所做的更改。在这一步中,如果有必要,系统必须解决可能存在的冲突。
- 最后,接收器系统发送其更改(以及其他解决冲突的产品)。
这种方法可行,可扩展且优雅吗?您将进行哪些更改或添加?
您是否看过与两个DBMS相关的任何工具来帮助复制数据?涉及哪些DBMS?
—
亚当·祖克曼
我们正在使用MySQL 5.5.8。我们看过一些工具,但我们认为它们不符合我们的要求。
—
2014年
一个陷阱是ObjectIds不会单调增加。
—
CodesInChaos 2015年