数据仓库-相关概念

简介      

 数据仓库是一个用于集成、存储和管理大量数据的系统。它用于支持企业决策制定过程中的数据分析和报告需求。数据仓库从多个来源收集和整合数据,并将其组织成易于查询和分析的结构。

        数据仓库的主要目标是提供高性能的数据访问和分析能力,以便用户可以从不同的角度和层次上理解和解释数据。它通常包含历史数据,用于支持趋势分析和预测模型的建立。

        数据仓库不仅仅是一个存储数据的地方,它还提供了一系列工具和技术来支持数据清洗、转换、集成和加载等过程。这些过程通常被称为ETL(抽取、转换和加载),用于将原始数据从各种源系统中提取出来,并将其转换为适合分析和报告的格式。

        通过数据仓库,企业可以更好地理解自己的业务和客户行为,发现潜在的商业机会,改善运营效率,并制定更明智的决策。它在各种行业和领域都被广泛应用,例如零售、金融、医疗保健和制造业等。

OLAP和OLTP

        OLAP(联机分析处理)和OLTP(联机事务处理)是两种不同的数据处理方式,用于支持不同的业务需求。

        OLAP是一种面向分析和决策支持的数据处理方式。它主要针对复杂的查询和多维度的数据分析,并提供灵活的数据切片、钻取和汇总等功能。OLAP系统通常基于多维数据模型,例如星型模型或雪花模型,它们使用聚集技术和预计算来提供高性能的查询响应。OLAP适用于需要进行复杂数据分析、报告和决策制定的场景,如销售分析、业务智能和预测模型等。

        OLTP是一种面向事务处理的数据处理方式。它主要关注数据的录入、修改和查询等操作,以支持日常业务的进行。OLTP系统通常基于关系型数据库,用于处理实时的交易和业务流程。它的目标是提供高并发性、数据一致性和事务处理能力。OLTP适用于需要处理大量事务、保证数据准确性和实时性的场景,如在线银行交易、订单处理和库存管理等。

        总结来说,OLAP适用于复杂的分析和决策支持,强调对数据的多维度切片和聚合分析;而OLTP适用于日常的事务处理,强调对数据的录入、修改和查询操作。在实际应用中,两者通常结合使用,以满足不同层次和类型的数据处理需求。

特征

  • 面向主题: 主题是一个抽象的概念,是较高层次上 数据综合、归类并进行分析利用的抽象
  • 集成性: 主题相关的数据通常会分布在多个操作型 系统中,彼此分散、独立、异构。需要集 成到数仓主题下
  • 非易失性: 也叫非易变性。数据仓库是分析数据的平台,而不是创造数据的平台。
  • 时变性: 数据仓库的数据需要随着时间更新,以适 应决策的需要

分层

数据仓库为什么要分层

把复杂问题简单化,每一层只处理简单的任务,方便定位问题;
减少重复开发,规范数据分层,通过中间层数据能够减少重复计算,且增加计算结果的复用性;
隔离原始数据,不论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开。

DW五层架构的特点

细化DW建模,对DW中各个主题业务建模进行了细分,每个层次具有不同的功能。保留了最细粒度数据,满足了不同维度、不同事实的信息;
满足数据重新生产,不同层次的数据支持数据重新生成,无需备份恢复,解决了由不同故障带来的数据质量问题,消除了重新初始化数据的烦恼;
减少应用对DW的压力,以业务应用驱动为向导建模,避免直接操作基础事实表,降低数据获取时间;
快速适应需求变更和维度变化,明细基础数据层稳定,适应前端应用层业务需求变更,所有前端应用层模型之间不存在依赖,需求变更对DW整个模型影响范围小,能适应短周期内上线下线需求。

ODS(Operational Data Store)原始数据层

数据准备区,也称为贴源层。数据仓库源头系统的数据表通常会原封不动的存储一份,以此减少对业务系统的影响,也是后续数据仓库加工数据的来源。业务DB基本上是直接同步过来,LOG主要做结构化。

ODS层数据的来源方式

