数据同步之问题与解决办法

分表分库的处理
1)传统数据库的分表分库处理:
在这里插入图片描述
2)在大数据系统中的做法是构建分布式数据库访问引擎(中间层),将分布在不同数据库中的表集成为一张表,业务系统像单表一样使用

3)分布式数据库访问引擎位于数据持久层与JDBC驱动之间,实现了以下功能:
在这里插入图片描述
高效同步与批量同步
1)数据同步流程:创建表–同步工具中配置数据库连接/表/字段–测试

2)存在问题:

① 数据量增大时,每天会有大量重复的配置工作,降低开发人员热情

② 不同数据库有个性配置

3)解决方式:

① 实现配置流程一键化操作,并封装web接口进一步达到批量化的效果

② 开发数据库管理平台,统一管理数据、数据结构;实现对不同数据源配置透明化,通过库名表名唯一的定位数据

增量与全量数据同步:
1)数据量超出一定阈值,每个周期同步全量数据会消耗大量资源。在这种情况下可以只同步增量数据并与前一天的全量数据进行合并。

2)当前流行的大数据平台基本不支持update操作,所以我们用全外连接+全量覆盖的方式更新数据。即将当天增量数据与前一天全量数据做全外连接,然后重新加载最新的全量数据。

数据漂移的处理
1)数据漂移发生在数据仓库的最底层ODS层,当日业务数据中包含前一天或者后一天凌晨的数据,或者当天的变更数据丢失

2)原因:数据在ODS层按时间分区存储,时间戳的准确性导致了数据漂移。

时间戳分四类:

① 数据库表中的数据更新时间(modified_time)

② 数据库日志中的数据更新时间 (log_time)

③ 数据库表中业务发生时间 (proc_time)

理论上这3个时间时相同的,事件中往往存在偏差,理由如下:

① 前台业务手工修正数据未更新modified_time

② 由于网络压力,modified_time和log_time晚于proc_time

3)数据漂移场景

① 依据modified_time划分,会发生因为未更新modified_time而导致数据遗漏,或者由于网络压力凌晨的数据漂移到后一天

② 依据log_time划分,由于网络压力,业务发生时未能实时更新数据,导致凌晨的数据漂移到后一天

③ 依据proc_time划分,仅仅包含一个业务记录,遗漏过程的变化记录

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值