">必赢国际437437.com_必赢国际437在线游戏_437必赢国际网站

您现在的位置:必赢国际437437.com_必赢国际437在线游戏_437必赢国际网站 > 免责声明 >  > 正文

在数据记录被插入或更新到目的表之前

2018-10-16 22:14http://www.baidu.com四川成人高考网

  中,我们为大家介绍了数据同步时序性的概念和重要意义,以及在da-syncer中如何利用Oracle闪回版本查询实现时序性。

  da-syncer是我们数据聚合项目中的一个数据同步工具,可以通过简单地点击鼠标完成表数据同步的工作,它包含了两个代码工程:

  mconsole:提供管理控制台,前后端分离,是一个常规的Spring Boot工程

  首先抱歉在这里澄清一下,在本系列文章的“深入数据库同步技术(1)- 基础篇”中,我们基于Java/JDBC视角做了很多用例说明,因为毕竟Java是主流编程语言,用它来做说明大家普遍更能接受一些。但实际上我们的核心同步引擎是Python做的。

  至于为什么选择Python,主要原因是Java的笨重。Python是敏捷型语言,更轻量级,在短时间内能更快速地交付项目,且大大缩减我们的代码量(注:本人无意挑起语言层面孰优孰劣的无谓争论)。

  写起来很简洁,如果换成Java实现的话,可能每一句都会拆解成十几条甚至几十条子句。目前pyworker的所有代码加起来还不到100K。

  另外,Python有众所周知的GIL锁的问题,pyworker没有使用多进程而是使用多线程,主要是因为数据同步本身是一个典型的网络I/O密集型而非CPU密集型的业务场景,所以其实影响还是比较小的。

  (3)自动化创建目的表后完成全量同步,对于有单一主键的大表,还支持大表分段同步

  (7)提供管理控制台界面,让用户可以方便地注册数据源,管理同步任务,获悉同步内部详细信息,对同步参数进行管理等

  (9)当同步出现错误时,将同步错误记录保存到单独的一张表,并在错误修复后,自动重试。比如,源端增加了字段长度,目的端感知不到,在源端插入一个长数据后,目的端不能插入,这种错误会被记录下来,在人工干预加长目的端字段长度后,同步恢复正常

  (10)在部署环境中,经常会遇到网络拥塞、抖动,以及各种中间件不稳定的情况,使用类似指数退避算法,重试直至成功为止

  (11)支持websocket信息推送,可以在管理控制台看到实时同步日志流

  (12)对于Oracle源,支持去重机制。如果只增量同步不选择全局同步机制,因为ora_rowscn默认基于Oracle数据块,这样大量无效数据被同步,可以开启去重,将真正发生改变的记录同步到目的端