第一种是周期性离线同步。
第二种是实时或准实时同步。
第三种是数据库迁移或整库复制。
-
数据规模有多大; -
允许多长延迟; -
是否需要捕获DELETE; -
是否需要保存事务顺序; -
源库可以承受多大读取压力; -
数据最终是做分析,还是继续支撑业务系统。
SELECT * FROM order
NUMBER(20,6)
-
VARCHAR / VARCHAR2 / NVARCHAR -
TEXT / CLOB -
BLOB / VARBINARY -
NUMBER / DECIMAL / NUMERIC
NULL、空字符串 ''、数字0,看起来都像“没有值”,但业务含义可能完全不同。
WHERE update_time > 上一次同步时间
第一,所有业务更新必须正确修改 update_time。
第二,会存在时间边界。
10:00:00
10:00:00
第三个问题更明显:DELETE。
WHERE update_time > xxx
coupon_amount
member_level
VARCHAR(50)
VARCHAR(200)。
-
新增字段通常相对安全; -
字段改名可能直接影响下游SQL; -
字段类型变化可能造成数据转换失败;
-
删除字段如果自动向下游传播,甚至可能直接破坏已有报表。
一层是技术对账。
第二层是数据对账。
第三层是业务对账。
第一层:连接层
第二层:数据分类
第三层:采集方式
第四层:初始化机制
第五层:数据映射
第六层:变化管理
第七层:可靠传输
第八层:一致性校验
第九层:链路监控

