数据仓库——原理+实战(一)

news2024/11/25 12:37:58

 一、数据仓库概述

1. 数据仓库诞生原因

(1)历史数据积存(存放在线上业务数据库中,当数据积压到一定程度会导致性能下降,所以需要将实用频率低的冷数据转移到数据仓库中)

(2)企业数据分析的需要(业务数据库中的数据实时更新,企业各个部门自己建立独立的数据抽取系统,导致数据不一致;数仓面向数据分析,业务数据库面向业务系统)

2. 数据仓库概述

(1)数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合。

(2)主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理,进而
辅助決策,为管理者、企业系统提供数据支持,构建商业智能 

面向主题:为数据分析提供服务,根据主题将原始数据集合在一起   

集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程

非易失:保存的数据是一系列历史快照,不允许被修改,只允许通过工进行查询、分析

时变性:数仓会定期接收、集成新的数据,从而反映出数据的最新变化

3. 数据仓库建设方案 

(1)传统数据仓库(扩展性有限,热点问题)

由关系型数据库组成MPP(大规模并行处理)集群;hash算法;分库分表

(2)大数据数据仓库

利用大数据天然的扩展性(分布式存储,包括分布式计算,并添加了SQL的支持),完成海量数据的存放,但是在数据量较少的时候后计算速度较慢。解决了传统数据仓库扩展性和热点问题。

4. MMP架构

 架构方式有三种:share everything; share disk; share nothing

>>MMP架构缺点

(1)由于这种非共享架构,存储位置不透明,通过Hash确定数据所在的物理节点,查询任务在所有节点均会执行;

(2)并行计算时(在整个协同运算的过程中),单节点瓶颈(单个节点运行缓慢的时候)会成为整个系统短板,容错性差;随着节点总数的增加,集群规模的增大,节点故障的数量也会增加,瓶颈将会越发明显,这也是MMP数据库扩展性较差的根本原因;

(3)MMP数据库致力于实现分布式事务(为了保证数据的一致性),但是在分布式事务中,实现这种事务之后,一定会影响它的扩展性。

5. 分布式架构

(1)分布式架构大数据中常见的技术架构,也称为Hadoop架构/批处理架构;

(2)各节点实现场地自治(可以单独运行局部应用,MMP不可单独运行局部应用,只能作为整体对外提供服务),数据在集群中全局透明;

(3)每台节点通过局域网或广域网相连,节点问的通信开销较大,在运算时致力减少数据(移动计算而非移动数据);

(4)优先考虑的是P(分区容错性,数据存储到集群会被拆分成多个分片,每个分片又会保存多个副本,解决了单点故障问题),然后是A(可用性),最后再考虑C(一致性)。

数据量低的时候用MMP数据库,数据量一但达到某个量级,推荐使用分布式架构,其吞吐量大的优势就会显示出来。 

6.  MPP +分布式架构

(1)数据存储采用分布式架构中的公共存储,提高分区容错性

(2)上层架构采用MPP,减少运算延迟;

(3)相较于其他大数据产品来说,延迟较低,运行速度较快。在实时的流数据处理中,经常被采用;相较于传统的MMP架构数据库,扩展性有了进一步提升。

总结:MMP数据库适用于中等规模的数据,延迟较低,SQL支持率高;分布式批处理这种架构更适合处理海量数据的批处理计算,其吞吐较高,运算速度快,扩展性强。

 二、架构

1. 架构图

2. ETL流程(extract+transform+load)

(1)数据抽取 (Extraction)