业务库
可使用Sqoop来抽取,例如每天定时抽取一次;
实时接入,考虑用canal监听MySQL的binlog;
Flume、Sqoop、Kettle等ETL工具导入到HDFS,并映射到HIVE的数据仓库表中。
埋点日志
日志一般以文件的形式保存,可以选择用Flume定时同步;
可以用Spark Streaming或者Flink来实时接入;
Kafka。
消息队列
来自ActiveMQ、Kafka的数据等。
1.3.2 建模方式及原则
从业务系统增量抽取;
保留时间由业务需求决定;
可分表进行周期存储;
数据不做清洗转换与业务系统数据模型保持一致;
按主题逻辑划分。
针对HDFS上的用户行为数据和业务数据,我们如何规划处理?

保持数据原貌不做任何修改,起到备份数据的作用;
数据采用压缩,减少磁盘存储空间;
创建分区表,防止后续的全表扫描。

DWD(Data Warehouse Detail)明细数据层

DWD是业务层与数据仓库的隔离层,主要对ODS数据层做一些数据清洗(去除空值、脏数据、超过极限范围的数据)、规范化、维度退化、脱敏等操作。

1.4.1 建模方式及原则
需要构建维度模型,一般采用星型模型,呈现的状态一般为星座模型(由多个事实表组合,维表是公共的,可被多个事实表共享);
为支持数据重跑可额外增加数据业务日期字段,可按年月日进行分表,用增量ODS层数据和前一天DWD相关表进行merge处理;
粒度是一行信息代表一次行为,例如一次下单。
1.4.2 维度建模步骤
选择业务过程:在业务系统中,挑选感兴趣的业务线,比如下单业务,支付业务,退款业务,物流业务,一条业务线对应一张事实表。如果是中小公司,尽量把所有业务过程都选择。如果是大公司(1000多张表),选择和需求相关的业务线。
声明粒度:数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别。声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度,以此来应各种各样的需求。典型的粒度声明如下:订单当中的每个商品项作为下单事实表中的一行,粒度为每次。每周的订单次数作为一行,粒度为每周。每月的订单次数作为一行,粒度为每月。如果在DWD层粒度就是每周或者每月,那么后续就没有办法统计细粒度的指标了。所以建议采用最小粒度。
确定维度:维度的主要作用是描述业务是事实,主要表示的是“谁,何处,何时”等信息。确定维度的原则是:后续需求中是否要分析相关维度的指标。例如,需要统计,什么时间下的订单多,哪个地区下的订单多,哪个用户下的订单多。需要确定的维度就包括:时间维度、地区维度、用户维度。维度表:需要根据维度建模中的星型模型原则进行维度退化。
确定事实:此处的“事实”一词,指的是业务中的度量值(次数、个数、件数、金额,可以进行累加),例如订单金额、下单次数等。在DWD层,以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的明细层事实表。事实表可做适当的宽表化处理。
注意:DWD层是以业务过程为驱动。DWS层、DWT层和ADS层都是以需求为驱动,和维度建模已经没有关系了。DWS和DWT都是建宽表,按照主题去建表。主题相当于观察问题的角度。对应着维度表。

DWS(Data Warehouse Service)服务数据层

DWB:data warehouse base 数据基础层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。
以DWD为基础,按天进行轻度汇总。粒度是一行信息代表一天的行为,例如一天下单次数。

1.5.1 功能
DWB是根据DWD明细数据经行清晰转换,如维度转代理键、身份证清洗、会员注册来源清晰、字段合并、空值处理、脏数据处理、IP清晰转换、账号余额清洗、资金来源清洗等;
DWS是根据DWB层数据按各个维度ID进行粗粒度汇总聚合,如按交易来源,交易类型进行汇合。
1.5.2 建模方式及原则
聚合、汇总增加派生事实;
关联其它主题的事实表,DW层可能会跨主题域;
DWB保持低粒度汇总加工数据,DWS保持高粒度汇总数据;
数据模型可能采用反范式设计,合并信息等。

DWT(Data Warehouse Topic)数据主题层

以DWS为基础,按主题进行汇总。粒度是一行信息代表累积的行为,例如用户从注册那天开始至今一共下了多少次单。

