赞
踩
问题:传统数据同步方式为周期全量数据同步,但随着业务发展数据量的急剧增加,周期全量同步的效率太低了。
解决方案:每个周期只同步增量数据,然后与上一个同步周期获取的全量数据进行合并,获取最新版本的全量数据。
传统数据整合方案:merge 方式(update + insert );
当前大数据平台不支持 update 操作,而采用:全外连接(full outer join) + 数据全覆盖重新加载(insert overwrite);(即如日调度,则将当天的增量数据和前一天的全量数据做全外连接,重新加载最新的全量数据)
如果担心数据更新错误:每条保持一个最新的全量版本,保留较短的事件周期。(另外,当业务系统的表有物理删除数据的操作,而数据仓库需要保留所有历史数据时,也可以选择这种方式,在数据仓库中永久保留最新的全量数据快照。)
例:淘宝订单表
方案一:数据更新可以增量抽取合并merge,得到最新数据
方案二:采用kudu数据库,kudu支持主键更新操作
一般业务系统删除数据,业务库逻辑删除,即打删除或者无效标签字段,
但DBA物理删除这么办?下游无感的,这样ODS以及数仓永远存在这条数据了。
DSG/canal :用来监控数据库数据的变化,从而获得新增、修改、删除等的数据。
方案一:DSG同步到另一个ORACLE数据库,再sqoop从数据库抽取,这样包含增删修改的数据,可解决数据删除问题
方案二:DSG/canal +Kafka + Spark解析数据+Hive、Kudu
数据同步任务是针对不同数据看系统之间的数据同步问题而创建的一些列周期调度的任务。在代行的数据调度工作台上,每条会运行大量的数据同步任务。针对数据同步任务,一般首先需要设定首轮同步的线程数,然后运行同步任务。这样的数据同步模式存在以下几个问题:
阿里集团的解决思路:通过目标数据库的元数据估算同步任务的总线程数,以及通过系统预先定义的期望同步速度估算首轮同步的线程数,同时通过数据同步任务的业务优先级决定同步线程的优先级,最终提升同步任务的执行效率和稳定性。
通常把从源系统同步进入数据仓库的第一层数据成为 ODS层数据。
数据漂移:指 ODS 表的同一个业务日期数据中包含前一天或后一天凌晨附近的数据,或者丢失当天的变更数据。
由于 ODS 需要承接面向历史的细节数据查询需求,这就需要物理落地到数据仓库的 ODS 表按时间段来切分进行分区存储;(通常的做法是按某些时间戳字段来切分,而实际上往往由于时间戳字段的准确性问题导致发生数据漂移)
问题:通常,时间戳分为四类(根据其中的某一个字段来切分 ODS 表,导致产生数据漂移):
理论上以上几个时间应该是一致的,但实际生产中,这几个时间往往会出现差异,可能的原因有一下几点:
数据漂移场景:
两种解决方法:
(1)多获取后一天的数据
(2)通过多个时间戳字段限制时间来获取相对准确的数据
例:淘宝交易订单的数据漂移;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。