数据增量接入(存储)方案
1前言
在数据仓库中,数据的存储方式一般有四种:全量表、增量表、快照表和拉链表,如下表。
全量表
增量表
快照表
拉链表
数据
包含到前一天的全量数据
前一天的增量数据(和状态发生变化的数据)
包含到前一天的全量数据
前一天的增量数据和状态发生变化的数据
分区
不分区
按天分区
按天分区
按天分区不分区
大数据平台支持增量表和快照表两存储方式。这里将重点讨论增量表存储方式。1。1现状
目前大数据能力平台的增量接入功能较弱,基本不能在实际项目中使用。经测试和验证,主要有以下几个缺点:增量字段匹配少
如下图所示,增量字段必须是日期类型,且日期格式只有2种。在实际的项目中,增量字段有可能字符型,且格式有多种,如yyymm、yyyymmdd。。。。。。
增量数据初始化方案有问题
大数据平台增量接入功能在第一次数据接入时,会进行数据的初始化,但目前的初始化方案很粗糙,即:将所有的存量数据写入一个分区。如下图所示。
而合理的初始化结果应该是根据增量字段来精准分区,如下图所示。
接入策略少,不支持函数的使用
平台的增量接入依赖增量字段,如果某个业务系统没有增量标识字段,那么增加接入就无法实现。
有些业务表会有〔创建时间〕和〔更新时间〕,通常情况下会以〔更新时间〕字段做增量标识,如果〔更新时间〕为空,则使用〔创建时间〕字段做增量标识,即函数nvl(更新时间,创建时间)或者其他函数,但平台不支持这种使用方法。
小结:基于上面的3个缺点,在项目中很少使用增量接入功能,数据接入基本上采用的都是全量快照表的方式存储数据,增量接入功能还需要产品和开发持续完善。1。2后果
由于增量接入存在的缺点,在项目实施过程中,数据接入基本采用的都是全量快照表的存储方式。而这种接入方式会造成如下后果。数据重复计算和处理,浪费宝贵的资源
以数据稽核为例(转换、开发、导出。。。。。。),每次稽核一个批次的数据,每个批次都会稽核在上一个批次中已经稽核过的数据。如下图,后续的所有数据计算都会存在重复计算。
节省宝贵的存储空间
如下图所示,增量存储表的数据量明显少了很多。增量接入获益的不仅仅是SRC层,后面的ODS、DW、APS每一层的数据存储量都会相应的减少。
2增量策略
基于前期的项目总结,增量接入有四种策略,每种策略对应不同的业务表应用场景,如下图所示四种策略。大数据平台应根据业务表的实际情况,提供四种接入方法。
2。1有时间戳
这里的有时间戳是指业务表字段中有日期格式(日期或字符串类型)的增量字段来标识数据的创建时间或者更新时间,并不是所有的日期格式的字段都可以做增量标识字段。如下图所示,〔创建时间〕和〔最后修改时间(更新时间)〕,可以作为增量标识字段,而〔出生日期〕字段不能作为增量标识字段。
在业务系统中,有的表只有〔创建时间〕字段,有的表有〔创建时间〕和〔更新时间〕字段。这2种情况在增量存储时,数据会有些细微的差别,可根据具体的应用场景选择不同的存储策略。创建时间更新时间
如果既有〔创建时间〕又有〔更新时间〕字段,在做增量接入时,增量标识字段就有2种选择。〔创建时间〕作增量标识,如下图所示,增量表中未能反映出〔订单状态〕更新的数据。
2。〔更新时间〕作增量标识,如下图所示,新增数据和状态发生改变的数据都写入到了增量表。其中,存在订单ID相同的数据(同一个数据分区理论上不会有相同订单ID),但不是重复数据(因为状态不相同),亦是合理的数据。订单ID相同的数据反映了订单的历史轨迹(实现了拉链表的功能);如果想要统计订单总数,则根据订单ID去重统计即可,在其他具体应用时,取订单ID最新的状态数据即可(不要纠结重复不重复,针对具体场景来应用数据就行了)。
小结:在实际的项目应用中,优先选择〔更新时间〕字段作增量标识。如果用户需求不关系数据的状态变化,使用〔创建时间〕字段做增量标识即可。创建时间
参考章节《创建时间更新时间》2。2无时间戳
无时间戳指的是业务表中没有增量字段记录数据的创建更新时间,这种业务表实现增量接入在技术上稍麻烦些。在性能上要比有时间戳的要慢些,会消耗更多的计算资源(总有人纠结这个)。但这种资源消耗是可接受的,因为如果是全量快照的方式接入的话,后续的每一层、每种计算转换稽核都是基于全量数据计算的,消耗的资源会更多(每次处理全量的数据比处理增量的数据更耗资源)。有主键
如果业务表有主键字段,就可以根据主键值相同,对其他非主键字段(一个或多个)的值进行比对,来判断数据是更新数据还是新增数据。如下图所示,增量表的数据会根据指定的对比字段不同而不同。
无主键
没有主键的增量接入难办且不灵活,会改变表结构,需要手动给每一条数据增加主键值,主键值等于所有字段相加的HASH值。如下图所示,标红的与标蓝色的的数据因为内容完全一样,所以它们在2个批次的HASH主键值是一致的。
有了HASH主键以后,就可以根据有主键的方式对数据进行增量接入了(只要HASH主键变了,就是更新或者新增数据),如下图所示。
一般不建议采用这种增加HASH主键的方式,基本上99的业务表都会有主键。不到万不得已,不要采用这种方法。2。3CDC
CDC,ChangeDataCapture,变更数据获取的简称,使用CDC我们可以从数据库中获取已提交的更改并将这些更改发送到下游,供下游使用。这些变更可以包括INSERT,DELETE,UPDATE等。常用的第三方cdc工具有canal、debezium等。
如果使用cdc中间件,可以忽略上面的场景。使用cdc实时数据同步:比如我们将mysql库中的数据同步到我们的数仓中。
3技术实现
增量策略中的四种方案,目前大数据平台还未能实现(不知道会不会去开发实现),目前可以采用一种折中的方案实现,即:SRC数据还是采取全量快照的方式进行接入,然后再通过自定义代码的方法处理SRC层最新批次的全量数据,找出增量数据写入ODS层,这样后续的每一层数据都是增量分区的数据,如下图。
4缺点
如果有数据在业务系统中已经删除了,那么增量存储的表中还是会存这些数据的。严格来说,这个缺点不是增量存储的缺点,而是Hive的缺点,因为Hive的不可更新机制,导致了历史数据不能删除。如果采用MPP数据库(Greenplum、Vertica)则不会存在这个缺点。
2020上半年酒店经理工作总结范文【酒店经理上年工作总结一】前厅经理转眼间时间过得真快,20年的上半年过去。很感谢公司能够给我这个晋升的平台,从一名基层员工到一名领班到一名部长。以下是我20年的上半年工作……
荷花的花语有什么含义荷花又名莲花、水芙蓉等,属睡莲目,莲科多年生水生草本花卉。那你了解它的花语吗?下面由品学网小编给大家带来的荷花的花语有什么含义,希望各位客官喜欢!荷花的花语清白、高尚而谦……
关于基层浅议信息调查报告【摘要】作为基层xxx信息调研工作的参与者,就信息调研应具备的要件谈几点认识,以期达到抛砖引玉之效果。随着基层xxx信息调研意识的普遍增强,信息调研质量和水平有了明显提升……
2021年合伙养殖合同范本一、我国各种小型企业组织的种类及特点,主要有个体工商户、合伙企业、有限责任公司。个体工商户、合伙企业的特点是设立比较简单,缺点是投资人或股东要对企业的债务承担无限连带责任,《合……
竞聘物业部组长演讲稿范文尊敬的各位评委,各位领导,各位同仁:你们好!富兰克林有句名言:推动你的事业,不要让你的事业来推动你。今天,我正是为推动我的事业而来。首先做一下自我介绍:我叫,……
职业病防治法宣传周活动总结20xx年的4月25日至5月1日是职业病防治法宣传周活动。以下是品学网小编为大家精心搜集和整理的职业病防治法宣传周活动总结,希望大家喜欢!职业病防治法宣传周活动总结(一)……
体育协会成立领导讲话体育是人类社会文明进步的体现。尤其是随着社会经济的发达、现代体育的勃兴,体育已不仅是身体教育,同时也具备了竞技、休闲和美育的性质。下面是品学网小编给大家整理的体育协会成立领导讲……
大雪节气,养生做好这三件事武汉晚报12月7日讯(通讯员贝兰)今天是大雪节气。大雪进补,来年打虎。大雪节气到来,标志着仲冬时节的正式开始,同时也是一年的重要养生时刻。湖北省第三人民医院(湖北省中山医院)张……
20连胜有多难?NBA仅5支球队做到过,30连胜更只有唯一的连胜非常能够提振球队的士气,让球队建立起赢球文化,但若想连胜多场,甚至连赢20场,就需要非常强大的球队实力了,没有这点,根本做不到连胜20场,在NBA历史上,有几支球队,他们拥……
竹林种药效益翻番竹乡桃江推动林下经济多元化发展湖南日报3月22日讯(全媒体记者张航通讯员黄霖昌勇刘俊)这片基地每年亩产黄精1500公斤、竹笋1000公斤、竹材500公斤,每亩毛收入约3万元。连日来,桃江县三堂街镇合水桥村笋……
微信收到的红包在哪里?怎么使用?写给中老年人的详细教程春节期间,不管是家里的微信群,还是亲朋好友,都发了不少红包,而随着智能手机普及到中老年朋友群体当中,中老年朋友也热热闹闹的和孩子们一起参与了抢红包,但是抢到的微信红包存在了哪里……
海南花团锦簇赴一场春日浪漫来源:【人民网】游客在海口三角梅共享农庄内盛开的三角梅前拍照。王实摄市民游客趁着春色正好,来到三亚市吉阳区博后村玫瑰谷踏青赏景,畅享玫好时光。人民网牛良玉摄文……
沙漠中神奇而奇葩的建筑,像是盛开在沙漠中的莲花,游客络绎不绝沙漠中神奇而奇葩的建筑,像是盛开在沙漠中的莲花,游客络绎不绝在技术不断发展的同时,人们的思想观念也在发生着巨大的变化,尤其是大家对于一些事情的认知,想法都各有不同的,像一……
关于乘火车出行的礼仪有哪些?伴随着铁路的发展及优质快捷的服务,人们的出行越来越方便,相应地文明乘火车礼仪也在发展。那么,乘火车出行有那些的礼仪呢?乘火车旅行,行李最好是轻便的,较大的行李要放在行李架……
职校班主任学期工作总结班主任在学校的教育教学中担任着重要角色,不仅承担着教学任务还承担着管理任务,而这一角色也越来越受到各方的重视。如何作职校班主任学期工作总结?本文是品学网小编整理的职校班主任学期……
装机人员报告范文辞职报告是个人离开原来的工作岗位时向单位领导或上级组织提请批准的一种申请书。下面小编为大家提供关于装机人员报告范文,欢迎大家阅读借鉴。尊敬的:你好,很遗憾我在这个时……
儿童节快乐国旗下讲话6篇六一是属于孩子们的盛大节日,祝愿孩子们六一儿童节快乐!本文是品学网小编为大家整理的儿童节快乐国旗下讲话,仅供参考。儿童节快乐国旗下讲话篇一:亲爱的少先队员、同学们:……
足球赛策划书一、目的意义在学院迎来新生之际,为增进我院新生与教职工、同学们的友谊,丰富大学生活同学们的课余生活,活跃校园文化气息,提高同学们的综合素质,培养积极向上的进取精神,打造一……
电大课程学习总结1课程说明生产活动是人类最基本的活动,世界上绝大多数人都在从事生产活动。有生产活动就有生产管理。人类最早的管理活动就是对生产活动的管理,20世纪初的科学管理运动也始于生产……
开展爱国卫生月活动简报开展爱国卫生月活动简报1:今年4月是全国第29个ldquo;爱国卫生月rdquo;,为全面落实大卫生、大健康理念,提高全民文明卫生素质,形成新时期爱国卫生运动新高潮,近日……
机关工勤人员工作总结工作总结以年终总结、半年总结和季度总结最为常见和多用。就其内容而言,工作总结就是把一个时间段的工作进行一次全面系统的总检查、下面是小编整理的机关工勤人员工作总结,欢迎来参考!……
第三方付款协议范本第三方付款协议书电子商务的高速发展以及网络购物的逐渐流行,第三方付款的支付方式很大程度上解决了人们网上金融交易的问题。那么第三方付款协议书怎么写呢?以下是在品学网小编为大家整理的第三方付款协议……
中秋节主持稿时光的车轮碾过一道深深的痕迹,留下金秋的收获。很开又要中秋节了,今天公文小编收集整理了中秋节主持稿,希望对您有帮助!篇一:中秋节主持稿第一部分:开场白女:尊敬的公司……
企业对外合资合作情况的调研报告企业对外合资合作情况的调研报告(一)最近,xx县工商局严格按照《关于对我县企业对外合资合作工作进行专题调研的通知》(高讨论组发〔2019〕5号)的要求,结合工商职能,就我……