数仓建模—数仓初识

什么是数仓

  • 数据仓库(DataWarehouse),一般缩写成DW、DWH。数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策的数据系统

数仓建模—数仓初识_第1张图片

面向分析的存储系统

  • 也就是说数仓是存数据的,企业的各种数据往里面塞,主要目的是为了有效分析数据,后续会基于它产出供分析挖掘的数据,或者数据应用需要的数据,如企业的分析性报告和各类报表,为企业的决策提供支持。

操作型数据库

  • 主要面向应用,用于业务支撑,支持对实际业务的处理,也可以叫业务型数据库。

可以理解为通常意义上的数据库(后端开发同学口中的经常提到的就是这种)。

分析型数据库

主要面向数据分析,侧重决策支持,作为公司的单独数据存储,负责利用历史数据对公司各主题域进行统计分析。

由于分析型数据库中的操作都是查询,因此也就不需要严格满足关系型数据库一些设计规范,这样的情况下再将它归为数据库不太合适,也容易不引起混淆,所以称之为数据仓库。

数仓的特点

  • 数据仓库主要用来进行决策分析的

数据仓库是⾯面向主题的

与传统的数据库不不⼀一样,数据仓库是⾯面向主题的,那什什么是主题呢?⾸首⻚页主题是⼀一个较⾼高乘次的概 念,是较⾼高层次上企业信息系统中的数据综合,归类并进⾏行行分析的对象。在逻辑意义上,他是对企业 中某⼀一个宏观分析领域所涉及的分析对象。(说⼈人话:就是⽤用户⽤用数据仓库进⾏行行决策所关⼼心的重点⽅方 ⾯面,⼀一个主题通常与多个操作信息型系统有关,⽽而操作型数据库的数据组织⾯面向事务处理理任务,各个 任务之间是相互隔离的);

数据仓库是集成的

数据仓库的数据是从原来的分散的数据库数据(mysql等关系型数据库)抽取出来的。操作型数据库 与DSS(决策⽀支持系统)分析型数据库差别甚⼤大。第⼀一,数据仓库的每⼀一个主题所对应的源数据在所 有的各个分散的数据库中,有许多重复和不不⼀一样的地⽅方,且来源于不不同的联机系统的数据都和不不同的 应⽤用逻辑捆绑在⼀一起;第⼆二,数据仓库中的综合数据不不能从原来有的数据库系统直接得到。因此⼦子在 数据进⼊入数据仓库之前,必然要经过统⼀一与综合,这⼀一步是数据仓库建设中最关键,最复杂的⼀一步, 所要挖成的⼯工作有: 要统计源数据中所有⽭矛盾之处,如字段的同名异议、异名同义、单位不不统⼀一,字 ⻓长不不统⼀一等。 进⾏行行数据的综合和计算。数据仓库中的数据综合⼯工作可以在原有数据库抽取数据时⽣生 成,但许多是在数据仓库内部⽣生成的,即进⼊入数据仓库以后进⾏行行综合⽣生成的

数据仓库的数据是随着时间的变化⽽而变化的(反应历史变化)

数据仓库中的数据不不可更更新是针对应⽤用来说的,也就是说,数据仓库的⽤用户进⾏行行分析处理理是不不进⾏行行数 据更更新操作的。但并不不是说,在从数据集成输⼊入数据仓库开始到最后被删除的整个⽣生存周期中,所有 的数据仓库数据都是永远不不变的。
数据仓库的数据是随着时间变化⽽而变化的,这是数据仓库的特征之⼀一。这⼀一特征主要有以下三个表 现: 数据仓库随着时间变化不不断增加新的数据内容。数据仓库系统必须不不断捕捉OLTP数据库中变化 的数据,追加到数据仓库当中去,也就是要不不断的⽣生成OLTP数据库的快照,经统⼀一集成增加到数据仓 库中去;但对于确实不不在变化的数据库快照,如果捕捉到新的变化数据,则只⽣生成⼀一个新的数据库快 照增加进去,⽽而不不会对原有的数据库快照进⾏行行修改。
数据库随着时间变化不不断删去旧的数据内容 。数据仓库内的数据也有存储期限,⼀一旦过了了这⼀一期限, 过期数据就要被删除。只是数据库内的数据时限要远远的⻓长于操作型环境中的数据时限。在操作型环 境中⼀一般只保存有6090天的数据,⽽而在数据仓库中则要需要保存较⻓长时限的数据(例例如:510 年年),以适应DSS进⾏行行趋势分析的要求。
数据仓库中包含有⼤大量量的综合数据,这些综合数据中很多跟时间有关,如数据经常按照时间段进⾏行行综 合,或隔⼀一定的时间⽚片进⾏行行抽样等等。这些数据要随着时间的变化不不断地进⾏行行从新综合。因此数据仓 库的数据特征都包含时间项,以标明数据的历史时期。

