零基础也能看懂!数据仓库与数据库的这几个问题,你能回答出来吗( 二 )


数据仓库(data warehouse)定义聪明的读者应该已经意识到这个问题:既然分析型数据库中的操作都是查询 , 因此也就不需要严格满足完整性/参照性约束以及范式设计要求 , 而这些却正是关系数据库精华所在 。这样的情况下再将它归为数据库会很容易引起大家混淆 , 毕竟在绝大多数人心里数据库是可以关系型数据库画上等号的 。

零基础也能看懂!数据仓库与数据库的这几个问题,你能回答出来吗

文章插图
 
那么为什么不干脆叫"面向分析的存储系统"呢?
事实上数据仓库不应让传统关系数据库来实现 , 因为关系数据库最少也要求满足第1范式 , 而数据仓库里的关系表可以不满足第1范式 。也就是说 , 同样的记录在一个关系表里可以出现N次 。但由于大多数数据仓库内的表的统计分析还是用SQL , 因此很多人把它和关系数据库搞混了 。
知道了什么是数据仓库后 , 再来看看它有哪些特点吧 。某种程度上来说 , 这也是分析型数据库的特点:
零基础也能看懂!数据仓库与数据库的这几个问题,你能回答出来吗

文章插图
 
1. 面向主题
面向主题特性是数据仓库和操作型数据库的根本区别 。操作型数据库是为了支撑各种业务而建立 , 而分析型数据库则是为了对从各种繁杂业务中抽象出来的分析主题(如用户、成本、商品等)进行分析而建立;
2.集成性
集成性是指数据仓库会将不同源数据库中的数据汇总到一起;
3.企业范围
数据仓库内的数据是面向公司全局的 。比如某个主题域为成本 , 则全公司和成本有关的信息都会被汇集进来;
4.历史性
较之操作型数据库 , 数据仓库的时间跨度通常比较长 。前者通常保存几个月 , 后者可能几年甚至几十年;
5.时变性
时间性是指数据仓库包含来自其时间范围不同时间段的数据快照 。有了这些数据快照以后 , 用户便可将其汇总 , 生成各历史阶段的数据分析报告;
数据仓库组件数据仓库的核心组件有四个:各源数据库 , ETL , 数据仓库 , 前端应用 。如下图所示:
零基础也能看懂!数据仓库与数据库的这几个问题,你能回答出来吗

文章插图
 
1. 业务系统
业务系统包含各种源数据库 , 这些源数据库既为业务系统提供数据支撑 , 同时也作为数据仓库的数据源(注:除了业务系统 , 数据仓库也可从其他外部数据源获取数据);
2.ETL
ETL分别代表:提取、转换、加载 。其中提取过程表示操作型数据库搜集指定数据 , 转换过程表示将数据转化为指定格式并进行数据清洗保证数据质量 , 加载过程表示将转换过后满足指定格式的数据加载进数据仓库 。
数据仓库会周期不断地从源数据库提取清洗好了的数据 , 因此也被称为"目标系统";
3.前端应用
和操作型数据库一样 , 数据仓库通常提供具有直接访问数据仓库功能的前端应用 , 这些应用也被称为BI(商务智能)应用 , 其核心是以可视化的图表将数据展现出来 , 使其具有对业务的决策指导意义 。
 
 
数据集市(data mart)数据集市可以理解为是一种"小型数据仓库" , 它只包含单个主题 , 且关注范围也非全局 。
数据集市可以分为两种 , 一种是独立数据集市 , 这类数据集市有自己的源数据库和ETL架构;另一种是非独立数据集市 , 这种数据集市没有自己的源系统 , 它的数据来自数据仓库 。
当用户或者应用程序不需要/不必要/不允许用到整个数据仓库的数据时 , 非独立数据集市就可以简单为用户提供一个数据仓库的"子集" 。
数据仓库开发流程在数据库系列的第五篇中 , 曾详细分析了数据库系统的开发流程 。数据仓库的开发流程和数据库的比较相似 , 因此本文仅就其中区别进行分析 。
下图为数据仓库的开发流程:
零基础也能看懂!数据仓库与数据库的这几个问题,你能回答出来吗

文章插图
 
较之数据库系统开发 , 数据仓库开发只多出ETL工程部分 。然而这一部分极有可能是整个数据仓库开发流程中最为耗时耗资源的一个环节 。
因为该环节要整理各大业务系统中杂乱无章的数据并协调元数据上的差别 , 所以工作量很大 。在很多公司都专门设有ETL工程师这样的岗位 , 大的公司甚至专门聘请ETL专家 。


推荐阅读