数据仓库面试题汇总-数仓-四

目录

    • 1.数仓与关系数据库区别?
    • 2.数仓为什么需要分层?优缺点?
      • 2.1 什么是数仓?
      • 2.2 数据仓库建模的意义,为什么要对数据仓库分层?
    • 3.数仓链路很长怎么保证任务有序执行?
    • 4.消息队列(了解)
    • 5 触发器
      • 5.1 是什么?
      • 5.2 触发器有如下作用:
      • 5.3 分类
    • 6.表之间依赖是怎么触发的?(时间触发、版本触发)
    • 7.维度建模的方法?优缺点?
      • 7.1 什么是维度建模?
      • 7.2 优缺点
    • 8.事实表、维度表怎么建立?-设计原则
    • 9.建模过程中逻辑模型和物理模型的区别?
    • 10.哔哩哔哩up主投稿,对于看稿件这一行为怎么去建模?

1.数仓与关系数据库区别?

联系:数据仓库是由数据库以一种方式组织起来的。
区别:
(1)数据库强调范式,尽可能减少冗余;
数据仓库强调查询分析的速度,优化读取的操作,主要目的是做大量数据的查询
(2) 数据库是行存储,数据仓库是列存储
(3)数据库面向事务的,在线交易处理(OLTP)
数据仓库是面向主题的、集成、相对稳定、反应历史变化存储历史数据(OLAP)。
(4)数据仓库定期写入新数据,而不覆盖原有数据,而是给数据加上时间戳。
(5)数据仓库两个基本元素:事实表和维度表
事实表存储要查询的数据;维度是看待问题的角度,如时间、部门等。

2.数仓为什么需要分层?优缺点?

2.1 什么是数仓?

面向主题的、集成的、相对稳定的、反映历史变化的数据集合
为企业所有级别的决策制定过程,提供所有类型数据支撑的战略集合,主要是用于数据挖掘和数据分析,以建立数据沙盘为基础,为消灭消息孤岛和支持决策为目的而创建的。

2.2 数据仓库建模的意义,为什么要对数据仓库分层?

  1. 用空间换时间,通过大量的预处理来提升应用系统的用户体验(效率),因此数据仓库会存在大量冗余的数据;不分层的话,如果源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大
  2. 通过数据分层管理可以简化数据清洗的过程,因为把原来一步的工作分到了多个步骤去完成,相当于把一个复杂的工作拆成了多个简单的工作,把一个大的黑盒变成了一个白盒,每一层的处理逻辑都相对
    https://blog.csdn.net/qq_39093097/article/details/100126722
    版本二:
    只有数据模型
    将数据有序的组织和存储起来
    之后,大数据才能得到高性能、低成本、高效率、高质量的使用。
    1、清晰数据结构
    每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
    2、数据血缘追踪
    简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
    3、减少重复开发
    规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
    极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低存储和计算成本。
    4、用空间换时间,把复杂问题简单化。
    讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
    5、屏蔽原始数据的异常屏蔽业务的影响,不必改一次业务就需要重新接入数据。
    在业务或系统发生变化时,可以保持稳定或很容易扩展,提高数据稳定性和连续性。
    扩展内容见:https://blog.csdn.net/qq_22473611/article/details/103278799

3.数仓链路很长怎么保证任务有序执行?

4.消息队列(了解)

消息队列
1.什么是消息队列?
可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。目前使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka,RocketMQ
2.使用消息队列好处?
1.通过异步处理提高系统性能(削峰、减少响应所需时间);
2.降低系统耦合性。
学习链接

5 触发器

5.1 是什么?

  1. 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。
  2. 触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。
  3. 触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。
  4. 触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。
  5. 此外触发器是逻辑电路的基本单元电路,具有记忆功能,可用于二进制数据储存,记忆信息等。

5.2 触发器有如下作用:

可在写入数据表前,强制检验或转换数据
触发器发生错误时,异动的结果会被撤销
部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。
可依照特定的情况,替换异动的指令 (INSTEAD OF)。

5.3 分类

SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。
来自百度百科

6.表之间依赖是怎么触发的?(时间触发、版本触发)

触发器
1、什么是触发器?

触发器是一种特殊的存储过程,主要是通过事件来触发而被执行的
2、触发器的作用?
(1)可以强化约束,来维护数据的完整性和一致性;可以跟踪数据库内的操作,从而不允许未经许可的更新和变化
(2)可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
3、触发器分类
触发时间:有before,after.
触发事件:有insert,update,delete三种
触发类型:有行触发、语句触发

7.维度建模的方法?优缺点?

