【数仓建设系列之二】数仓分类及基本概念
随着移动互联网的快速发展,数据的生产也成几何式的增长,传统意义上的数据库已经无法满足日益增长的需求,建设一个好的数仓,不仅可以为企业的决策和发展带来具有价值的指导意义,同时也能够将企业产生的所有数据充分利用起来,真正挖掘出数据的价值,让数据成为企业的关键财产之一。
一、OLTP和OLAP
OLTP(Online Transaction Processing)和OLAP(Online Analytical Processing)是我们常见的两种数仓解决方案。从功能定位来看,OLTP数据库是一种严格意义上的事务性和关系型数据库(MySQL就是典型的OLTP之一),它更多的是支持业务侧的更新操作(CRUD),要求能够提供实时在线处理事务的能力,更加注重操作的上的ACID(一致性,原子性,隔离性和持久性)。OLAP数据仓库则更加注重复杂场景下数据整合能力和查询分析能力,它是解决数据孤岛和提供多维分析的主要保障之一。在OLAP数据仓库中,人们往往更加注重数据的变化趋势,更多的是希望通过一些分析和查询等手段形成某些维度的报表或视图,为企业的决策和发展提供支撑作用。本篇文章接下来将主要介绍OLAP数据仓库中的一些基本概念和整体结构。
二、数仓建模概念介绍
我们一直在说OLAP数据仓库是一个面向主题的多维分析数据仓库,在数仓中,包含了诸如主题,维度,度量,指标等等的名词,许多人对这些名词有些疑惑了,到底什么是主题,维度,指标呢?首先我们来看以下这个例子:
比如: 2022年西安市购买汽车的总人数为100w。
在这段描述中,我们可以提炼出以下几个关键信息:
-
将"购买"作为一个主题;
-
将"2022年","西安市"和"汽车"可以分别作为时间维度,地点维度和商品维度;
-
将"100w"作为一个度量,同时也可以看作是一个原子指标;
-
可以将"西安市购买汽车的总人数为100w",可以看作是一个派生指标;
根据以上这个例子,我们可以总结出来:
主题:主题是一个抽象概念,每一个主题都是一个宏观层面的分析领域,可以简单理解为是某一分析对象数据的集合,在数仓中是指数据的分类。
维度:维度是对数据描述,通常包含时间维度,空间维度,人员维度等。维度能够帮助我们更好的理解和分析数据;
事实:指存储在数仓中数据的具体值,包含度量和指标,它可以用来衡量和描述数据特征变化趋势,在数仓中通常是指销售额,订单数量,客户数量,pv,uv等;
指标:是"事实"的一部分,也可以理解为就是度量,如果一个指标不加任何修饰词,那它就是一个原子指标;
派生指标:在原子指标的基础上,加上一些修饰词(维度)或者是通过一些简单计算(加减乘除)得到就是一个派生指标;
复合指标:上述例子中,没有体现出来复合指标的概念,我们可以理解为将原子指标或派生指标与维度成员,统计属性,管理属性等相结合产生的指标,比如在企业中常见的同比,环比,计划值,累计值等等;
以上就是数仓中的一些基本概念介绍。
三、数仓分层概念介绍
相信对于大多数小伙伴来讲,只要稍微对数仓有一点的了解,那么肯定就会知道数仓的经典分层结构:ODS(源数据层),DWD(明细数据层),DWS(明细汇总层),ADS(数据集市,也叫应用层),DIM(公共维表层)。那为什么还要在这重复来说呢?两方面原因:1.一篇系统性的文章,需要对涉及到的知识点进行一个较为全面的覆盖,缺了数仓分层介绍,在数仓建设这块是不完整的;2.数仓经典分层是一个基础架构,就像我们学习java
时首先要学习一些java
基础方面的知识是一样的,只有把这块的核心思想和规范吃透以后,我们才能举一反三,设计出更好的产品来,因为在实际生产环境中,数仓建设远比理论上复杂的多。好了,废话不多了说,有需要的可以一起看看下面这张图:
ODS层:
源数据层。顾名思义,就是把来自不同数据源下的结构化和非结构化(通过特定手段)数据通过全量或增量的方式统一存储在这一层,包括业务数据库数据,埋点日志数据等。ODS层的数据理论上来说是要保持原始数据模样的,基本不做任何转换或者清洗。但其实在实际业务场景中,如果数仓中ODS层的表是采用日期或时间字段分区,此时如果数据中出现了非法的日期或时间格式,我们肯定还是要将数据做ETl清洗的,避免数据在入仓时出现异常错误,更严重可能导致正常数据丢失。
DW层:
明细层。DW层是在数仓建设中要核心设计与研讨的一层,也是数仓建模的起始层,根据其特点可以细分为DWD和DWS层。
- DWD层:
明细数据层。主要是对ODS层的数据进行规范化处理,包括统一日期格式,过滤非法数据,编码格式转换等操作。该层数据一般不做横向整合,保持和ODS层一样的粒度。
- DWS层:
明细汇总层。结合DWD层的数据和一些维表数据,将数据按照一定主题汇总成一个粒度比DWD层稍粗的通用宽表数据。
DIM层:
公共维表层。该层主要是存放一些公用业务维表数据,包括一些业务数据中的基础配置数据,或字典数据。
ADS层:
应用层(数据集市)。该层主要是为报表或者数据视图提供统一的应用数据,包括一些趋势指标,环比,同比等数据信息,同时,也可以面对一些特殊的业务场景,做定时数据开发需求。
以上就是数仓的经典分层架构设计和基本功能概述。
四、总结
本篇文章主要介绍了数仓建设和数仓建模的一些基本概念知识。不同的人对这些内容可能有不同的理解,但在一个企业数仓建设团队中,所有人的理解必须要保持一致的,毕竟一个企业级的数仓建设是相当复杂的,不仅要设计好数仓整体设计,还要设计好数仓建模的方法,如果概念不清或理解不一致,大概率会导致往错误方向发展。
,毕竟一个企业级的数仓建设是相当复杂的,不仅要设计好数仓整体设计,还要设计好数仓建模的方法,如果概念不清或理解不一致,大概率会导致往错误方向发展。
最后,数仓建模大部分采用的都是维度建模,维度建模过程中,又有星型,雪花型和星座型几种维度建模手法,那每种建模手法的优劣势如何以及该怎么评估一个数仓建设好坏,请各位朋友点个关注,我们下篇文章接着讲。