本文转载自微信公众号「sowhat1412」,作者sowhat1412。转载本文请联系sowhat1412公众号。
随着互联网及物联网等技术发展,越来越多的数据被生成,如何有效利用这些数据就成为了企业决胜的法宝了。大型公司会基于数据做出BI、推荐系统、决策支持、统计分析、报表等业务。
其中数据存储涉及众多知识点,本文目的就是对这些名词术语及内涵进行解析,便于读者对数据平台相关的概念有全面的认识。
1 OLTP VS OLAP
1970年随着关系数据库理论的提出,诞生了一系列经典的RDBMS,如MySQL、Oracle、SQL Server、DB2等。这些RDBMS为社会信息化的发展做出的重大贡献。然而随着数据库使用范围的不断扩大,它被逐步划分为操作型数据库OLTP跟分析型数据库OLAP。
1.1 OLTP
操作型数据库OLTP(On-Line Transaction Processing 联机事务处理)也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对记录进行CRUD。
OLTP模式下用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。
1.2 OLAP
分析型数据库OLAP(On-Line Analytical Processing)叫联机分析处理,主要用于历史数据分析。这类数据库作为公司的单独数据存储,负责利用历史数据对公司各主题域进行统计分析。为啥要分成操作型跟分析型呢?原因是他们有太多不同了!
对比
1.3 操作型OLTP VS 分析型OLAP
之所以区分为操作型跟分析型,那是因为这俩的核心功能不同!前者主要是面向操作,后者主要是面向分析,在细节上存在众多差异。
1.3.1 数据组成差别
数据时间范围不同:一般操作型数据库只存放90天内数据,分析型数据存放数年内数据,所以这俩要进行物理分离。
数据细节差异不同:操作型数据库主要存放细节数据,汇总数据是动态技术而成的。分析型数据库中既存放细节数据又存放用户关系的汇总数据。
数据时间表示不同:操作型数据库反应的是当前状态,分析师数据库中既又当前状态又有过去各时刻的快照数据。
1.3.2 技术差别
查询数量跟频率不同:操作型数据库查询频率但量小,分析型数据库查询量大但频率小。
数据更新不同:操作型数据库设计到用户CRUD。分析型数据库属于归档性质存储,只提供查询。
数据冗余性不同:操作型数据库在设计表的时候就会减少数据冗余避免更新复杂。分析型数据库中则只有查询功能,因此数据冗余性一般都存在。
1.3.3 功能差别
数据读者不同:操作型数据的使用者是业务环节下的各个角色,比如用户、商家等。分析型数据库一般只有研发跟数据分析人员专门使用。
定位不同:操作型数据库主要是面向应用层的数据库,是为了支持具体业务而存在的。分析型数据库是针对特定业务主体域的分析人物而创建的,是面向主体型数据库。
2 数仓
2.1 数仓简介
数仓发展
随着人类IT发展,数据越来越多被产生,并且这些数据还可能跨部门,跨业务。如何把数据集成起来进行OLAP是个巨大挑战。
数据仓库(Data Warehouse)应运而生,数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理中的决策制定。
数据仓库是伴随着企业信息化发展起来的,在企业信息化的过程中,随着信息化工具的升级和新工具的应用,数据量变的越来越大,数据格式越来越多,决策要求越来越苛刻,数据仓库技术也在不停的发展。数据仓库的趋势:
- 实时数据仓库以满足实时化&自动化决策需求。
- 大数据&数据湖以支持大量&复杂数据类型(文本、图像、视频、音频)。
数仓发展
对于数仓可以理解为原来各个数据孤岛中的数据可能存储位置、存储格式、编程语言等各个方面不同。数仓要做的就是把数据按照所需格式提取出来,进行转换、过滤、清洗。最终装载到数据仓库,整个过程也叫ETL。
- 提取 Extraction:表示从操作型数据库搜集指定数据。
- 转换 Transformation:表示将数据转化为指定格式,并进行数据清洗保证数据质量。
- 加载 Load:加载过程表示将转换过后满足指定格式的数据加载进数据仓库。
随着数仓的不断普及跟使用,信息产业就开始从以关系型数据库为基础的运营式系统慢慢向决策支持系统发展。这个决策支持系统,其实就是我们现在说的商务智能(Business Intelligence)即BI。
可以这么说,数据仓库为OLAP解决了数据来源问题,数据仓库和OLAP互相促进发展,进一步驱动了商务智能的成熟,但真正将商务智能赋予智能的,其实是数据挖掘。
2.2 数仓特征
2.2.1 面向主题
面向主题特性是数据仓库和操作型数据库的根本区别。
操作型数据库是为了支撑各种业务而建立,是按照业务功能进行组织的。
分析型数据库则是为了对从各种繁杂业务中抽象出来的分析主题进行分析而建立。
所谓主题是指用户使用数据仓库进行决策时所关心的重点方面,如:收入、客户、销售渠道等。所谓面向主题,是指数据仓库内的信息是按主题进行组织的。
2.2.2 集成性
集成性指数据仓库中的信息不是从各个业务系统中简单抽取出来的,而是经过一系列加工、整理和汇总的过程,因此数据仓库中的信息是关于整个企业的一致的全局信息。
2.2.3 企业范围
数据仓库内的数据是面向公司全局的。比如某个主题域为成本,则全公司和成本有关的信息都会被汇集进来。
2.2.4 历史性
较之操作型数据库,数据仓库的时间跨度通常比较长。前者通常保存几个月,后者可能几年甚至几十年。
2.2.5 时变性
时变性是指数据仓库包含来自其时间范围不同时间段的数据快照。有了这些数据快照以后,用户便可将其汇总,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
2.3 数仓架构
2.3.1 架构
数据仓库标准上可以分为四层:ODS(临时存储层)、PDW(数据仓库层)、DM(数据集市层)、APP(应用层)。
DWBI
各个系统的数据通过ETL同步到操作性数据仓库ODS中,对ODS数据进行面向主题域建模形成DW(数据仓库),DM是针对某一个业务领域建立模型,具体用户(决策层)查看DM生成的报表。
- 临时存储数据运营层:ODS(Operational Data Store):
ODS层将来自不同数据源的数据通过ETL(Extract-Transform-Load)过程汇聚整合成面向主题的、集成的、企业全局的、一致的数据集合。现在可选择的大数据同步技术也比较多,如datax,canal,kafka等。这一层的主要目的是把源系统的数据基本原样(有些数据敏感等级高不同步)的同步到大数据平台,因此比较容易进行方案的统一。
- 仓库层:DW(Data Warehouse):
DW为数据仓库层,DW层的数据应该是一致的、准确的、干净的数据。主要有清洗,拆分,整合,标准化,备份,隔离几个任务。即对源系统数据进行了清洗后的数据。这一层的数据一般是遵循数据库第三范式的,在DW层会保存BI系统中所有的历史数据,例如保存10年的数据。
DW : Data Warehouse 翻译成数据仓库,DW由下到上分为 DWD、DWB、DWS。
DWD:Warehouse Detail 细节数据层,有的也称为 ODS层,是业务层与数据仓库的隔离层
DWB:Data Warehouse Base 基础数据层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。
DWS:Data Warehouse Service 服务数据层,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表。
- 集市层:DM(Data Mart):
这一层有一个更直观的叫法是宽表层,前面提到这一层主要是为了解决某一类的分析问题,也就是面向分析,既然是面向分析,那么一般来讲是多个业务过程,而将多个业务过程融合成一个分析主题,势必会关联很多数据。宽表就是这样来的。在OLAP分析工具还不是很成熟的时候,仍然建议构建多维宽表,这样可以避免过多的模型间的关联操作。一般用于机器学习的特征宽表存在于这一层。集市层构建的好坏有一个比较好的衡量标准就是是否可以满足超过80%的应用层数据需要,剩下的20%来源于数仓层。
- 应用层:Application层:
该层数据完全是为了满足具体的分析需求而构建的数据,从数据的广度来说,则并不一定会覆盖所有业务数据,而是DM层数据的一个真子集,从某种意义上来说是DM层数据的一个重复。面向应用的特点一般有以下几个特征,灵活多变,简单。灵活多变是说业务需要各种形式或者各种自定义口径的数据,如KV结构的,各种条件来计算的。简单指的是数据一般是高度汇总的,如报表或者核心KPI指标。
2.3.2 数仓分层原因
用空间换时间:通过大量的预处理来提升应用系统的效率,因此数据仓库会存在大量冗余的数据。
解耦:不分层的话如果源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大。
简化:通过数据分层管理可以简化数据清洗的过程,因为把原来一步的工作分到了多个步骤去完成,当数据发生错误的时,往往只需要局部调整某个步骤即可。
2.4 元数据介绍
2.4.1 元数据定义
数仓的元数据Metadata是关于数据仓库中数据的数据。它的作用类似于数据库管理系统的数据字典,可以简答理解为一本书的目录,保存了逻辑数据结构、文件、地址和索引等信息。广义上讲,元数据描述了数据仓库内数据的结构和建立方法的数据,一般我们会用关系型数据库来存储这些数据,比如MySQL。
元数据是数据仓库管理系统的重要组成部分,元数据管理器是企业级数据仓库中的关键组件,贯穿数据仓库构建的整个过程,直接影响着数据仓库的构建、使用和维护。
- 构建数据仓库的主要步骤之一是ETL。这时元数据将发挥重要的作用,它定义了源数据系统到数据仓库的映射、数据转换的规则、数据仓库的逻辑结构、数据更新的规则、数据导入历史记录以及装载周期等相关内容。数据抽取和转换的专家以及数据仓库管理员正是通过元数据高效地构建数据仓库。
- 用户在使用数据仓库时,通过元数据访问数据,明确数据项的含义以及定制报表。
- 数据仓库的规模及其复杂性离不开正确的元数据管理,包括增加或移除外部数据源,改变数据清洗方法,控制出错的查询以及安排备份等。
元数据可分为技术元数据和业务元数据。
- 技术元数据为开发和管理数据仓库的IT人员使用,它描述了与数据仓库开发、管理和维护相关的数据,包括数据源信息、数据转换描述、数据仓库模型、数据清洗与更新规则、数据映射和访问权限等。
- 业务元数据为管理层和业务分析人员服务,从业务角度描述数据,包括商务术语、数据仓库中有什么数据、数据的位置和数据的可用性等,帮助业务人员更好地理解数据仓库中哪些数据是可用的以及如何使用。
由上可见,元数据不仅定义了数据仓库中数据的模式、来源、抽取和转换规则等,而且是整个数据仓库系统运行的基础,元数据把数据仓库系统中各个松散的组件联系起来,组成了一个有机的整体,如图所示
在这里插入图片描述
2.4.2 元数据作用
在数仓中元数据的主要作用如下:
- 描述哪些数据在数据仓库中,帮助决策分析者对数据仓库的内容定位。
- 定义数据进入数据仓库的方式,作为数据汇总、映射和清洗的指南。
- 记录业务事件发生而随之进行的数据抽取工作时间安排。
- 记录并检测系统数据一致性的要求和执行情况。
- 评估数据质量。
- 相当于写了一部数据用户指南手册
2.5 数据治理
如果你做过推荐系统跟BI报表等基于数据的系统,你就会知道数据治理的重要性!如果做过机器学习就会知道数据远远比算法更重要。通常我们对数据质量的判断来自准确性、完整性和一致性三方面,然而这三点原始数据通常并不具备,原始数据一般有如下留个特点。
- 数据重复
- 字段名跟结构前后不一致
- 某些记录存在字段缺失
- 原始数据来源跟格式各不相同
- 重点数据存在异常值
在做数据清洗时,一般有如下几点规则可寻:
- 确保原始数据的准确输入
- 小心处理NA值跟字符串为空的字段
- 检查字符型变量仅包含有效值
- 检查数值型变量在预定范围内
- 检查是否存在缺失数据
- 检查并删除重复数据
- 检查特殊值是否唯一
- 检查是否存在无效数据
参考
数仓简介:https://www.cnblogs.com/coco2015/p/11299620.html
数仓四万字:https://t.1yb.co/lQt2