[浅谈]数据库与数据仓库.ETL与ELT流程

175 阅读4分钟

今天来简单谈一下数据库与数据仓库的关系,以及ETL流程和ELT流程的不同.

数据库与数据仓库,ETL与ELT概述.png

数据库

用户的日常业务(注册账号,浏览商品,加购物车,下单购买等等)行为会产生数据,这些数据会存储在数据库中. 数据库也会即时反馈用户的各类信息(下单的订单信息,用户信息,商品信息等等).

  • 面对的是用户,需要保证时效性,数据安全性,数据完整性,以及支持并发用户(多个用户同时浏览)的要求.
  • 储存的数据结构复杂,但数据相对简单(因为要求高时效性),通常都是直接捕获的数据,符合业务应用的需求即可
  • 数据库常储存在能快速应对数据的 增删改查 的管理系统中.

数据仓库

老板为了能更好地赚钱,需要分析日常业务产生的各种数据.而如果直接在数据库中分析,会给服务器压力,有可能对用户的体验(来送钱的人)不太友好.所以就想到了数据仓库的做法.

  • 面向的是数据的需求分析,需要能够进行分析计算,而又不影响用户体验.
  • 储存的数据是针对分析需求在数据库中提取出来的初始数据,然后进行清洗过滤过后的数据,最后进行分析计算后的数据.
  • 为了对数据进行分类,所以在数据仓库中建立3个层(类似于新建文件夹)分别如下:
  1. 源数据层(ODS层):用于存放与分析需求有关联的未经过清洗的原始数据.(就是从数据库中提取来的.)
  2. 数据仓库(DW层):也叫细节层,用于存放来自ODS层,经过清洗过后的数据.
  3. 应用层(DA或者APP层):用于存放来自DW层,经过针对性分析计算后的数据.可以直接用于制作可视化图表等.这里的数据已经勉强可以给老板看了(最好还是不要).
  • 数据仓库的分层可以当作是一种处理数据的方法,并不是固定的.(就像每个人电脑的文件夹分类都不同,这里只是类似提供一种常用比较有效的方法.)
  • 数据仓库常储存在能应对 海量数据分析计算 的文件系统中.

数据库与数据仓库的关系

  1. 两个都是存数据的,本质上没什么区别.数据仓库的数据主要在数据库中提取,数据库的数据主要来源于用户,商品等.
  2. 数据库是动态的,用户产生业务就会有更新.数据仓库相对静态的,通常是定期更新.
  3. 数据库要求响应速度快(数据即拿即用),而数据仓库的响应时长一般都比较长(因为要进行海量数据的分析计算.)
  4. 数据库是为了应对用户业务问题,而数据仓库是为了应对公司发展问题.

ETL 和 ELT流程的区别与应用

  • E(Extract 提取):从各个数据中提取需要分析的指标数据.
  • T(Transform 转化):转化格式,去除重复数据,空数据替换等
  • L(Load 加载):导入到数据仓库中

ETL特点(就是上图下方灰色箭头的流程):

  1. 传统数仓中采用ETL流程,该流程适合业务比较固定的分析场景.
  2. 数据结果基本没有变化的,每天的需求一致.
  3. 可以将固定的业务流程自动化,可以每天定时执行固定代码即可完成.(人工智能模型训练)

ELT特点(就是上图上方绿色箭头的流程):

  1. 适合业务需求经常变动的场景.
  2. 将所有的原始数据全部储存到数据储存库(换了个名字而已,实际和数据仓库的本质一样,都是存放数据.)
  3. 在进行业务需求分析计算时,同时进行数据的清洗.

总结

  • 其实数据库,数据仓库都是用于存放数据,只是实际用途不同,所以叫法不同.本质上就像电脑上的文件夹,只是有些用来存视频,有些用来存文件.-
  • 你甚至可以把数据仓库说成"数据库之分析XX需求专用",而 ODS层说成"存放分析XX需求的初始数据"; DW层"存放分析XX需求的干净数据" ;DA层"存放分析XX需求的结果数据"就是一种分类数据的方法.
  • ETL和ELT 其实也是两种方法,就是一个顺序流程问题,在不考虑效率的前提下,你完全可以全部需求都只用其中一种甚至用你自己独有的方法,能解决需求就行.