1.6.1 功能
可以是一些宽表,是根据DW层数据按照各种维度或多种维度组合把需要查询的一些事实字段进行汇总统计并作为单独的列进行存储;
满足一些特定查询、数据挖掘应用。
1.6.2 建模方式及原则
尽量减少数据访问时计算,优化检索;
维度建模,星型模型;
事实拉宽,度量预先计算;
分表存储。

ADS(Application Data Store)数据应用层

面向实际的数据需求,同步到关系型数据库服务RDS。该层主要是提供数据产品和数据分析使用的数据,一般会存储在ES、mysql等系统中供线上系统使用。我们通过说的报表数据,或者说那种大宽表,一般就放在这里。为应用层,这层数据是完全为了满足具体的分析需求而构建的数据,也是星形结构的数据。应用层为前端应用的展现提现数据,可以为关系型数据库组成。

1.7.1 功能
ST层面向用户应用和分析需求,包括前端报表、分析图表、KPI、仪表盘、OLAP、专题等分析,面向最终结果用户;
适合作OLAP、报表模型,如ROLAP、MOLAP;
根据DW层经过聚合汇总统计后的粗粒度事实表。
1.7.2 建模方式及原则
保持数据量小;
维度建模,星形模型;
各位维度代理键+度量;
增加数据业务日期字段,支持数据重跑;
不分表存储。
1.8 其他层
数据缓存层:用于存放接口方提供的原始数据的数据库层,此层的表结构与源数据保持基本一致,数据存放时间根据数据量大小和项目情况而定,如果数据量较大,可以只存近期数据,将历史数据进行备份。此层的目的在于数据的中转和备份。
临时数据表层:存放临时测试数据表(Temp表),或者中间结果集的表。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity - 简单音频视频

