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