数据仓库的数据是不不可修改的(相对稳定的)

数据仓库的数据主要提供企业决策分析之⽤用,所涉及的数据操作主要是数据查询,⼀一般情况下并不不进 ⾏行行修改操作。数据仓库的数据反映的是⼀一段相当⻓长的时间内历史数据的内容,是不不同时点的数据库快 照的集合, 以及基于这些快照进⾏行行统计、综合和重组的导出数据,⽽而不不是联机处理理的数据。数据库中 进⾏行行联机处理理的书库进过集成输⼊入到数据仓库中,⼀一旦数据仓库存放的数据已经超过数据仓库的数据 存储期限,这些数据将从当前的数据仓库中删去。因为数据仓库只进⾏行行数据查询操作,所以数据仓库 当中的系统要⽐比数据库中的系统要简单的多。数据库管理理系统中许多技术难点,如完整性保护、并发 控制等等,在数据仓库的管理理中⼏几乎可以省去。但是由于数据仓库的查询数据量量往往很⼤大,所以就对 数据查询提出了了更更⾼高的要求,他要求采⽤用各种复杂的索引技术;同时数据仓库⾯面向的是商业企业的⾼高 层管理理层,他们会对数据查询的界⾯面友好性和数据表示提出更更⾼高的要求;

用于支持决策的

大数据仓库的特点

基于大数据的高扩展

基于大数据的高安全

  • 数据安全不丢失

基于大数据的高效率

  • spark hive 等大数据框架提供了更加高效的数据分析能力

离线+实时的架构提高数据的实时性

数仓的基本架构

数仓建模—数仓初识_第2张图片

对比数据库

数仓建模—数仓初识_第3张图片

其实这两个除了都是用sql 查询之外,基本上就没有其他相似点

  • 数据库是面向事务的(OLTP),而数据仓库是面向主题的(OLAP)
  • 数据库存在在线交易数据的,数据仓库存储历史数据的
  • 数据库设计应该避免冗余,而数据仓库设计是有意引入冗余的
  • 数据库设计是为捕获数据而设计的,数据仓库是为分析数据而射进的
  • 用户和系统的面向性:OLTP是面向客户的,用于办事员、客户和信息技术专业人员的事务和查询处理。OLAP是面向市场的,用于知识工人(包括经理、主管和分析人员)的数据分析。
  • 数据内容:OLTP 系统管理的是当前数据,通常这种数据太琐碎,很难用于决策。OLAP 系统管理的则是大量的历史数据,提供汇总和聚集机制,并在不同的粒度层上存储和管理信息,这些特点使得数据更容易用于有根据的决策。
  • 访问模式:OLTP系统主要由短的原子事务组成,这种系统需要并发控制和恢复机制。然而,对 OLAP 系统的访问大部分是只读操作(由于大部分数据仓库存放历史数据,而不是最新数据),尽管许多访问可能是复杂的查询。
  • 文件系统:hive 分布式文件系统 数据库本地文件系统
  • 数据规模上 hive 没有瓶颈