7.1 什么是维度建模?

  1. 星型模型:是一种多维的数据关系。由一个事实表和一组维表组成,每个维表都有一个维作为主键,所有维的主键组合成事实表的主键。多维数据集的每一个维度都直接与事实表相连,不存在渐变维度,所以数据有一定冗余
  2. 雪花模型:雪花模型是当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上。雪花模型是对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。
  3. 星座模型:星座模型是数仓建设中的一种概念模型。这种模型往往应用于数据关系比星型模型和雪花模型更复杂的场合。事实星座模型需要多个事实表共享维度表,因而可以视为星形模型的集合,也称为星系模型。
    2.2 特点:
  4. 星型模型:关联关系简单、方便解耦,关联查询方便适用于大数据环境的数据模型建。但表中存在冗余数据。查询效率比雪花型高。
  5. 雪花模型:层级较多,关联不方便,但冗余数据较少
  6. 星座模型:在星型模型基础上共享维表。更适合复杂的数据环境。
    应用:
    雪花模型在**应用系统的表设计(关系型数据库)**中涉及的会比较多,
    **分析系统偏向于(大数据系统的数据库hadoop)**星型模型

7.2 优缺点

优点

  1. 简化查询-每次需要从数据库中获取一些信息时,可以不用编写冗长的查询
  2. 优化读取-针对读取进行了优化,可以写更少的JOIN,更快地返回结果
    缺点
  3. 对数据进行非规范化意味着一次性插入或更新会导致数据异常。在实践中,星型模型是通过批处理实来弥补这一问题
  4. 分析灵活性有限。星型模型通常是为特定目的而设计的。在分析需求方面,它不像规范化数据模型那样灵活

8.事实表、维度表怎么建立?-设计原则

  1. 事实表:事实表存储了从业务活动或事件提炼出来的性能度量,它主要包含维度表的外键和连续变化的可加性数值或半可加事实。事实表产生于业务过程中而不是业务过程的描述性信息。在维度模型中也有表示多对多关系的事实,其他都是维度表。
  2. 维度表:维度表是对业务过程的上下文描述,主要包含代理键、文本信息和离散的数字。它是进入事实表的入口,丰富的维度属性给出了对事实表的分析切割能力。
    如果属性值是离散的,用于过滤和标记的,就放到维度表里,如果是属性值是连续取值,用于计算的,就放到事实表中
    首先,明确一个定义:
    代理键:维度表中的主键。
    创建维度表的规则
    主键(代理键,自动增加编号,数据仓库中只有唯一编号)
    业务键(业务键可以链接回数据源,具有业务含义)
    属性(来自数据源的描述性信息)
    有两种数据:主数据和事务数据。
    主数据是指实体(例如员工),而交易数据是指使用该实体执行的所有交易。
    主数据有限,而交易数据可能是数十亿。
    在维度表中,大多数数据是主数据。
    创建事实表的规则:
    主键(代理键/备用键,自动增加编号)
    外键(维度表中的主键/代理键/备用键)
    度量(addictive number/semi-addictive number)
    提示:事实表中没有描述性数据。
    转载自

9.建模过程中逻辑模型和物理模型的区别?

1、概念模型:就是从现实世界到信息世界的第一层抽象,确定领域实体属性关系等,使用E-R图表示,E-R图主要是由实体、属性和联系三个要素构成的。
2、逻辑模型:是将概念模型转化为具体的数据模型的过程,即按照概念结构设计阶段建立的基本E-R图按选定的管理系统软件支持的数据模型(层次、网状、关系、面向对象),转换成相应的逻辑模型。这种转换要符合关系数据模型的原则。目前最流行就是关系模型(也就是对应的关系数据库)
E-R图向关系模型的转换是要解决如何将实体和实体间的联系转换为关系,并确定这些关系的属性和码。这种转换一般按下面的原则进行:
(1)一个实体转换为一个关系,实体的属性就是关系的属性,实体的码就是关系的码。
(2)一个联系也转换为一个关系,联系的属性及联系所连接的实体的码都转换为关系的属性,但是关系的码会根据联系的类型变化,如果是:
1:1联系,两端实体的码都成为关系的候选码。
1:n联系,n端实体的码成为关系的码。
m:n联系,两端实体码的组合成为关系的码。
3、物理模型就根据逻辑模型对应到具体的数据模型的机器实现。物理模型是对真实数据库的描述。如关系数据库中的一些对象为表、视图、字段、数据类型、长度、主键、外键、索引、约束、是否可为空、默认值。
4、三者关系:由上到下,先要概念设计,接着逻辑设计,再是物理设计,一级一级设计。

10.哔哩哔哩up主投稿,对于看稿件这一行为怎么去建模?

1. 数据模型的建立一般分为四步:
需求分析(客户交流、理解需求、形成实体)
概念模型设计 (形成E-R图)
逻辑模型设计(对实体进行细化,细化成具体的表,同时丰富表结构。)
物理模型设计
实施运行维护
2. 一般情况下,面对比较复杂的数据库建模, 规范的做法是:
第一步: 需求分析,获得业务流程图,数据流图和数据字典
第二步:根据数据流图和数据字典建立E-R图
第三步:E-R图转换成为物理数据模型
第四部:实施物理数据模型

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