sqlserver大数据量update_浅谈大数据存储策略

本文介绍了大数据的抽取策略,包括全量抽取和增量抽取,并详细阐述了四种存储策略:覆盖、更新、追加和拉链。拉链表在数据量大但变化少的情况下尤为适用,能有效节省存储空间并便于处理历史状态。理解这些策略对于数据分析师和大数据工程师深入理解数据至关重要。
摘要由CSDN通过智能技术生成

03f85883c3f965e36fba4a96c1dc7b4d.png

初入职场的数据分析师、大数据工程师或者之前没有接触过数据类职位的伙伴,可能会对日常使用中的全量表、增量表、切片表或拉链表的概念感到模糊。其实,如果有了解数据抽取和存储的相关知识,很快就会清楚这些表,并且能加深对数据的理解,这里简单介绍大数据的抽取策略和存储策略。
数据的抽取方式主要分为全量抽取和增量抽取,全量抽取指抽取截至到当天当前状态下的所有数据,或者说每天抽取一份到目前为止最新的数据。增量抽取指只抽取当天新增或更新的数据,没有变化的数据不会被抽到,一般通过update_time判断;如果是流水表的话,也可以通过与上次记录的最大id号比较来判断增量。有些时候,考虑到抽数性能,也会考虑增量和全量混合抽取的方式,比如:拉链表采用update_time抽取新增和更新的数据,删除的数据则通过抽取全量id与昨天数据的id比较来实现。

679e0cf080c10030bb83e1adf204eb9d.png
数据库数据情况

7432517f75bcd46001e43d7d6f3782d7.png
全量抽取方式分别在3天的抽取情况

82882453b9dd248d26c0f9e45b5e0ff8.png
增量抽取方式分别在3天的抽取情况


关于数据抽取的内容比较多,比如:在什么时间点抽取、怎么保证不会漏抽多抽,怎么解决数据漂移问题、业务上要不要做熔断操作,数据日期与业务日期的关系等等,这里目前仅介绍两种数据抽取方式。抽取的数据当然是要被存储起来的,存储策略有以下四种:拉链、追加、更新和覆盖。
覆盖:
指每天删除目标表内所有的数据,然后插入当前抽取的全量数据,整个过程先后执行了delete和insert两个操作;
更新:
将目标表内每条记录的每个字段与当前抽取的全量数据进行比较,如果字段发生变化,则更新此字段,如果当前抽取的记录不在目标表内,则将新增记录插入到目标表当中,整个过程存在insert和update两个操作;
追加:
结合数据抽取方式,可以划分为全量追加和增量追加,形象一点可以理解为堆积木。全量追加,即全量抽取截至到目前的所有数据并插入到目标表,此时的目标表通常被称为快照表或者切片表。增量追加,即增量抽取数据并插入到目标表,目标表通常被叫做增量表。需要注意的是增量追加数据的去重问题,留意表中是保留id号相同的增量历史数据,还是只保留id号与原来相同的最新增量数据。
拉链:
通过类似start_date和end_date这样反映日期跨度的字段,来表示数据在此日期范围内没有发生变化。如果数据发生更新/新增操作,则重新插入更新/新增的记录,但是要通过对start_date和end_date两字段进行开链闭链操作,以保证原先被更新的记录不会反映在今天之后的日期范围内,新插入的记录不会反映在昨天之前的日期范围内。如果原先的数据被删除,被删除的记录同样不能反映在今天之后的日期范围内。拉链操作产生的目标表,通常被叫做拉链表或历史表。
拉链表通常适用于数据量比较大但是每天变化和新增的数据量却很少的情况,比如,数据总量在1000w条左右,但每天变化和新增的记录仅10w条。所以,拉链表既能体现数据的历史状态,又能最大程度地节省存储,在提取某些日期跨度较大的复杂指标或特征的时候,相比于切片表还可以提高性能。但是,拉链表维护起来特别麻烦!
以上是大数据抽取和存储的一些基础知识,在实际提数和开发中,结合业务内容多加思考,对数据的理解会更好一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值