很多人知道数据库,但是不知道数据仓库,也不知道数据湖,后两者相当于数据库来说,是比较新颖的概念。
比较受欢迎的数据库有:MySQ、Oracle、SqlServer等,数据仓库有AWS、Hive等
那数据库和数据仓库可以用来干什么?就拿电商公司为例吧。
- 一阶段:属于电商公司刚刚起步的时候,有个数据库如mysql,用户能下单,产品图片再修一修,就可以开门了;
- 二阶段:流量开始起来了,用户也开始多了,之前的野路子就不再实用了,逐渐发现数据库支撑不住了,查询开始变得困难;
- 三阶段:越来越精致化,关注的问题也越来越差别,之前可能只看这个星期的gmv,pv,uv等等,如今须要查询30-40岁男性对这款剃须刀的关注和需求是怎么样的,下单停顿时间是多久等等,这就意味着数据决策化;
这时候数据库的查询功能就不够用了,须要做大数据的复杂查询,数据仓库就出来了。既然说本质区别,一个是为了相应时间,一个是为了吞吐量。
再举个例子,我的人力、客户、物流、零售数据全都放在一起分析可以吗?当然可以,但是须要重新组合,模型重新计划下,就是数据仓库。
以下这张架构图使用最广泛的体系结构,它由顶层、中层和底层构成。
底层:数据仓库服务器的数据库作为底层,通常是一个关系数据库系统,使用后端工具将数据清理、转换并加载到该层。
中间层:数据仓库中的中间层是使用ROLAP或MOLAP模型实现的OLAP服务器。对于用户,此应用程序层显示数据库的抽象视图,这一层还充当终极用户和数据库之间的中介。
顶层:顶层是前端应用层,连接数据仓库并从数据仓库获取数据大概API,通常的应用包括数据查询、报表制作、BI数据分析、数据发掘还有一些其他的应用开发。
从功能应用和技术架构来展开,以下是一张中大型企业的很具体的数据仓库架构图了。
数据仓库的4层核心组件:底层源数据库(数据存储方案)、ETL、前端应用、还有OLAP服务。
数据仓库数据库
底层的数据仓库服务器通常是一个关系数据库系统(各种表关联的sql统计会更方便一些,非关系型数据库目前在这方面照旧有所区别)。常用的方案有Oracle、db2、sqlserve 还有essbase、greenplum、teredata等数据仓库专业解决方案。
1、采用传统关系型数据库,或经过功能扩展的MPP数据库
① 传统的关系型数据库有:oracle、mysql、DB2
② 大规模并行处置惩罚数据库:Vertica、Teradata(商业)、Greenplum (开源)
Teradata老江湖了,银行业使用较多,但成本也是真的贵,目前我们做项目较多的是用Greenplum,算是业界最快和最高性价比的高端数据仓库解决方案,Greenplum是基于PostgreSQL的,于2015年开源。我知道的国内四大行有3家在用,5大物流公司有4家在用,不少公司在从Teradata 迁徙到 GP。
2、大数据平台架构:Hadoop+Hive
这套方案有多通用不用多说了,通常是这样的组合:TB级数据用PG,百TB级数据用GP,PB级i上数据用Hadoop。
下面整理了一张传统数据仓库架构、GP还有Hadoop大数据平台的对比图。
采集、收集、清洗和转换工具(ETL)
数据来源、转换和迁徙工具用于实行将数据转换为数据仓库中的统一格式所需的所有转换、摘要和所有更改,它们也称为提取、转换和加载工具。其功能包括:
1、抽取
- 全量抽取:实用于数据量小且不轻易判断其数据发生改变的诸如关系表,维度表,配置表
- 增量抽取:实用于数据量大,为了节省抽取时间而采用的抽取策略
2、清洗
- 空值处置惩罚:将空值替换为特定值或直接过滤掉
- 验证数据精确性:把不符合业务寄义的数据做统一处置惩罚
- 规范数据格式:比如把所有日期都规范成YYYY-MM-DD的格式
- 数据转码:把一个源数据中用编码表现的字段通过关联编码表转换成代表其真实意义的值
- 数据尺度统一:比如在源数据中表现男女的方式有很多种,在抽取的时候直接根据模型中定义的值做转化。
3、转化和加载
- 转换:用ODS中的增量大概全量数据来刷新DW中的表
- 加载:每insert数据到一张表都可以称为数据加载
关于ETL工具的选型,这里罗列了一张对比表,基本囊括常用的ETL工具。
前端应用工具
数据仓库平台的搭建,终极是为了梳理出有效数据、提供有价值信息,帮助业务做出精确决策。
前端应用工具主要就是和数据仓库差别环节的数据交互,这些应用一般可以分为4类:
- 数据查询和报表工具
- BI即席分析工具
- 数据发掘工具
- 各种基于数据仓库或数据集市的应用开发工具
其中数据分析工具主要针对OLAP服务器,报表工具、数据发掘工具主要针对数据仓库。
1、数据查询和报表工具
通常用来生成一些固定类报表,自动化报表,支持打印和计算等大批量批处置惩罚作业。
流行的报表工具,在旧数据仓库期间主要是IBM的BO、Oracle的BIEE、还有微软和cognos,整体打包在数据仓库解决方案里,报表作为一个组件存在。但是随着传统型数仓,架构重成本贵,很多公司在项目上会自己考虑计划架构,而不是直接强套昂贵的解决方案,包括很多开源组件/平台的使用。
有关报表工具,如今项目上用的比较多的是帆软FineReport,针对差别企业数仓架构以及报表需求的实用性较广。
比如对接各种数据库直接生成报表;对采集整理后的数据进行多维报表展现,支撑业务分析报表;对接集团性数据仓库,构建数据中心平台,形成决策分析平台。
2、BI即席分析工具
BI一般都集成了OLAP服务器和报表展示功能。分析型BI基于多维数据库的概念,能多维视角分析数据,通常是从数据仓库中抽取具体数据的一个子集并经过须要的聚集存储到OLAP存储器中供前端BI分析工具读取。
BI在前端通过拖拽数据字段,多维度实发挥现数据,终极生成各种分析报告。企业项目上选型多用FineBI,由于要考虑性能、服务方案等。剩余就是自研大概开源。
BI工具做什么的不多说了,在项目选型的时候主要考虑上手难度(考虑没技术根本的业务用),数据处置惩罚性能,其他就是技术选型的事,还有成本。
3、数据发掘工具
OLAP是将数据多维视角呈现分析,数据发掘则是应用的算法来揭示数据的规律性,比如相干性、模式和趋势等。数据发掘工具就是做这个的,它能让一些算法和过程自动化。
常用的数据发掘工具,R、Python还有SPSS,基本都是开源个人可用的。和BI和报表差别,市面上少有为客户提供定制化数据分析和发掘的商业工具大概项目服务,由于行业性太强,须要非常认识业务、数据、平台,以是我见过基本都是自己养数据分析团队大概挖这类的人才。
4、应用开发
以上报表型、分析型的数据产品,但也会有延申出来的各种特定业务的数据决策系统,比如银行业基于管理层监控的的行长驾驶舱、零售业基于门店数据经营的决策系统,以及电商平台的营销参谋,都是基于这样的逻辑——基于业务深度应用。
此时数仓就是提供一个服务平台的脚色,比如如今很火的数据中台也大要是这个逻辑,将数据服务化,具体不懂就不班门弄斧了。
这样的服务,当然须要自己开发。
在这三层之间其实还有中间层OLAP服务器,典范实现为ROLAP模型或MOLAP模型。如今很多成熟的BI工具都是集成了OLAP服务器的,以是通常我们只须要选择ETL工具以及存储方案和可视化BI方案即可,以是OLAP本文也就不多讲了。 |