抽取的数据源可以分为结构化数据、非结构化数据、半结构化数据。结枸化数据一般采用JDBC、数据库日志方式(推荐方式,非半结构化数据会监听文件

(2)抽取方式

数据抽取方式有全量同步、增量同步两种方式:

        - 全量同步会将全部数据进行抽取,一般用于初始化数据装载

        - 增量同步方式会检测数据的变动,抽取发生变动的数据,一般用于数据

 (3)数据转换 (Transformation)

数据转换要经历数据清洗和转换两个阶段:

  • 数据清洗:主要是对出现的重复、二义性、不完整、违反业务或逻辑规则等问题的数据进行统一的处理
  • 数据转换:主要是对数据进行标准化处理,进行字段、数据类型、数据定义的转换

结构化数据在转换过程中的逻辑较为简单,非|半结构化数据的转换会较为复杂。

(4)数据加载(Loading)

将最后处理完的数据导入到对应的目标

3. 数据积存

(1)操作数据层 (ODS)

        数据与原业务数据保持一致,可以增加字段用来进行数据管理(实际上属于原数据的扩充集)。存储的历史数据是只读的,提供业务系统查询使用。

4. 数据分析

(1)数据明细层(DWD)

 在ODS层下有多张表,将其汇总成一个表,得到标准数据,分析运算效率变高,接下来进行分析运算。

(2)数据汇总层(DWS)

        数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表模型。脱离了三范式(存储模型并非3NF),而是注重数据聚合,复杂查询、处理性能更优的数仓模型,如维度模型。

        在大数据的数仓中,主要以大宽表为主;在传统数仓中会对汇总表建立一些模型,如维度模型。对DWS这一层的设计,是数据仓库的核心,因为数据仓库的面向主题,包括模型设计都是在DWS层中进行。目的是为了数据分析提供一个更优异的性能。

(3)数据应用层(ADS层)

        对DWS层数据进行分析完成之后得到的结果表就存在ADS层数据中,ADS层保存的数据要提供给外部系统进行使用。

        由于数据仓库更注重分析和计算,与外部系统的查询和交互效率低,如果让外部系统直接对接数据仓库的话,大量的查询落进来,全部转换成批处理任务,这种频繁的查询会给数仓带来压力。所以使用ADS层来专们存储数据结果,为外部系统提供访问接口,提供更快的查询和交互速度。 

三、建模方法

1. 基本概念(OLTP和OLAP)

        ROLAP依赖于模型设计;MOLAP和HOLPAP主要依赖于数仓产品的选型,更依赖于产品的底层设计。MOLAP主要存数据结果,一般不存明细数据(表数据);HOLAP底层是关系型的,所以可以存储明细数据、表的原数据,将预计算结果保存在上层,如果SQL在上层中查不到结果,也可以在底层中查询。

2. ROLAP

最常用的是维度模型,适合互联网这种业务变动比较频繁的数据。其他三种适合比较成熟的数据仓库,数据的表结构变动不大。

维度模型

(1)维度模型中,表被分为维度表、事实表,维度是对事实的一种组织;

(2)维度一般包含分类、时间、地域等

直接对事实表进行聚合即可。在企业中这种情况比较少,可能会有多层的维度, 

当业务规模逐渐增长的情况下,出现的维度共用,形成了星座模型。 

宽表模型

宽表模型是维度模型的行生,适合join性能不佳的数据仓库产品——大数据数据仓库,是维度模型的衍生,在大数据产品这块的妥协。宽表模型将维度元余到事实表中,形成宽表,以此减少join操作。

  

3. MOLAP

MOLAP系统建模方法

  • MOLAP将数据进行预结算,并将聚合结果存储到CUBE模型中;
  • CUBE模型以多维数组的形式,物化到存储系统中,加快后续的查询,以空间换时间,需要大量的存储空间;灵活性较差,只存储预计算结果,不存储原始数据;
  • 生成CUBE需要大量的时间、空间,维度预处理可能会导致数据膨胀

MOLAP是面向ADS层的,加快查询速度;ROLPAP是面向DWS层的。 

4. 多维分析

 OLAP多维分析

  • OLAP主要操作是复杂查询,可以多表关联,使用COUNT、SUM、AVG等聚合函数
  • OLAP对复杂查询操作做了直观的定义,包括钻取、切片、切块、旋

 四.  最佳实践

1. 表的分类

  • 事实表
  • 维度表
  • 事务事实表
  • 周期快照事实表
  • 累积快照事实 累计快照事实的三种实现方式

2. ETL技巧/策略

(1)全量同步:
•数据初始化装载一定使用全量同步的方式
•因为业务、技术原因,使用全量同步的方式做周期数据更新,直接覆盖原有数据即可

(2)增量同步

针对结构化数据:对数据库日志进行抽取,Ogg或者CDC;或者JDBC方式,用SQL对时间字段进行筛选数据;

针对非|半结构化数据:一般的抽取工具自带实时监控。

  • 传统数据整合方案中,大多采用merge方式 (updatetinsert)
  • 主流大数据平台不支持update操作,可采用全外连接+数据全量覆盖方式
    一如果担心数据更新出错,可以采用分区方式,每天保存最新的全量版本,保留较短

3. 任务调度

常见调度工具: Azkaban和Oozie 

五、 项目实战

>> 项目背景

  • 某电商企业,因数据积存、分析需要,筹划搭建数据仓库,提供数据分析访问接口
  • 项目一期需要完成数仓建设,并完成用户复购率的分析计算,支持业务查询需求

>> 复购率计算

  • 复购率是指在一段附间问隔内,多次重复购买产品的用户,占全部人数的比率
  • 统计各个一级品类下,品牌月单次复购率,和多次复购率

>> 数据表 

  

5.1 架构设计 

1. 虚拟机环境搭建

2. Xshell下载并与虚拟机连接

3. 脚本准备

4. 大数据集群的一键安装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/668008.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++11】线程库

文章目录 1. get_idthis_thread 2. 锁1. 为什么要使用锁?2. 锁的使用并行 与 串行递归锁 recursive_mutextimed_mutexlock_guard 与 unique_lock 3. atomic4. 条件变量线程等待线程唤醒条件变量的应用问题1:如何保证 v1先运行,v2阻塞&#xf…

python的tqdm一些操作

主要参数 iterable: 可迭代的对象, 在手动更新时不需要进行设置 desc: str, 左边进度条的描述性文字 total: 总的项目数 leave: bool, 执行完成后是否保留进度条 file: 输出指向位置, 默认是终端, 一般不需要设置 ncols: 调整进度条宽度, 默认是根据环境自动调节长度, 如果设置…

VUE 2X 事件处理 ⑤

目录 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ V u e j s Vuejs Vuejs E v e n t j s Eventjs Eventjs总结 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ ⡖⠒⠒⠒⠤⢄⠀⠀⠀…

MySQL面试题--聚簇索引,非聚簇索引,回表查询

目录 概念 聚集索引选取规则: 面试回答 大纲 回答 概念 分类 含义 特点 聚集索引(Clustered Index) 将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据 必须有,而且只有一个 二级索引(Secondary Index) 将数据与索引分开存储,索引…

进程的引入(操作系统)

目录 1、进程的概念 2、进程状态及状态转换 (1)进程的状态 (2)状态的转换 3、进程控制块(PCB) 4、进程的组成和上下文 5、进程的队列 6、进程的类型和特征 7、进程间相互联系与相互作用 8、进程的…

pcl1.12.1重新安装boost库

因为我的库有问题,直接使用pcl1.12.1的时候报错,于是重新安装boost库 1.78.0地址(因为打开pcl1.12.1的安装目录,发现boost库是1.78.0,所以去官网找到对应的版本进行安装) Index of main/release/1.78.0/sourcehttps://boostorg.j…

OpenHarmony端云一体化应用开发快速入门练习(中)登录认证

一、登录认证手机 可以在应用中集成手机帐号认证方式,您的用户可以使用“手机号码密码”或者“手机号码验证码”的方式来登录您的应用。 (一)前提条件 需要在AGC控制台开通认证服务。 需要先在您的应用中集成SDK。 (二&#xff…

安全测试-优秀测试工程师必备的4项安全测试方法

用您5分钟时间阅读完,希望能对您有帮助! 一.安全性测试 1、安全性测试方法 测试手段可以进行安全性测试,目前主要安全测试方法有:   1)静态的代码安全测试 主要通过对源代码进行安全扫描,根据程序中数…

网站开发实录(四)个人博客建站

一、前期准备 由于时间问题,已经准备好了服务器以及域名 服务器平台为“雨云”(朋友那里嫖来的),域名购买平台为阿里云(零元购来的)。接下来我将以此为例介绍个人博客建站过程,顺带记录我的第二…

原生微信小程序全流程(基础知识+项目全流程)

小程序的基本使用 小程序文件类型 小程序主要提供了 4 种文件类型: 类型名称作用是否必须存在.wxml用于页面的布局结构,相当于网页中 .html 文件是.wxss用于页面的样式,相当于网页中的 .css 文件否.js用于页面的逻辑是.json用于页面的配置…

最新Python3.11.4版本和PyCharm开发工具安装详细教程

Python3.11.4版本安装详细教程 1. 官网下载Python安装包1.1 进入官网1.2 查看系统类型1.3 选择与主机位数相同的安装程序 2.运行安装程序2.1 Customize installation(自定义安装)2.2 Optional Features(可选功能)2.3 Advanced Opt…

synchronized 底层实现原理、重量级锁、轻量锁、锁膨胀、锁自旋、偏向锁详解

目录 0、基础知识:Java对象的存储格式 1. synchronized底层:Monitor(重量级锁):被锁的对象与Monitor的关系 2. synchronized底层:轻量级锁优化,栈帧与被锁的对象的关系 3. 锁膨胀&#xff…

【arduino】HC-SR04超声波测距模块的驱动与使用

arduino超声波测距模块的驱动与使用 什么是超声波测距模块参数:引脚定义电路超声波传感器的控制时序驱动代码接线代码工程文件超声波是振动频率高于20KHZ的机械波。它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播等特点应用广泛,适合大学生、工程师、技…

精简版Git基础操作(快速上手)

文章目录 前言一、初始化二、新建仓库三、工作区域和文件状态四、添加和提交文件五、回退到之前版本六、查看文件差异七、从版本库中删除文件八、.gitignore忽略文件九、github远程仓库--SSH配置和克隆仓库十、关联本地仓库与远程仓库十一、分支十二、解决合并冲突回退和rebase…

Go mmap 文件内存映射

Go mmap 文件内存映射 mmap是个很好用的内存映射工具,它可以将文件映射到内存中,可以方便地操作文件。使用mmap的优点是: 内存映射可以使得读写文件的性能更高,因为操作的是内存而不是磁盘。可以方便地操作文件,不需…

语音录音转文字的方法使用过吗

大家好!今天我要给你们介绍一个实用的功能,那就是录音转文字啦!它可以把录音中的声音内容快速且准确地转换成文字格式,让我们在工作和学习中变得更加高效和便利。我们在会议记录、采访访谈、语音笔记等领域,可以很大地…

自动化测试之稳定性测试的设计

目录 前言 压力Stress 随机Randomness 并发Concurrency 交互Interaction 时间Time 总结: 前言 稳定性测试是自动化测试领域最为核心的内容之一。稳定性测试设计应该考虑哪些方面?如何在有限的样本上最大化测试产出?笔者结合自动化的一…

Vivado 下 呼吸灯实验

目录 Vivado 下 呼吸灯实验 1、实验简介 2、实验环境 3、实验任务 4、硬件设计 5、程序设计 5.1、呼吸灯代码如下: 5.2、添加约束文件 .xdc 5.3、下载验证 Vivado 下 呼吸灯实验 呼吸灯最早由苹果公司发明并应用于笔记本睡眠提示上,其一经展出&…

2023年6月GESP能力等级认证C++二级真题

2023-06 GESP二级真题 题数:27 分数:100 测试时长:90min 一、单选题(每题 2 分,共 30 分) 1. 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执…

电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume

1、数据仓库概念 数据仓库( Data Warehouse ),是为企业制定决策,提供数据支持的。可以帮助企业,改进业务流程、提高产品质量等。 数据仓库的输入数据通常包括:业务数据、用户行为数据和爬虫数据等。 业务数…