“Test_04” 音频 使用AudioTest脚本控制Audio Source组件,在脚本中声明"music"和"se"之后,在unity中需要将音频资源拖拽到对应位置。 AudioTest public class AudioTest : MonoBehaviour {// 声明音频// AudioClippublic AudioC…

Java 基础 - 反射

Java 基础 - 反射 文章目录 Java 基础 - 反射1 什么是类对象2 获取类对象的方法3 反射通用操作【重点】3.1 常见方法3.2 通用操作 4 内省 1 什么是类对象 类的对象:基于某个类 new 出来的对象,也称为实例对象。 类对象:类加载的产物&#x…

ThinkPHP5.0.0~5.0.23路由控制不严谨导致的RCE

本次我们继续以漏洞挖掘者的视角,来分析thinkphp的RCE 敏感函数发现 在调用入口函数:/ThinkPHP_full_v5.0.22/public/index.php 时 发现了框架底层调用了\thinkphp\library\think\App.php的app类中的incokeMethod方法 注意传递的参数,Refle…

期末考试发等级发成绩,就用易查分!

期末考试后,学校老师如何发布私密成绩?易查分可以轻松创建等级、成绩查询系统,让家长仅看到自己孩子成绩。 支持查询后留言反馈,电子签名确认签收等高级功能,节省老师沟通时间,大大提升工作效率。 &#x1…

小白水平理解面试经典题目LeetCode 594 最大和谐字符串

594 最大和谐字符串 这道题属于字符串类型题目,解决的办法还是有很多的,暴力算法,二分法,双指针等等。 题目描述 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在,给你一个整数数组 nums …

数据结构课程设计 仓储管理系统

仓储管理系统 【基本功能】 把货品信息表抽象成一个线性表,货品信息(包括ID、货品名、定价、数量等)作为线性表的一个元素,实现:按ID、货品名分别查找某货品信息(包括ID、货品名、定价、数量等&#xff0…

【产品设计】TO B 搜索和筛选的多种使用场景

:随着B端项目越来越普及,企业也逐渐意识到产品的视觉效果、功能的好用性及用户体验的友好性等等。 最近B端一词在互联网中的呼声很高,对于B端和C端而言,面向的用户是不一样的,常用的硬件设备也有所区分,C端…

java---多线程

多线程 线程:一个顺序的单一的程序执行流程就是一个线程。代码一句一句的有先后顺序的执行。 多线程:多个单一顺序执行的流程并发运行。造成"感官上同时运行"的效果。 并发: 多个线程实际运行是走走停停的。线程调度程序会将CPU运行时间划分为若干个时间片段并 尽可…

遍历子网所有ip地址,寻找空闲ip

在cmd窗口下输入如下代码: for /l %i in (1,1,255) do ping -n 1 -w 60 10.183.27.%i | find "Reply" >> d:\pingall27.log 得到如下结果 上图中,有reply的代表该IP已经被占用。但是观察红框中 22-->25之间缺少23 24 则说明23/24 是…

Python源码46:海龟画图turtle画坤坤

---------------turtle源码集合--------------- Python教程91:关于海龟画图,Turtle模块需要学习的知识点 Python源码45:海龟画图turtle画雪容融 Python源码44:海龟画图turtle,画2022卡塔尔世界杯吉祥物 Python教程…

90. 子集 II - 力扣(LeetCode)

题目描述 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 输入示例 nums [1,2,2]输出示例 [[],[1],[1…

生命在于学习——Firewalled学习

一、Firewalld是什么? Firewalld是一种动态防火墙管理器服务,相较于传统的静态防火墙管理工具iptables,它具有更多优势。Firewalld可以实现无需重新加载所有规则,只需保存和更新变更部分即可生效,从而减少对系统的影响…

Message queue 消息队列--RabbitMQ 【基础入门】

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是平顶山大师,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Message queue 消息队列--RabbitMQ 【基础入门…

FPGA高端项目:Xilinx Zynq7020 系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持

目录 1、前言版本更新说明给读者的一封信FPGA就业高端项目培训计划免责声明 2、相关方案推荐我这里已有的FPGA图像缩放方案本方案在Xilinx Kintex7 系列FPGA上的应用本方案在Xilinx Artix7 系列FPGA上的应用本方案在国产FPGA紫光同创系列上的应用本方案在国产FPGA高云系列上的应…

【Linux】vim配置

我们普通用户打开未配置的vim的时候,和Windows中的vs界面差别很大,使用不是很便捷 这里我们可以配置一下vim,便于我们的操作 我们可以在gitee中搜索vimforcpp VimForCpp: 快速将vim打造成c IDE (gitee.com) curl -sLf https://gitee.com/HGt…

基于YOLOv8的目标识别、计数、电子围栏的项目开发过程

0 前言 用于生产环境中物体检测、识别、跟踪,人、车流量统计,越界安全识别 1 YOLOv8概述 YOLOv8 是Ultralytics的YOLO的最新版本。作为一种前沿、最先进(SOTA)的模型,YOLOv8在之前版本的成功基础上引入了新功能和改进,以提高性…

【Obsidian】【Git】使用gitee同步/保存obsidian笔记

Obisidian是一款markdown软件,使用它可以方便地记笔记、记录科研日常。然而如果在多个设备上使用obsidian,会牵扯到笔记/vault/仓库同步问题。下面来介绍如何用git管理obsidian。 1.创建gitee账号 略 2.下载Obsidian 略 3.新建git仓库 3.1在gitee上…

《WebKit 技术内幕》学习之九(1): JavaScript引擎

1 概述 1.1 JavaScript语言 说起JavaScript语言,又要讲一个典型的从弱小到壮大的奋斗史。起初,它只是一个非常不起眼的语言,用来处理非常小众的问题。所以,从设计之初,它的目标就是解决一些脚本语言的问题&#xff…

rancher和k8s接口地址,Kubernetes监控体系,cAdvisor和kube-state-metrics 与 metrics-server

为了能够提前发现kubernetes集群的问题以及方便快捷的查询容器的各类参数,比如,某个pod的内存使用异常高企 等等这样的异常状态(虽然kubernetes有自动重启或者驱逐等等保护措施,但万一没有配置或者失效了呢)&#xff0…

yum仓库和NFS文件共享服务

一、yum仓库简介: 1.yum仓库简介: yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间 为什…