数据库数仓分离开的原因

  • 分离的主要原因是有助于提高两个系统的性能。操作数据库是为已知的任务和负载设计的,如使用的主键索引,检索特定的记录,优化“定制的”查询。而数据仓库的查询通常是复杂的,涉及大量数据汇总级的计算,可能需要特殊的基于多维视图的数据组织、存取方法和实现方法。在操作数据库上处理 OLAP 查询,可能会大大降低操作任务的性能。
  • 操作数据库支持多事务的并发处理,需要并发控制和恢复机制(例如,加锁和记日志),以确保一致性和事务的鲁棒性。通常,OLAP 查询只需要对汇总和聚集数据记录进行只读访问。如果将并发控制和恢复机制用于这种 OLAP 操作,就会危害并行事务的运行,从而大大降低 OLTP 系统的吞吐量。
  • 数据仓库与操作数据库分离是由于这两种系统中数据的结构、内容和用法都不相同。决策支持需要历史数据,而操作数据库一般不维护历史数据。在这种情况下,操作数据库中的数据尽管很丰富,但对于决策是远非完整的。决策支持需要整合来自异构源的数据(例如,聚集和汇总),产生高质量的、纯净的和集成的数据。操作数据库只维护详细的原始数据(如事务),这些数据在进行分析之前需要整理。由于两种系统提供大不相同的功能,需要不同类型的数据,因此需要维护分离的数据库。

OLAP 与 OLTP

数仓建模—数仓初识_第4张图片

  • 业务类系统主要供基层人员使用,进行一线业务操作,通常被称为OLTP(On-Line Transaction Processing,联机事务处理)。
  • 数据分析的目标则是探索并挖掘数据价值,作为企业高层进行决策的参考,通常被称为OLAP(On-Line Analytical Processing,联机分析处理)。
  • 从功能角度来看,OLTP负责基本业务的正常运转,而业务数据积累时所产生的价值信息则被OLAP不断呈现,企业高层通过参考这些信息会不断调整经营方针,也会促进基础业务的不断优化,这是OLTP与OLAP最根本的区别(其他OLTP与OLAP的差别各位可以自行网上搜索,这里不再啰嗦)

OLAP

维度
  • 维(Dimension):人们观察事物的视角,如时间、地理位置、年龄和性别等,是单一角度概念。
  • 维的层次(Lever of Dimension):表示维度概念基础上进一步的细分,如时间可以细分为年、季度、月三个层次。
  • 维成员(Member of Dimension):表示维不可再细分的原子取值,如时间维的成员可以是2019年1月10日。
  • 度量(Measure):表示在这个维成员上的取值。
操作
下探(Drill down)
  • 维度是有层次的,下探表示进入维度的下一层,将汇总数据拆分到下一层所在细节数据信息,如下图从第二季度下探到看4、5、6月的明细数据。

######上钻(Drill up) 下探的反向操作,回到更高汇聚层的汇总数据。

切片(Slice)
  • 切片可以理解成把立体按某一个维度进行切分,就可以看两维数据,如图中按电子产品切分,看到的是时间和地理位置关系的二维数据。
切块(Dice)
  • 相对于切片是按一个点切分,切块就是按一个范围(区间)来做切分。
旋转(Pivot)
  • 维的行列位置交换,换一个视角分析数据。
OLAP分类
  • OLAP按存储器的数据存储格式分为ROLAP、MOLAP和HOLAP。
MOLAP(Multi-dimensional OLAP)
  • 以多维数组(Multi-dimensional Array)存储模型的OLAP,是OLAP发源最初的形态,某些方面也等同于OLAP。
  • 它的特点是数据需要预计算(pre-computaion),然后把预计算之后的结果(cube)存在多维数组里。
优点
  • cube包含所有维度的聚合结果,所以查询速度非常快。
  • 计算结果数据占用的磁盘空间相对关系型数据库更小
缺点
  • 空间和时间开销大。update cube的时间跟计算维度(degree)相关,随着维度增加计算时间大幅增加,此外预计算还会造成数据库占用急剧膨胀。
  • 查询灵活度比较低。需要提前设计维度模型,查询分析的内容仅限于这些指定维度,增加维度需要重新计算
ROLAP(Relational OLAP)
  • 基于关系模型存放数据,一般要求事实表(fact table)和维度表(dimensition table)按一定关系设计,它不需要预计算,使用标准SQL就可以根据需要即时查询不同维度数据。
优点
  • 扩展性强,适用于维度数量多的模型,MOLAP对于维度多的模型预计算慢,空间占用大
  • 更适合处理non-aggregate事实,例如文本描述
  • 基于row数据更容易做权限管理
缺点
  • 因为是即时计算,查询响应时间一般比预计算的MOLAP长
