Skip to content

Latest commit

 

History

History
116 lines (93 loc) · 8.6 KB

1.数据仓库.md

File metadata and controls

116 lines (93 loc) · 8.6 KB
1、什么是数据仓库?
数据仓库,英文名称Data Warehouse,简写为DW。
数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、
反映历史变化(Time Variant)的数据集合,它用于支持企业或组织的报表分析以及决策处理。
2、数据仓库好处是什么,为什么要进行数仓建模?
消除数据冗余存储
提高数据支持业务效率
提高数据质量
3、数据仓库建模模型有哪些?
范式建模:
一个符合第三范式的关系必须具有一下三个条件:
     每个属性的值唯一,不具有多义性;
     每个非主属性必须完全依赖于整个主键,而非主键的一部分;
     每个非主属性不能依赖于其它关系中的属性;   
目的:(1):减少数据冗余,尽量让每个数据只出现一次;(2)保证数据一致性
     
维度建模:
一般用到的模型有:
        星型模型、雪花模型、星座模型
4、概念模型、逻辑模型、物理模型?
概念模型:根据用户需求,通过分析抽取概念性的要素,确立实体、属性、联系三要素等,使用E-R图表示;
逻辑模型:逻辑模型是将概念模型转化为具体的数据模型的过程,根据概念模型设计的E-R图转成相对应的逻辑模型,这种转换要符合关系数据模型的原则。
物理模型:物理数据模型是在逻辑数据模型的基础上,考虑各种具体的技术实现因素,进行数据库体系结构设计,真正实现数据在数据库中的存放。
5、数据仓库中表的分类?
实体表:一般是指现实存在的业务对象。
维度表:一般是指对应一些业务状态,也可称为码表。
事务型事实表:一般指随着业务发生不断产生数据,特点是一旦发生不会再变化。
周期型事实表:一般指随着业务发生不断产生变化(更新,新增)的数据,如订单。
6、数据仓库中表同步策略?
全量表:存储完整的数据;
增量表:存储新增加的数据;
拉链表:记录历史数据的每个状态,记录一个事物从开始,一直到当前状态的所有变化的信息;
流水表:对于表的每一个修改都会记录,可以用于反映实际记录的变更。

实体表(用户,商品,商家):每日全量;
维度表(订单状态,审批状态,商品分类):每日全量;
事务型事实表(交易流水,操作日志,出库入库记录):数据量大且不变,每日增量表,每日创建一个分区存储;
周期型事实表(订单,请假等):用每日新增和变化表,制作一张拉链表;

拉链表和流水表:
流水表存放的是一个用户的变更记录,比如在一张流水表中,一天的数据中,会存放一个用户的每条修改记录,但是在拉链表中只有一条记录。
这是拉链表设计时需要注意的一个粒度问题。我们当然也可以设置的粒度更小一些,一般按天就足够。
7、离线数仓
大数据一般使用Hive构建离线数据仓库。
经典的4层分层:
ods:operation data store原始数据层,数据保持原貌不做处理。
dwd:data warehouse detail明细数据层,结构和粒度与原始表保持一致,对ods层数据进行清洗(去除空值,脏数据)。
dws:data warehouse service数据汇总层,数据轻度汇总。
ads:application data store 数据应用层,为各种统计报表提供数据。
8、实时数仓
大数据一般使用Kafka构建实时数据仓库
9、Lambda架构
一种逻辑两套代码
Lambda 架构(Lambda Architecture)是由 Twitter 工程师南森·马茨(Nathan Marz)提出的大数据处理架构。
这一架构的提出基于马茨在 BackType 和 Twitter 上的分布式数据处理系统的经验。

Lambda 架构总共由三层系统组成:批处理层(Batch Layer),速度处理层(Speed Layer),以及用于响应查询的服务层(Serving Layer)。
而Batch Layer和Speed Layer由于需要满足不同的场景,往往会选择不同的组件。
10、Kappa架构
Kappa 架构是由 LinkedIn 的前首席工程师杰伊·克雷普斯(Jay Kreps)提出的一种架构思想。
克雷普斯是几个著名开源项目(包括 Apache Kafka 和 Apache Samza 这样的流处理系统)的作者之一,也是现在 Confluent 大数据公司的 CEO。

与 Lambda 架构不同的是,Kappa 架构去掉了批处理层这一体系结构,而只保留了速度处理层。
11、OLAP与OLTP区别
OLTP(On-Line Transaction Processing)联机事务处理,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。
主要应用是传统关系型数据库。OLTP系统强调的是内存效率,实时性比较高。 
如Mysql、Oracle、Redis、Hbase等。

OLAP(On-Line Analytical Processing)联机分析处理,也称为面向交易的处理过程,其基本特征是接收的用户数据可以立即传送到
计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。应用在数据仓库,使用对象是决策者。
OLAP系统强调的是数据分析,响应速度要求没那么高。
如Doris、Clickhouse、Druid、Impala、Presto、Greenplum、Kylin等。
12、OLAP按存储器的数据“存储格式”划分
OLAP按存储器的数据“存储格式”分为
1、ROLAP(Relational OLAP)(关系型在线分析)
充分利用所有资源快速计算 ,完全基于关系模型进行存储数据,不需要预计算,按需即时查询。明细和汇总数据都保存在关系型数据库事实表中。
ROLAP可选Presto、impala、Hive、SparkSQL、Greenplum等,ClickHouse则是ROLAP的佼佼者。
2、MOLAP(Multi-dimensional OLAP)(多维在线分析):
用空间换时间,基于多维数组的存储模型,也是OLAP最初的形态,特点是对数据进行预计算,以空间换效率,明细和聚合数据都保存在cube中。
但生成cube需要大量时间和空间。MOLAP可选Doris、Kylin、Druid。
3、HOLAP(Hybrid OLAP):
HOLAP ,混合模型,细节数据以ROLAP存放,聚合数据以MOLAP存放。这种方式相对灵活,且更加高效。可按企业业务场景和数据粒度进行取舍,
没有最好,只有最适合。
13、OLAP按“查询类型”划分
OLAP按照“查询类型”划分,OLAP一般分为
1、即席查询:通过手写sql完成一些临时的数据分析需求,这类sql形式多变、逻辑复杂,对查询时间没有严格要求。
2、固化查询:指的是一些固化下来的取数、看数需求,通过数据产品的形式提供给用户,从而提高数据分析和运营的效率。
这类的sql固定模式,对响应时间有较高要求。
14、OLAP按“架构实现”划分
1、MPP架构系统(Doris/ClickHouse/Presto/Impala/SparkSQL/Greenplum/Drill等)。这种架构主要还是从查询引擎入手,使用分布式查询引擎,
而不是使用hive+mapreduce架构,提高查询效率。
2、搜索引擎架构的系统(es,solr等),在入库时将数据转换为倒排索引,采用Scatter-Gather计算模型,牺牲了灵活性换取很好的性能,
在搜索类查询上能做到亚秒级响应。但是对于扫描聚合为主的查询,随着处理数据量的增加,响应时间也会退化到分钟级。
3、预计算系统(Druid/Kylin等)则在入库时对数据进行预聚合,进一步牺牲灵活性换取性能,以实现对超大数据集的秒级响应。
15、MPP架构
MPP (Massively Parallel Processing),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,
业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,
作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。

简单来说,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(与Hadoop相似)。