数据库:是一个逻辑概念,顾名思义就是储存数据的仓库,由数据库软件完成。一个数据库一般包含许多表,表是二维的,一个表格中可以包含许多字段。这些字段被逐个排列,相应的数据在表中有各自的行。当今市场上流行的数据库多为二维数据库。例如:Oracle、DB2、MySQL、Sybase、MS SQLServer等等。
数据仓库:数据仓库是做什么的,是数据库概念的升级版。在逻辑上,数据库与数据仓库并无不同,都是从数据库软件上实现了存储数据,只是从数据量来看,数据仓库要比数据库庞大得多,它主要用来进行数据挖掘和数据分析,对管理者进行辅助决策。
对于数据库的操作通常称为OLTP(On-Line Transaction Processing),也就是联机事务处理,对于具体业务在数据库中的联机操作,具有数据量较小的特点,一般只对少量数据记录进行查询,修改。
而对于数据仓库的操作,通常被称为OLAP(On-Line Analytical Processing),联机分析处理,用于对特定主题的历史数据(综合数据)进行分析,以支持管理决策。
图示:OLTP和OLAP,来自网络。
在企业实际工作过程中,一条业务线通常会由多个不同的系统支撑组成(例如:典型的电商后端业务线可分为库存系统、售后系统、采购系统、CRM系统等)。
因系统自身的设计缺陷或业务流程变更等问题,所生成的数据常常会出现信息丢失、冗余等问题,如直接用“假数据”来做“真分析”,然后,分析结果必然是没有参考价值的,所以需要能够有一种数据产品来整合处理这些数据——这正是数据仓库是做什么的所在。
数据仓库的任务通常包括存储数据.校准.整合.输出。
在数据集成加工过程中,一般采用分层次管理、分层分工和协作的方式,各层间只有保持“高内聚低耦合”的特征,才能保证数据的实时性、生态性,并能完成不同程度的数据处理。
作为所有数据的中心的数据仓库,它既不生成也不消费数据,只是搬运者,如果将数据比作水,那么数据仓库就相当于矿泉水生产商,负责从取水、排污、包装和运输。
数据库并非独立的个体,而是与整个大数据系统相结合。换言之,数据仓库就像人的心脏,只有心脏在而没有其他器官在,人就没法活下来。
其整体架构包括数据来源系统、原始数据层、数据仓库、数据应用层。
图:大数据架构,来自网络。
数据来源系统:可以理解为数据的收集系统,通常可以大致分为业务数据和用户行为数据。
原始数据层:正如其名称所示,存储来自来源系统的未经加工处理的数据。其功能主要有两个方面:1)分离数据仓库和业务系统,节省系统资源。2)分担业务系统报表任务。
数据仓库:在标准上,数据仓库可以分为ODS(临时存储层)、PDW(数据仓库层)、DM(数据集市层)、APP(应用层)四层,从实际应用来看也可以分为基础数据层、主题层、模型层。
基础数据层:原始数据层以天为周期,向数据仓库传送数据,采用ETL方式按设定数据表格形式存储数据,构成基础数据层数据,其目的是简化后续数据处理工作。
主题层:主题层的结构比较复杂,构建规则可以根据对业务的实际理解来规定,通常这层的数据是一致的、精确的、干净的数据,也就是清洗过的数据。
模型层:模型层的主要作用是将主题数据合并为数据分析模型。在模型层次上,数据通常呈星形结构,并且具有很高的索引性,通常这一层的数据是没有明细数据的。
数据应用层:数据仓库中的数据除了涉及各种数据分析平台外,还涉及到业务系统,此时数据都是经过层层清洗加工、模型搭建,以接口的形式推送到各大数据平台。
在没有数据仓库分层的情况下,整个数据仓库都会出现大量冗余数据,如果源业务系统的业务规则发生改变,就会产生很大的数据清理工作量。
以数据仓库为基础,采用“空间换时间”的方法,数据仓库分层后利用元数据进行大量的预处理操作,提高了效率,提高了用户体验;与此同时,整个数据清理过程也可以简化,也就是说,相当于将复杂的工作分成几个简单的工作,使每一层的处理逻辑更加简单,易于理解。
图:元数据在数据仓库中的作用,来源于网络