HOLAP
  • 业界还没有一致的定义,它是MOLAP和ROLAP类型的混合运用,细节的数据以ROLAP的形式存放,更加方便灵活,而高度聚合的数据以MOLAP的形式展现,更适合于高效的分析处理。公司使用HOLAP的目的是根据不同场景来利用不同OLAP的特性。
产品
MOLAP 产品
  • 有 Cognos Powerplay, Oracle Database OLAP Option, MicroStrategy, Microsoft Analysis Services, Essbase, TM1, Jedox ,icCube和kylin等。
ROLAP产品
  • 有Vertica、Amazon Redshift、Google Dremel、Hulu Nesto、Presto、Druid、Impala、Greenplum、HAWQ和Doris等。
当前OLAP的发展状态
  • 在国内,不论传统公司还是互联网公司,都开始利用OLAP技术分析挖掘大数据的价值,国内除BAT等大厂会自研OLAP产品外,其他中小互联网公司普遍拥抱开源,会使用Kylin、Presto、impala、Druid和Greenplum等开源技术来实现OLAP分析查询业务。
  • 在调研了市面上主流的开源OLAP引擎后发现,目前还没有一个系统能够满足各种场景的查询需求。其本质原因是,没有一个系统能同时在数据量、性能、和灵活性三个方面做到完美,每个系统在设计时都需要在这三者间做出取舍。

数仓建模—数仓初识_第5张图片

灵活性
  • 预计算系统(Druid/Kylin等)则在入库时对数据进行预聚合,进一步牺牲灵活性换取性能,以实现对超大数据集的秒级响应。
    缺点:不太灵活
  • MPP和搜索引擎系统无法满足超大数据集下的性能要求,因此很自然地会考虑预计算系统。而Druid主要面向的是实时Timeseries数据,我们虽然也有类似的场景,但主流的分析还是面向数仓中按天生产的结构化表,因此Kylin的MOLAP Cube方案是最适合作为大数据量时候的引擎。

数据集市

  • 在数据仓库架构中,还存在一种形态,叫数据集市。
  • 数据集市往往服务于一组特定群体的分析需求(如会计部分或者信贷部门)。
  • 有些数据集市是独立的,也就是说它可以独立于数据仓库存在,而直接由业务数据库的历史应用创建。
  • 但更多的情况是,数据集市往往作为数据仓库之上的一个面向分析应用,换言之,数据集市的用户往往是直接和业务相关的分析应用。

商业智能系统

  • **商业智能(BusinessIntelligence,BI)**是一个统称,指的是用于支持制定业务决策的技能、流程、技术、应用和实践。商业智能是将企业中现有的数据转化为知识,以帮助企业做出明智的业务经营决策的工具
  • 具体来说,它通过对商业信息进行搜集、管理和分析,旨在使企业的各级决策者获得知识或洞察力(Insight),从而促使他们做出对企业更有利的决策。
  • 从技术层面上讲,商业智能不是什么新技术,它只是数据仓库、OLAP 等技术的综合运用
  • 大多数的数据仓库是为了挖掘某种商业价值而创建的,但是商业智能和数据仓库之间的区别在于,商业智能的定位是生成可向业务用户交付的产品,而数据仓库只对数据进行结构化的存储和组织,所以数据仓库需要 OLAP 技术,才能向商业智能转换

数仓建模—数仓初识_第6张图片

  • 可以看出,商业智能系统通过对数据仓库的数据进行数据选择、抽取、加载后,使用数据挖掘方法提取知识,再用BI报表将知识呈现给决策者供其参考。
  • 一款优秀的商业智能系统应该满足以下四个特性:准确、及时、价值高和可操作。准确性的意义是数据是可信的,及时性意味着数据可定期获取,价值高表示对商业用户有用,可操作性是指信息可以用于业务决策过程

数据立方体

  • 在一个较大型的组织中,一般会同时构建成百上千个数据立方体,于是选择 ORC 格式储存就显得尤为重要。因为在一个正常的商业智能系统的项目中,一般来说 ETL 和构建数据立方体会占整个开发时间的 70%-80%,而真正的分析只需要很少的时间。

数据源

  • 获取来自多个数据源的数据是为了打破数据孤岛

你可能感兴趣的:(数据仓库,数据建模,数据仓库,大数据,数据建模)