【51CTO.com快译】顾名思义,数据库同步(Database synchronization)是指在两个或多个数据库之间建立数据的一致性,并且能够自动相互复制数据记录的更改。随着时间的推移和信息量的增多,此类数据的协调工作应当被持续执行。
从实现机制上说,最简单的操作方式莫过于将数据从源数据库(主数据库)推送到目标数据库(从数据库)。当然,值得注意的是:同步必须基于主键(Primary Key)的约束。同时数据库的结构应当包含有主键或唯一(主)索引,而绝不是复合型(composite)的。
通常,我们会在两到多个数据库之间持续如下类型的同步:
- 插入同步(Insert Synchronization)
- 更新同步(Update Synchronization)
- 删除同步(Drop Synchronization)
- 混合同步(Mixed Synchronization)
数据库插入同步
如果目标表中并不具有与源表相同主键值的适当记录,那么源表需要将新的记录自动传输到目标处。也就是说:在数据库完成同步过程后,那些缺少的记录将被插入到目标表的对应位置。
下图展示了数据库插入同步的具体过程:
数据库更新同步
当源数据库发生更改时,我们必须确保在目标数据库中执行适当的更改。显然,在同步之前,我们需要先比较两个数据库的记录值,然后在目标表处替换需要更改的记录,并在两个表之间建立合适的标识,以标记更新数据库的操作已完成。
下图展示了数据库更新同步的具体过程:
数据库删除同步
如果某些数据记录已经从源数据库中被删除,那么其对应的记录也需要及时从目标数据库中被移除。也就是说,通过检查“删除同步选项(Drop-sync option)”,那些“滞留”在目标数据库中的多余记录会被及时删除掉,以保障源数据库与目标数据库的存储一致性。
下图展示了数据库删除同步的具体过程:
数据库混合同步
其实在实际应用中,上述三种同步操作从来不是孤立地存在着。为了保持两个数据库的相关性,我们必须在同一套操作中,对目标数据库的对应行/列“打出”添加、更新、以及删除的“组合拳”。
下图展示了数据库混合同步的具体过程:
在《跨数据库转换和同步软件》(请参见-- https://dbconvert.com/)一文中,作者详细介绍了如何在SQL Server、MySQL、Oracle、以及PostgreSQL等时下流行的本地数据库之间,迁移与同步各类数据与记录的操作。当然,此类方法也适用于AWS RDS/Aurora、Microsoft Azure SQL、以及Google Cloud SQL等云端数据库平台。
原标题:What Is Database Synchronization?,作者: Dmitry Narizhnykh
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】