在我的工作中,经常会出现数据库系统之间的2路数据同步的想法。经典示例是两个稍微不同的CRM系统(例如,Raiser's Edge和Salesforce),并且需要在它们之间进行双向联系人数据同步。
撇开API的考虑,假设您有一个要同步的共享密钥,并且纯粹考虑要使用的算法/模式,这是非技术人员经常低估的一项任务。
例如,您必须当心:
- 您可以轻松地检测到两个系统中的哪些记录已更改(或者您必须比较两个系统之间的所有记录以检测更改)
- 如果要进行每N小时一次的同步,那么在两个系统中相同记录或多或少同时发生更改的情况下,如何处理冲突
- 如果您要进行实时同步(例如,一个系统中的更新会立即触发另一个系统的更新),如何处理由于错误或系统崩溃而导致的时间差异。
我个人可以考虑解决所有问题的方法,但是我想知道是否可以参考任何众所周知的模式,文献或最佳实践。
您所描述的听起来很像联邦数据库系统 -正确吗?
—
gnat 2012年
@gnat:谢谢您的链接,其中一些问题是相似的(例如,处理异构性),但是我说的是同步来自两个自治数据库的数据子集,而这似乎更多是关于为所有内容创建完全集成的视图跨多个数据库。
—
codeulike
7年后,有50个投票,但只有1个像样的答案。那里一定有一些同步模式或最佳实践吗?
—
codeulike