在以前的文章“SQL Azure迁移工具”中,我们讨论了在本地SQL实例与SQL Azure之间移动数据的选项。在这篇文章中,我们将着眼于更加复杂的数据交换方案,包括数据同步和在SQL Azure中刷新数据同时保持可用性。 实现数据同步通常需要一些前期分析,为这些工作确定最佳的流程以及最合适的工具和技术。其他的方面,你需要考虑同步表的的数量、需要刷新的频率(这可能与大量表在同一数据库中同步不同)、应用程序的运行时间要求以及表的大小。
一般来说,越大的表越需要越需要多的运行时间、实现数据同时越需要你更多的工作,以便使它不干扰应用程序使用数据库。 最简单的数据同步方法之一是创建临时表在目标数……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
在以前的文章“SQL Azure迁移工具”中,我们讨论了在本地SQL实例与SQL Azure之间移动数据的选项。在这篇文章中,我们将着眼于更加复杂的数据交换方案,包括数据同步和在SQL Azure中刷新数据同时保持可用性。
实现数据同步通常需要一些前期分析,为这些工作确定最佳的流程以及最合适的工具和技术。其他的方面,你需要考虑同步表的的数量、需要刷新的频率(这可能与大量表在同一数据库中同步不同)、应用程序的运行时间要求以及表的大小。一般来说,越大的表越需要越需要多的运行时间、实现数据同时越需要你更多的工作,以便使它不干扰应用程序使用数据库。
最简单的数据同步方法之一是创建临时表在目标数据库然后从源数据库加载这些数据。在SQL Azure中,可以用SQL Server Integration Services 或者Bcp 工具来实现,如前面文章所讨论的。一旦数据加载到临时表,运行一系列 T-SQL 脚本去比对临时表与主表之间的数据并使他们同步。下面有一个示例序列我已经在很多个项目中成功实施了。
- 使用Delete From 命令 关联临时表和主表并且删除主表中那些与临时表中行没有匹配的的行。
- 使用 UPDATE FROM 命令关联临时表和主表并且更新主表中的记录。
- 使用 Insert 命令 把仅存在临时表中的行插入到主表中。
如果您使用的SQL Server 2008或者更新的版本,可利用Merge语句把第二条和第三条语句组合成单一的命令。Merge语句的绰号是Upsert, 因为它有一条语句中实现插入新行和更新原有行的组合能力。因此,Merge本身具有很好的数据同步能力。
在中小规模的表中使用我所描述的工具效果很好,因为表在更新发生时临时的被锁定因此暂时无法使用。但在我经验,这是一个轻微的干扰,可以通过在数据库使用率低的时段同步或者分解成批量的更新。缺点是,你必须实现每个表的自定义代码。
本人曾经也有一个稍微修改的方案,它去除了每个表执行一些列脚本的需要。当你加载临时表后,执行存储过程sp_rename,交换主表和临时表的名字。这个执行的速度非常快,甚至运行在很多表上。在TRY/CATCH模块里为每个表执行交换,并且交换没有成功时回滚这个事务处理。
作者
相关推荐
-
不安全的Firebase数据库使关键数据面临风险
当开发人员无法对支持其移动应用程序的数据库或云实例执行身份验证时,这里会发生一种最简单且最具破坏性的安全事件。 […]
-
真正的甲骨文云战略vs. AWS和Azure
如今,甲骨文云战略正遭受重创。原产品开发主管Thomas Kurian离开,加盟谷歌云计算部门,再加上甲骨文混 […]
-
FaunaDB分布式云数据库瞄准事务性NoSQL
作为云计算平台领导者,近日AWS在其NoSQL软件-DynamoDB中增加了对事务处理工作负载的支持,从而进一 […]
-
Amazon RDS on VMware扩展内部云数据库
VMware和AWS公司围绕混合云深化了合作伙伴关系,并推出产品使VMware客户可在自己数据中心内访问亚马逊 […]