当前位置: 首页 > 后端技术 > Java

数据仓库与数据集市:ODS、DW、DWD、DWM、DWS、ADS

时间:2023-04-01 15:15:55 Java

@TOC数据仓库笔记数据仓库与数据集市详解:ODS、DW、DWD、DWM、DWS、ADS:https://blog.csdn.net/weixin_...硅谷数字仓库1项目需求及架构设计:https://blog.csdn.net/weixin_...硅谷数字仓库2数据仓库层次结构+维度建模:https:///blog.csdn.net/weixin_...硅谷数据仓库实战3数字仓库搭建:https://blog.csdn.net/weixin_...硅谷数据仓库4.0视频教程B站直达:2021新电商数仓V4.0版丨大数据数仓项目实战:https://www.bilibili.com/video...百度网盘:https://pan.baidu.com/s/1FGUb...,提取码:yyds阿里巴巴云盘:https://www.aliyundrive.com/s...,提取码:335o数据流应用实例什么是数据仓库DW数据仓库(可简写为DW或DWH)数据仓库是在已经存在大量数据库的情况下,包括etl、调度、建模在内的一套完整的理论体系。数据仓库程序构建的目的是作为前端查询和分析的基础。主要用于OLAP(在线分析处理),支持复杂的分析操作,侧重于决策支持,提供直观易懂的查询结果。目前业界流行的有:AWSRedshift、Greenplum、Hive等。数据仓库不是数据的最终归宿,而是为数据的最终归宿做准备。这些准备工作包括:清洗、转义、分类、重组、合并、拆分、统计等。主要特点是面向主题[附录]操作数据库组织面向事务处理任务,而数据仓库中的数据组织根据某些学科领域。主题是指用户在使用数据仓库进行决策时关心的关键方面。一个主题通常与多个运营信息系统相关。集成需要对源数据进行处理和融合。在统一综合的过程中,必须消除源数据的不一致性,保证数据仓库中的信息是整个企业全局一致的信息。(关联关系)DW中不可修改的数据不是最新的,而是来自其他数据源。数据仓库主要为决策分析提供数据,涉及的操作主要是决策数据仓库中的数据查询和时间相关的需求。所有数据都需要标明时间属性和与数据库的对比DW:专为数据分析而设计,涉及读取大量数据,了解数据之间的关系和趋势数据库:用于捕捉和存储数据特征数据仓库交易数据库适合工作工作负载分析、报告、大数据交易数据源从多个来源收集和规范化的数据从单一来源(例如交易系统)捕获的数据数据捕获通过按预定的批处理计划执行顺序写入操作的批量写入操作优化为新数据最大化事务吞吐量数据规范化非规范化模式,如星型模式或雪花模式高度规范化的静态模式数据存储使用列式存储进行优化,以便于访问和高速查询性能针对单行中的高吞吐量写入操作进行了优化物理块数据访问被优化以最小化I/O和最大化数据吞吐量大量的小读操作为什么数据仓库涉及分层问题:为什么要做数据仓库?为什么要进行数据质量管理?为什么要进行元数据管理?数据仓库分层中各层的作用是什么?...在实际工作中,我们都希望自己的数据能够有序流动,设计者和用户都能清楚的知道数据的整个生命周期,比如下图左图。然而,在现实中,我们面临的数据情况很可能是高度复杂和层次混乱的。我们可能会创建一个表依赖结构混乱、循环依赖的数据系统,如下右图。为了解决我们可能面临的问题,我们需要一套有效的数据组织、管理和处理方法,使我们的数据系统更加有序,这就是数据分层。数据分层的好处:清晰的数据结构:让每个数据层都有自己的作用和职责,在使用和维护时可以更方便和理解复杂的问题简化:将一个复杂的任务分解成多个步骤完成步骤,每一层只解决特定问题统一数据口径:通过数据分层,提供统一的数据输出,统一输出口径减少重复开发:规范数据分层,开发通用中间层,可以大大减少重复计算工作数据分层每个公司的业务都可以分层到根据自身业务需求不同分层;目前比较成熟的数据分层:数据操作层ODS,数据仓库层DW,数据服务层ADS(APP)。数据操作层ODS数据操作层:OperationDataStore数据准备区,也称为贴源层。数据源中的数据经过抽取、清洗、传输后进入这一层,即ETL过程。该层主要作用:ODS是后台数仓层的准备区,为DWD层提供原始数据,减少对业务系统的影响。年龄300岁,这种数据是异常的,需要提前处理),去重(比如个人数据表中,有两个相同ID的重复数据,需要进行访问时一步去重),字段命名约定等一系列操作。但是为了考虑到以后数据溯源的可能性,不建议对这一层做太多的数据清洗工作。也可以原封不动地访问原始数据,根据业务的具体分层需求来做。这一层的数据是后续数据仓库处理数据的来源。数据源方式:业务日志经常使用sqoop提取,比如每天定时提取一次。实时性方面,可以考虑使用canal监控mysql的binlog,实时访问。埋点日志一般以文件形式保存。可以选择使用flume定时同步。您可以使用SparkStreaming或Flink实时访问Kafka。第三方爬虫数据数据仓库层也行。数据仓库层从上到下分为3层。三层:数据明细层DWD、数据中间层DWM、数据服务层DWS。数据明细层DWD数据明细层:数据仓库明细,DWD(datacleaning/DWI)该层是业务层和数据仓库之间的隔离层,保持与ODS层相同的数据粒度;主要是对ODS数据层做一些数据清洗和归一化操作,比如去除空数据、脏数据、离群点等。为了提高数据细节层的可用性,该层通常会采用一些维度退化的方法来退化将维度放入事实表中,减少事实表和维度表之间的关联。数据中间层DWM数据中间层:DataWarehouseMiddle,DWM层基于DWD层的数据,对数据进行一些轻微的聚合操作,生成一些中间结果表,提高公共指标的复用性,减少重复工作。简而言之,将共同的核心维度聚合起来,计算出相应的统计指标。DataservicelayerDWS(DWT)数据服务层:DataWarehouseService,DWS(宽表-用户行为,轻聚合)在此基础上聚合的总信息,比如用户信息,DWS的单位是天,DWT是总信息。该层以DWM上的基础数据为基础,整合汇总成一个数据服务层,用于分析某个主题域。一般是宽表,用来提供后续的业务查询,OLAP分析,数据分发等,一般来说这一层的数据表会比较少;一张表会覆盖更多的业务内容,因为它的字段比较多,所以在这一层一般称为宽表。Userbehavior,lightaggregationforDWD主要是对ODS/DWD层数据做一些轻聚合。数据应用层ADS数据应用层:ApplicationDataService,ADS(APP/DAL/DF)-报表结果这一层主要为数据产品和数据分析数据提供,一般存储在ES、Redis、PostgreSql等系统中使用通过在线系统;也可以存储在hive或Druid中,用于数据分析和数据挖掘。比如常用的数据报表都在这里。事实表事实表是指存储事实记录的表,如系统日志、销售记录等。事实表的记录是不断增长的,比如电子商务的商品订单表,就是类似的情况,所以事实表的体积通常比其他表大很多。维度表Dimension(DIM)维度表(DimensionTable)或维度表,有时也称为查找表(LookupTable),是与事实表相对应的表;它保存了维度的属性值,并且可以和事实表做关联,相当于把事实表上经常重复的属性抽取出来标准化,用一张表来管理。维度表主要包括两部分:高基数维度数据:一般是用户数据表,产品数据表类似数据表,数据量可能是千万级或者上亿级低基数维度数据:一般是配置表,比如枚举字段对应的中文意思,或者日期维度表等;数据量可能是个位数,也可能是数万。临时表TMP在每一层的计算中都会有很多临时表,专门设置了一个DWTMP层来存放我们数据仓库的临时表。数据集市被狭义地定义为ADS层;广义上是指Hadoop从DWDDWSADS同步到RDS(DataMart)的数据数据集市,又称数据集市,数据集市是为了满足特定部门或用户的需求,存储起来的以多维度的方式,包括定义维度、计算指标、维度层次等,生成数据供决策分析需要的数据立方体。在范围内,数据来自企业范围的数据库、数据仓库或更专业的数据仓库。数据中心的意义在于它在分析、内容、性能和易用性方面迎合了专业用户群体的特殊需求。数据中心用户希望数据以他们熟悉的方式表示。数据仓库结构与数据集市的区别数据仓库数据集市是企业数据仓库的一个子集,主要面向部门级业务,只面向特定主题。为了解决灵活性和性能之间的矛盾,数据集市是在数据仓库架构中加入的小型部门级或工作组级数据仓库。数据集市为特定用户存储预先计算好的数据,以满足用户的性能需求。数据集市可以在一定程度上缓解访问数据仓库的瓶颈。从理论上讲,应该有一个通用的数据仓库概念,然后才有数据集市。在实际建设数据集市时,国内很少这样做。在国内,我们一般都是先从数据集市做起,针对特定的主题(比如企业的客户信息)先做数据集市,再做数据仓库。数据仓库和数据集市的建立顺序与设计方法密切相关。而数据仓库作为一门工程学科,没有对错之分。就数据结构而言,数据仓库是面向主题的集成数据的集合。数据集市通常被定义为星型结构或雪花型数据结构,数据集市一般由一个事实表和若干个维表组成。问题总结ODS和DWD有什么区别?问:我还是不太明白ods和dwd层的区别。有了ods层后,感觉dwd没用了。答:嗯,我是这样理解的。从理想的角度来看,如果ods层的数据非常规律,基本可以满足我们的大部分需求,这当然很好。这个时候dwd层其实并不是很需要。但是在现实中,ods层的数据质量很难保证。毕竟数据来源多种多样,推送者也会有自己的推送逻辑。在这种情况下,我们需要使用额外的dwd层来掩盖一些潜在的差异。问:我大概明白了。是不是说dwd主要是对ods层做一些数据清洗和归一化操作,而dws主要是对ods层的数据做一些lightsummary?是的,大致可以这样理解。APP层是做什么的?Q:感觉DWS层没地方放。每个业务的DWS表应该在DWD里还是在app里?A:这个问题不好回答。我觉得主要是搞清楚DWS层是干什么的。如果你的DWS层是放一些业务端可以用的宽表,放在app层就可以了。如果说你说的数据集市是一个比较笼统的概念,那么其实dws、dwd、app都算是数据集市的内容。Q:存储在Redis和ES中的数据算作app层吗?答:是的,以我个人的理解,app层主要存放一些比较成熟的表,可以供业务方使用。这些表可以在Hive中,也可以从Hive导入到Redis或ES等查询性能更好的系统中。附录ETLETL:Extract-Transform-Load,用于描述数据从源到目的的提取、转换、加载过程。宽表含义:指的是一个数据库表,字段很多。它通常是指将与业务实体相关的指标、纬度和属性相关联的数据库表。特点:宽表不符合三种范式的模型设计规范,因为它们将不同的内容放在同一张表中:缺点:数据存在大量冗余好处:查询性能的提升和宽表的设计是广泛使用数据挖掘模型训练前的数据准备,通过将相关字段放在同一个表中,可以为数据挖掘模型训练时的迭代计算提供很大的信息。主题(Subject)是企业信息系统中对数据进行高层次综合、分类、分析和利用的抽象概念,每个主题基本对应一个宏观的分析领域。从逻辑上讲,它对应于企业中某个宏观分析领域所涉及的分析对象。比如“销售分析”是一个分析领域,那么这个数据仓库应用的主题就是“销售分析”。参考:http://www.cnblogs.com/amyzhuhttps://www.jianshu.com/p/1dd...https://blog.csdn.net/pmdream...百度百科