数据仓库-微软BI SSIS ETL 控件与案例,涵盖了微软BI SSIS几乎所有常用控件40套大数据云计算高级实战精品,数据分析,数据仓库,数据爬虫,项目实战,用户画像,日志分析,Hadoop,Flink,Spark,Kafka,Storm,Docker,ElaticStack等视频教程
视频课程包含:
40套包含:大数据精英课程,云计算,数据分析,数据仓库,数据爬虫,项目实战,用户画像,日志分析,全文检索,项目监控,性能调优,系统架构,电商数据分析,电商行为日志分析,电商实时分析系统,分布式计算平台,分布式集群部署,实时流计算,全端数据统计分析系统,堵车预测系统实战,共享单车实战,电信级海量数据处理,分布式消息系统,日志传输实战,大型电商项目与数据应用实战,Hadoop,Flink,Spark,Kafka,Storm,Docker,Kubernetes(K8s),ElaticStack,HBase,SparkSQL,Hive,Flume,ETL,DMP等高端视频课程......
40套课程介绍:
1、40套精品是掌柜最近整理出的最新课程,都是当下最火的技术,最火的课程,也是全网课程的精品;
2、40套资源包含:全套完整高清视频、完整源码、配套文档;
3、知识也是需要投资的,有投入才会有产出(保证投入产出比是几百上千倍),如果有心的朋友会发现,身边投资知识的大都是技术经理或者项目经理,工资一般相对于不投资的也要高出很多;
说明:大数据时代,数据仓库向大数据体系升级换代很常见,也是个不错的机会。如果是想系统研究大数据体系的数据仓库设计,个人比较推荐滴滴(前)架构师的视频分享课:http://t.cn/EJ07vua主要是干货比较多,有15案例 + 3实战 + 3项目。
一、什么是数据库?
1.数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库
2.数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是以一定
的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性
的特点并可在一定范围内为多个用户共享
数据仓库定义:
面向主题的,集成的,相对稳定的,反映历史变化的数据集合,用于支持管理决策。
数据仓库与数据库对比:
面向业务的数据库常称作OLTP,面向分析的数据仓库亦称为OLAP
二、数据仓库的发展历程
数据仓库概念最早可追溯到20世纪70年代,希望提供一种架构将业务处理系统和分析处理分为不同
的层次
20世纪80年代,建立TA2(Technical Architecture2)规范,该明确定义了分析系统的四个组成部分:数
据获取、数据访问、目录、用户服务
1988年,IBM第一次提出信息仓库的概念:一个结构化的环境,能支持最终用户管理其全部的业务,
并支持信息技术部门保证数据质量;抽象出基本组件:数据抽取、转换、有效性验证、加载、cube
开发等,基本明确了数据仓库的基本原理、框架结构,以及分析系统的主要原则
1991年,Bill Inmon出版《 Building the Data Warehouse 》提出了更具体的数据仓库原则:
1.数据仓库是面向主题的
2.集成的
3.包含历史的
4.不可更新的
5.面向决策支持的
6.面向全企业的
7.最明细的数据存储
8.数据快照式的数据获取
尽管有些理论目前仍有争议,但凭借此书获得“数据仓库之父”的殊荣
Bill Inmon主张自上而下的建设企业数据仓库,认为数据仓库是一个整体的商业智能系统的一部分。
一家企业只有一个数据仓库,数据集市的信息来源出自数据仓库,在数据仓库中,信息存储符合第
三范式,大致架构:
Ralph Kimball 出版《The Data Warehouse Toolkit》,其主张自下而上的建立数据仓库,极力推崇建
立数据集市,认为数据仓库是企业内所有数据集市的集合,信息总是被存储在多维模型当中,其思路:
两种思路和观点在实际的操作中都很难成功的完成项目交付,直至最终Bill Inmon提出了新的BI架构CIF(Corporation information factory),把数据集市包含了进来。CIF的核心是将数仓架构划分为不同的层次以满足不同场景的需求,比如常见的ODS、DW、DM等,每层根据实际场景采用不同的建设方案,改思路也是目前数据仓库建设的架构指南,但自上而下还是自下而上的进行数据仓库建设,并未统一。
基于大数据数仓构建特点
随着我们从IT时代步入DT时代,数据从积累量也与日俱增,同时伴随着互联网的发展,越来越多的应用场景产生,传统的数据处理、存储方式已经不能满足日益增长的需求。而互联网行业相比传统行业对新生事物的接受度更高、应用场景更复杂,因此基于大数据构建的数据仓库最先在互联网行业得到了尝试。
尽管数据仓库建模方法论是一致的,但由于所面临的行业、场景的不同,在互联网领域,基于大数据的数据仓库建设无法按照原有的项目流程、开发模式进行,更多的是需要结合新的技术体系、业务场景进行灵活的调整,以快速响应需求为导向。
应用场景广泛
1)传统的数仓建设周期长,需求稳定,面向DSS、CRM、BI等系统,时效性要求不高。
2)基于大数据的数据仓库建设要求快速响应需求,同时需求灵活、多变,对实时性有不同程度的要求,除了面向DSS、BI等传统应用外,还要响应用户画像、个性化推荐、机器学习、数据分析等各种复杂的应用场景。
技术栈更全面、复杂
传统数仓建设更多的基于成熟的商业数据集成平台,比如Teradata、Oracle、Informatica等,技术体系比较成熟完善,但相对比较封闭,对实施者技术面要求也相对专业且单一,一般更多应用于银行、保险、电信等“有钱”行业。
基于大数据的数仓建设一般是基于非商业、开源的技术,常见的是基于hadoop生态构建,涉及技术较广泛、复杂,同时相对于商业产品,稳定性、服务支撑较弱,需要自己维护更多的技术框架。
三、技术栈转变
数仓模型设计更灵活
1.传统数仓有较为稳定的业务场景和相对可靠的数据质量,同时也有较为稳定的需求,对数仓的建设有较为完善的项目流程管控,数仓模型设计有严格的、稳定的建设标准。
2.在互联网行业:
1)行业变化快、业务灵活,同时互联网又是个靠速度存活的行业
2)源数据种类繁多:数据库、Nginx log、用户浏览轨迹等结构化、非结构化、半结构化数据
3)数据质量相对差,层次不齐
所以,在互联网领域,数仓模型的设计更关注灵活、快速响应和应对多变的市场环境,更加以快速解决业务、运营问题为导向,快速数据接入、快速业务接入,更不存在一劳永逸。
四、数据仓库的应用范围与前景
数仓存在的意义
五、基于大数据的数据仓库在互联网行业主要的应用
六、发展方向与就业前景
未来更广泛的应用场景
1.数据分析、数据挖掘、人工智能、机器学习、风险控制、无人驾驶
2.数据化运营、精准运营
3.广告精准、智能投放
大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)
简介: 本文的主要内容不是介绍现有的比较流行的主要行业的一些数据模型,而是将笔者在数据仓库建设项目中的一些经验,在这里分享给大家。希望帮助大家在数据仓库项目建设中总结出一套能够合乎目前业界规范的,满足大部分行业数据仓库建设标准的一种方法。
所谓水无定势,兵无常法。不同的行业,有不同行业的特点,因此,从业务角度看,其相应的数据模型是千差万别的。目前业界较为主流的是数据仓库厂商主要是 IBM 和 NCR,这两家公司的除了能够提供较为强大的数据仓库平台之外,也有各自的针对某个行业的数据模型。
例如,在银行业,IBM 有自己的 BDWM(Banking data warehouse model),而 NCR 有自己的 FS-LDM 模型。在电信业,IBM 有 TDWM(Telecom Data warehouse model),而 NCR 有自己的 TS-LDM 模型。因此,我们看到,不同的公司有自己针对某个行业的理解,因此会有不同的公司针对某个行业的模型。而对于不同的行业,同一个公司也会有不同的模型,这主要取决于不同行业的不同业务特点。
举例来说,IBM 的 TDWM 的模型总共包含了以下 9 个概念,如下图:
图 1. IBM 的 TDWM 概念模型
可能很多人要问,为什么你们的模型是 9 个概念而不是 10 个,11 个呢?你们的数据仓库模型的依据又是什么?其实这是我们在给客户介绍我们的数据模型时,经常被问到的一个问题,我希望读者在读完本文时,能够找到自己的答案。
虽然每个行业有自己的模型,但是,我们发现,不同行业的数据模型,在数据建模的方法上,却都有着共通的基本特点。
本文的主要目的之一,就是希望读者能够通过对本文的阅读,同时,结合自己对数据仓库建设的经验,在建设数据仓库的时候能够总结出一套适合自己的建模方法,能够更好的帮助客户去发挥数据仓库的作用。
本文主要的主线就是回答下面三个问题:
最后,我们在本文的结尾给大家介绍了一个具体的数据仓库建模的样例,帮助大家来了解整个数据建模的过程。
数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。在这里,数据模型表现的抽象的是实体和实体之间的关系,通过对实体和实体之间关系的定义和描述,来表达实际的业务中具体的业务关系。
数据仓库模型是数据模型中针对特定的数据仓库应用系统的一种特定的数据模型,一般的来说,我们数据仓库模型分为几下几个层次,如图 2 所示。
图 2. 数据仓库模型
通过上面的图形,我们能够很容易的看出在整个数据仓库得建模过程中,我们需要经历一般四个过程:
因此,在整个数据仓库的模型的设计和架构中,既涉及到业务知识,也涉及到了具体的技术,我们既需要了解丰富的行业经验,同时,也需要一定的信息技术来帮助我们实现我们的数据模型,最重要的是,我们还需要一个非常适用的方法论,来指导我们自己针对我们的业务进行抽象,处理,生成各个阶段的模型。
在数据仓库的建设中,我们一再强调需要数据模型,那么数据模型究竟为什么这么重要呢?首先我们需要了解整个数据仓库的建设的发展史。
数据仓库的发展大致经历了这样的三个过程:
通过数据仓库建设的发展阶段,我们能够看出,数据仓库的建设和数据集市的建设的重要区别就在于数据模型的支持。因此,数据模型的建设,对于我们数据仓库的建设,有着决定性的意义。
一般来说,数据模型的建设主要能够帮助我们解决以下的一些问题:
建设数据模型既然是整个数据仓库建设中一个非常重要的关键部分,那么,怎么建设我们的数据仓库模型就是我们需要解决的一个问题。这里我们将要详细介绍如何创建适合自己的数据模型。
数据仓库的数据模型的架构和数据仓库的整体架构是紧密关联在一起的,我们首先来了解一下整个数据仓库的数据模型应该包含的几个部分。从下图我们可以很清楚地看到,整个数据模型的架构分成 5 大部分,每个部分其实都有其独特的功能。
图 3. 数据仓库数据模型架构
从上图我们可以看出,整个数据仓库的数据模型可以分为大概 5大部分:
通过对整个数据仓库模型的数据区域的划分,我们可以了解到,一个好的数据模型,不仅仅是对业务进行抽象划分,而且对实现技术也进行具体的指导,它应该涵盖了从业务到实现技术的各个部分。
我们前面介绍了数据仓库模型的几个层次,下面我们讲一下,针对这几个层次的不同阶段的数据建模的工作的主要内容:
图 4. 数据仓库建模阶段划分
从上图我们可以清楚地看出,数据仓库的数据建模大致分为四个阶段:
1. 业务建模,这部分建模工作,主要包含以下几个部分:
2. 领域概念建模,这部分得建模工作,主要包含以下几个部分:
3. 逻辑建模,这部分的建模工作,主要包含以下几个部分:
4. 物理建模,这部分得建模工作,主要包含以下几个部分:
从我们上面对数据仓库的数据建模阶段的各个阶段的划分,我们能够了解到整个数据仓库建模的主要工作和工作量,希望能够对我们在实际的项目建设能够有所帮助。
大千世界,表面看五彩缤纷,实质上,万物都遵循其自有的法则。数据仓库的建模方法同样也有很多种,每一种建模方法其实代表了哲学上的一个观点,代表了一种归纳,概括世界的一种方法。目前业界较为流行的数据仓库的建模方法非常多,这里主要介绍范式建模法,维度建模法,实体建模法等几种方法,每种方法其实从本质上讲就是从不同的角度看我们业务中的问题,不管从技术层面还是业务层面,其实代表的是哲学上的一种世界观。我们下面给大家详细介绍一下这些建模方法。
1. 范式建模法(Third Normal Form,3NF)
范式建模法其实是我们在构建数据模型常用的一个方法,该方法的主要由 Inmon 所提倡,主要解决关系型数据库得数据存储,利用的一种技术层面上的方法。目前,我们在关系型数据库中的建模方法,大部分采用的是三范式建模法。
范式是数据库逻辑模型设计的基本理论,一个关系模型可以从第一范式到第五范式进行无损分解,这个过程也可称为规范化。在数据仓库的模型设计中目前一般采用第三范式,它有着严格的数学定义。从其表达的含义来看,一个符合第三范式的关系必须具有以下三个条件 :
由于范式是基于整个关系型数据库的理论基础之上发展而来的,因此,本人在这里不多做介绍,有兴趣的读者可以通过阅读相应的材料来获得这方面的知识。
根据 Inmon 的观点,数据仓库模型得建设方法和业务系统的企业数据模型类似。在业务系统中,企业数据模型决定了数据的来源,而企业数据模型也分为两个层次,即主题域模型和逻辑模型。同样,主题域模型可以看成是业务模型的概念模型,而逻辑模型则是域模型在关系型数据库上的实例。
图 5. 范式建模法
从业务数据模型转向数据仓库模型时,同样也需要有数据仓库的域模型,即概念模型,同时也存在域模型的逻辑模型。这里,业务模型中的数据模型和数据仓库的模型稍微有一些不同。主要区别在于:
以笔者的观点来看,Inmon 的范式建模法的最大优点就是从关系型数据库的角度出发,结合了业务系统的数据模型,能够比较方便的实现数据仓库的建模。但其缺点也是明显的,由于建模方法限定在关系型数据库之上,在某些时候反而限制了整个数据仓库模型的灵活性,性能等,特别是考虑到数据仓库的底层数据向数据集市的数据进行汇总时,需要进行一定的变通才能满足相应的需求。因此,笔者建议读者们在实际的使用中,参考使用这一建模方式。
2. 维度建模法
维度建模法,Kimball 最先提出这一概念。其最简单的描述就是,按照事实表,维表来构建数据仓库,数据集市。这种方法的最被人广泛知晓的名字就是星型模式(Star-schema)。
图 6. 维度建模法
上图的这个架构中是典型的星型架构。星型模式之所以广泛被使用,在于针对各个维作了大量的预处理,如按照维进行预先的统计、分类、排序等。通过这些预处理,能够极大的提升数据仓库的处理能力。特别是针对 3NF的建模方法,星型模式在性能上占据明显的优势。
同时,维度建模法的另外一个优点是,维度建模非常直观,紧紧围绕着业务模型,可以直观的反映出业务模型中的业务问题。不需要经过特别的抽象处理,即可以完成维度建模。这一点也是维度建模的优势。
但是,维度建模法的缺点也是非常明显的,由于在构建星型模式之前需要进行大量的数据预处理,因此会导致大量的数据处理工作。而且,当业务发生变化,需要重新进行维度的定义时,往往需要重新进行维度数据的预处理。而在这些与处理过程中,往往会导致大量的数据冗余。
另外一个维度建模法的缺点就是,如果只是依靠单纯的维度建模,不能保证数据来源的一致性和准确性,而且在数据仓库的底层,不是特别适用于维度建模的方法。
因此以笔者的观点看,维度建模的领域主要适用与数据集市层,它的最大的作用其实是为了解决数据仓库建模中的性能问题。维度建模很难能够提供一个完整地描述真实业务实体之间的复杂关系的抽象方法。
3. 实体建模法
实体建模法并不是数据仓库建模中常见的一个方法,它来源于哲学的一个流派。从哲学的意义上说,客观世界应该是可以细分的,客观世界应该可以分成由一个个实体,以及实体与实体之间的关系组成。那么我们在数据仓库的建模过程中完全可以引入这个抽象的方法,将整个业务也可以划分成一个个的实体,而每个实体之间的关系,以及针对这些关系的说明就是我们数据建模需要做的工作。
虽然实体法粗看起来好像有一些抽象,其实理解起来很容易。即我们可以将任何一个业务过程划分成 3 个部分,实体,事件和说明,如下图所示:
图 7. 实体建模法
上图表述的是一个抽象的含义,如果我们描述一个简单的事实:“小明开车去学校上学”。以这个业务事实为例,我们可以把“小明”,“学校”看成是一个实体,“上学”描述的是一个业务过程,我们在这里可以抽象为一个具体“事件”,而“开车去”则可以看成是事件“上学”的一个说明。
从上面的举例我们可以了解,我们使用的抽象归纳方法其实很简单,任何业务可以看成 3个部分:
由于实体建模法,能够很轻松的实现业务模型的划分,因此,在业务建模阶段和领域概念建模阶段,实体建模法有着广泛的应用。从笔者的经验来看,再没有现成的行业模型的情况下,我们可以采用实体建模的方法,和客户一起理清整个业务的模型,进行领域概念模型的划分,抽象出具体的业务概念,结合客户的使用特点,完全可以创建出一个符合自己需要的数据仓库模型来。
但是,实体建模法也有着自己先天的缺陷,由于实体说明法只是一种抽象客观世界的方法,因此,注定了该建模方法只能局限在业务建模和领域概念建模阶段。因此,到了逻辑建模阶段和物理建模阶段,则是范式建模和维度建模发挥长处的阶段。
因此,笔者建议读者在创建自己的数据仓库模型的时候,可以参考使用上述的三种数据仓库得建模方法,在各个不同阶段采用不同的方法,从而能够保证整个数据仓库建模的质量。
上面介绍得是一些抽象得建模方法和理论,可能理解起来相对有些难度,因此,笔者在这里举一个例子,读者可以跟着我们的这个样例,来初步了解整个数据仓库建模的大概过程。
熟悉社保行业的读者可以知道,目前我们国家的社保主要分为养老,失业,工伤,生育,医疗保险和劳动力市场这 6 大块主要业务领域。在这 6 大业务领域中,目前的状况养老和事业的系统已经基本完善,已经有一部分数据开始联网检测。而,对于工伤,生育,医疗和劳动力市场这一块业务,有些地方发展的比较成熟,而有些地方还不够成熟。
1.业务建模阶段
基于以上的背景介绍,我们在业务建模阶段,就很容易来划分相应的业务。因此,在业务建模阶段,我们基本上确定我们本次数据仓库建设的目标,建设的方法,以及长远规划等。如下图:
图 8. 业务建模阶段
在这里,我们将整个业务很清楚地划分成了几个大的业务主线,例如:养老,失业,工伤,生育,医疗,劳动力等着几个大的部分,然后我们可以根据这些大的模块,在每个业务主线内,考虑具体的业务主线内需要分析的业务主题。
因此,业务建模阶段其实是一次和业务人员梳理业务的过程,在这个过程中,不仅能帮助我们技术人员更好的理解业务,另一方面,也能够发现业务流程中的一些不合理的环节,加以改善和改进。
同时,业务建模阶段的另一个重要工作就是确定我们数据建模的范围,例如:在某些数据准备不够充分的业务模块内,我们可以考虑先不建设相应的数据模型。等到条件充分成熟的情况下,我们可以再来考虑数据建模的问题。
2.领域概念建模阶段
领域概念建模阶段是数据仓库数据建模的一个重要阶段,由于我们在业务建模阶段已经完全理清相应的业务范围和流程,因此,我们在这个领域概念建模阶段的最主要的工作就是进行概念的抽象,整个领域概念建模的工作层次如下图所示:
图 9. 领域概念建模阶段
从上图我们可以清楚地看到,领域概念建模就是运用了实体建模法,从纷繁的业务表象背后通过实体建模法,抽象出实体,事件,说明等抽象的实体,从而找出业务表象后抽象实体间的相互的关联性,保证了我们数据仓库数据按照数据模型所能达到的一致性和关联性。
从图上看,我们可以把整个抽象过程分为四个层次,分别为:
通过领域概念建模,数据仓库的模型已经被抽象成一个个的实体,模型的框架已经搭建完毕,下面的工作就是给这些框架注入有效的肌体。
3.逻辑建模阶段
通过领域概念建模之后,虽然模型的框架已经完成,但是还有很多细致的工作需要完成。一般在这个阶段,我们还需要做非常多的工作,主要包括:
总而言之,在逻辑建模阶段,我们主要考虑得是抽象实体的一些细致的属性。通过逻辑建模阶段,我们才能够将整个概念模型完整串联成一个有机的实体,才能够完整的表达出业务之间的关联性。
在这个阶段,笔者建议大家可以参考 3NF 的建模方法,表达出实体的属性,以及实体与实体之间的联系。例如:在这个阶段,我们可以通过采用 ERWIN 等建模工具等作出符合 3NF 的关系型数据模型来。
4.物理建模阶段
物理建模阶段是整个数据建模的最后一个过程,这个过程其实是将前面的逻辑数据模型落地的一个过程。考虑到数据仓库平台的不同,因此,数据模型得物理建模过程可能会稍微有一些不同,在这个阶段我们主要的工作是:
经过物理建模阶段,整个数据仓库的模型已经全部完成,我们可以按照自己的设计来针对当前的行业创建满足自己需要的数据模型来。
这里,笔者通过一个数据建模的样例,希望能够给读者一个关于数据仓库建模的感性的认识。希望读者在利用这些数据仓库得建模方法创建自己的数据模型的时候,可以根据业务实际的需要和自己对抽象能力的把握来创建适合自己的数据模型。
数据仓库-微软BI SSIS ETL 控件与案例,涵盖了微软BI SSIS几乎所有常用控件数据仓库-微软BI SSIS ETL 控件与案例,涵盖了微软BI SSIS几乎所有常用控件数据仓库-微软BI SSIS ETL 控件与案例,涵盖了微软BI SSIS几乎所有常用控件数据仓库-微软BI SSIS ETL 控件与案例,涵盖了微软BI SSIS几乎所有常用控件数据仓库-微软BI SSIS ETL 控件与案例,涵盖了微软BI SSIS几乎所有常用控件数据仓库-微软BI SSIS ETL 控件与案例,涵盖了微软BI SSIS几乎所有常用控件数据仓库-微软BI SSIS ETL 控件与案例,涵盖了微软BI SSIS几乎所有常用控件