-
数据仓库面试题
2020-07-20 12:49:16文章目录数据仓库的定义?数据仓库和数据库的区别?如何构建数据仓库?什么是数据中台?数据中台、数据仓库、大数据平台的关键区别是什么?基础能力上的区别业务能力上的区别大数据的一些相关系统?如何建设数据中台...文章目录
- 数据仓库的定义?
- 数据仓库和数据库的区别?
- 如何构建数据仓库?
- 什么是数据中台?
- 数据中台、数据仓库、大数据平台的关键区别是什么?
- 大数据的一些相关系统?
- 如何建设数据中台?
- 数据湖的理解?
- 数仓最重要的是什么?
- 概念数据模型、逻辑数据模型、物理数据模型
- SCD的常用处理方式?
- 元数据的理解?
- 元数据管理系统?
- 印象最深刻的项目是什么?为什么?亮点与优势?
- 数仓如何确定主题域?
- 如何控制数据质量?
- 如何做数据治理?
- 模型设计的思路?业务驱动?数据驱动?
- 数据质量管理
- 什么是数据模型?
- 为什么需要数据仓库建模?
- OLAP和OLTP的模型方法的选择?
- 3范式?
- 数据仓库建模方法?
- 事实表的类型?
- 数仓架构为什么要分层?
- 数据分层思想?
- 数仓架构进化
- OLAP简介
- OLAP分类
- 开源OLAP解决方案
- OLAP引擎
- 参考
数据仓库的定义?
首先,用于支持决策,面向分析型数据处理;其次,对多个异构的数据源有效集成,集成后按照主题进行重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。
数据仓库(Data Warehouse)是一个面向主题的(subject oriented)、集成的(integrated)、相对稳定的(non-volatile)、反应历史变化(time variant)的数据集合,用于支持管理决策(decision making support)。
数据仓库和数据库的区别?
从目标、用途、设计来说
- 数据库是面向事物处理的,数据是由日常的业务产生的,常更新;数据仓库是面向主题的,数据来源多样,经过一定的规则转换得到,用来分析。
- 数据库一般用来存储当前事务性数据,如交易数据;数据仓库一般存储的历史数据。
- 数据库的设计一般是符合三范式的,有最大的精确度和最小的冗余度,有利于数据的插入;数据仓库的设计一般不符合三范式,有利于查询
如何构建数据仓库?
数仓模型的选择是灵活的,不局限于某种模型方法。
数仓数据是灵活的,以实际需求场景为导向。
数仓设计要兼顾灵活性、可扩展性,要考虑技术可靠性和实现成本。
https://www.zhihu.com/question/19703294
-
系统分析,确定主题。通过与业务部门的交流,了解建立数仓要解决的问题,确认各个主题下的查询分析要求
-
选择满足数据仓库系统要求的软件平台。选择合适的软件平台,包括数据库、建模工具、分析工具等
-
建立数据仓库的逻辑模型。确定建立数据仓库逻辑模型的基本方法,基于主题视图,把主题视图中的数据定义转到逻辑数据模型中
-
逻辑数据模型转换为数据仓库数据模型
-
数据仓库数据模型优化。随着需求和数据量的变化进行调整
-
数据清洗转换和传输。业务系统中的数据加载到数据仓库之前,必须进行数据的清洗和转换,保证数据仓库中数据的一致性。
-
开发数据仓库的分析应用。满足业务部门对数据进行分析的需求。
-
数据仓库的管理。包括数据库管理和元数据管理。
什么是数据中台?
数据中台是指通过数据技术,对海量数据进行采集、计算、存储、加工,同时统一标准和口径。数据中台吧数据统一之后,会形成标准数据,再进行存储,形成大数据资产层,进而为客户提供高效服务。
这些服务和企业的业务有较强的关联性,是企业所独有且能复用的,它是企业业务和数据的积淀,其不仅能降低重复建设,减少烟囱式协作的成本,也是差异化竞争的优势所在。
数据中台通过整合公司开发工具、打通全域数据、让数据持续为业务赋能,实现数据平台化、数据服务化和数据价值化。数据中台更加侧重于“复用”与“业务”。
数据中台、数据仓库、大数据平台的关键区别是什么?
基础能力上的区别
数据平台:提供的是计算和存储能力
数据仓库:利用数据平台提供的计算和存储能力,在一套方法论指导下建设的一整套的数据表
数据中台:包含了数据平台和数据仓库的所有内容,将其打包,并且以更加整合以及更加产品化的方式对外提供服务和价值。
业务能力上的区别
数据平台:为业务提供数据主要方式是提供数据集
数据仓库:相对具体的功能概念是存储和管理一个或多个主题数据的集合,为业务提供服务的方式主要是分析报表
数据中台:企业级的逻辑概念,提现企业数据产生价值的能力,为业务提供服务的主要方式是数据API
总的来说,数据中台距离业务更近,数据复用能力更强,能为业务提供速度更快的服务。数据中台是在数据仓库和数据平台的基础上,将数据生产为一个个数据API服务,以更高效的方式提供给业务。数据中台可以建立在数据仓库和数据平台之上,是加速企业从数据到业务价值的过程的中间层。
大数据的一些相关系统?
数仓设计中心:按照主题域、业务过程,分层的设计方式,以维度建模作为基本理论依据,按照维度、度量设计模型,确保模型、字段有统一的命名规范
数据资产中心:梳理数据资产,基于数据血缘,数据的访问热度,做成本的治理
数据质量中心:通过丰富的稽查监控系统,对数据进行事后校验,确保问题数据第一时间被发现,避免下游的无效计算,分析数据的影响范围。
指标系统:管理指标的业务口径、计算逻辑和数据来源,通过流程化的方式,建立从指标需求、指标开发、指标发布的全套协作流程
数据地图:提供元数据的快速索引,数据字典、数据血缘、数据特征信息的查询,相当于元数据中心的门户。
如何建设数据中台?
http://baijiahao.baidu.com/s?id=1651988047250956280&wfr=spider&for=pc
数据中台在企业落地实践时,结合技术、产品、数据、服务、运营等方面,逐步开展相关工作。
- 理现状。了解业务现状、数据现状、IT现状、现有的组织架构
- 定架构。确认业务架构、技术架构、应用架构、组织架构
- 建资产。建立贴近数据层、统一数仓层、标签数据层、应用数据层
- 用数据。对数据进行输出、应用。
- 数据运营。持续运营、持续迭代
中台建设需要有全员共识,由管理层从上往下推进,由技术和业务人员去执行和落地是一个漫长的过程,在实施数据中台时,最困难的地方就是需要有人推动。
数据湖的理解?
数据湖是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析及传输。
数仓最重要的是什么?
个人认为是数据集成。
企业的数据通常是存储在多个异构数据库中的,要进行分析,必须先要对数据进行一致性整合。
集成整合后才可以对数据进行分析、挖掘数据潜在的价值。
概念数据模型、逻辑数据模型、物理数据模型
概念数据模型设计与逻辑数据模型设计、物理数据模型设计是数据库及数据仓库模型设计的三个主要步骤。
概念数据模型CDM
conceptual data model
概念数据模型是最终用户对数据存储的看法,反映了最终用户综合性的信息需求,以数据类的方式描述企业级的数据需求。
概念数据模型的内容包括重要的实体与实体之间的关系。在概念数据模型中不包含实体的属性,也不包含定义实体的主键
概念数据模型的目标是统一业务概念,作为业务人员和技术人员之间沟通的桥梁,确定不同实体之间的最高层次的关系
逻辑数据模型LDM
logical data model
逻辑数据模型反应的是系统分析设计人员对数据存储的观点,是对概念数据模型的进一步的分解和细化。逻辑数据模型是根据业务规则确定的,关于业务对象、业务对象的数据项以及业务对象之间关系的基本蓝图
逻辑数据模型的内容包括所有的实体和关系,确定每个实体的属性,定义每个实体的主键,指定实体的外键,需要进行范式化处理。
逻辑数据模型的目标是尽可能详细的描述数据,但并不考虑在物理上如何实现
物理数据模型PDM
physical data model
物理数据模型是在逻辑数据模型的基础上,考虑各种具体的技术实现因素,进行数据库体系结构设计,真正实现数据在数据库中的存放。
物理数据模型的内容包括确定所有的表和列,定义外键用于确认表之间的关系,基于用户的需求可能要进行反范式化等内容。
SCD的常用处理方式?
slowly changing dimensions缓慢变化维度
- 不记录历史变化信息
- 添加列来记录历史变化
- 新插入数据行,并添加对应标识字段来记录历史数据。拉链表。
元数据的理解?
https://www.jianshu.com/p/f7c26b4ebe3c
狭义来讲就是用来描述数据的数据
广义来看,除了业务逻辑直接读写处理的业务数据,所有其他用来维护整个系统运转所需要的数据,都可以较为元数据。
定义:元数据metadata是关于数据的数据。在数仓系统中,元数据可以帮助数据仓库管理员和数据仓库开发人员方便的找到他们所关心的数据;元数据是描述数据仓库内部数据的结构和建立方法的数据。按照用途可分为:技术元数据、业务元数据。
技术元数据
存储关于数据仓库技术细节的数据,用于开发和管理数据仓库使用的数据
- 数据仓库结构的描述,包括数据模式、视图、维、层次结构和导出数据的定义,以及数据集市的位置和内容
- 业务系统、数据仓库和数据集市的体系结构和模式
- 由操作环境到数据仓库环境的映射,包括元数据和他们的内容、数据提取、转换规则和数据刷新规则、权限等。
业务元数据
从业务角度描述了数据仓库中的数据,他提供了介于使用者和实际系统之间的语义层,使不懂计算机技术的业务人员也能读懂数仓中的数据。
- 企业概念模型:表示企业数据模型的高层信息。整个企业业务概念和相互关系。以这个企业模型为基础,不懂sql的人也能做到心中有数
- 多维数据模型。告诉业务分析人员在数据集市中有哪些维、维的类别、数据立方体以及数据集市中的聚合规则。
- 业务概念模型和物理数据之间的依赖。业务视图和实际数仓的表、字段、维的对应关系也应该在元数据知识库中有所体现。
元数据管理系统?
元数据管理往往容易被忽视,但是元数据管理是不可或缺的。一方面元数据为数据需求方提供了完整的数仓使用文档,帮助他们能自主快速的获取数据;另一方面数仓团队可以从日常的数据解释中解脱出来,无论是对后期的迭代更新还是维护,都有很大的好处。元数据管理可以让数据仓库的应用和维护更加的高效。
元数据管理功能
- 数据地图:以拓扑图的形式对数据系统的各类数据实体、数据处理过程元数据进行分层次的图形化展示,并通过不同层次的图形展现。
- 元数据分析:血缘分析、影响分析、实体关联分析、实体差异分析、指标一致性分析。
- 辅助应用优化:结合元数据分析功能,可以对数据系统的应用进行优化。
- 辅助安全管理:采用合理的安全管理机制来保障系统的数据安全;对数据系统的数据访问和功能使用进行有效监控。
- 基于元数据的开发管理:通过元数据管理系统规范日常开发的工作流程
元数据管理标准
- 对于相对简单的环境,按照通用的元数据管理标准建立一个集中式的元数据知识库
- 对于比较复杂的环境,分别建立各部分的元数据管理系统,形成分布式元数据知识库,然后通过建立标准的元数据交换格式,实现元数据的集成管理。
元数据管理系统
自研
apache atlas
印象最深刻的项目是什么?为什么?亮点与优势?
数仓如何确定主题域?
https://www.jianshu.com/p/708f5606dd01
主题
主题是在较高层次上将数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对企业中某一宏观分析领域所涉及的分析对象。
面向主题的数据组织方式,就是在较高层次上对分析对象数据的一个完整并且一致的描述,能刻画各个分析对象所涉及的企业各项数据,以及数据之间的联系。
主题是根据分析的要求来确定的。
主题域
从数据角度看(集合论)
主题语通常是联系较为紧密的数据主题的集合。可以根据业务的关注点,将这些数据主题划分到不同的主题域。主题域的确定由最终用户和数仓设计人员共同完成。
从需要建设的数仓主题看(边界论)
主题域是对某个主题进行分析后确定的主题的边界。
数仓建设过程中,需要对主题进行分析,确定主题所涉及到的表、字段、维度等界限。
确定主题内容
数仓主题定义好以后,数仓中的逻辑模型也就基本成形了,需要在主题的逻辑关系中列出属性和系统相关行为。此阶段需要定义好数据仓库的存储结构,向主题模型中添加所需要的信息和能充分代表主题的属性组。
如何控制数据质量?
- 校验机制,每天进行数据量的比对 select count(*),早发现,早修复
- 数据内容的比对,抽样比对
- 复盘、每月做一次全量
如何做数据治理?
https://www.jianshu.com/p/44d7618f32b6
数据治理不仅需要完善的保障机制,还需要理解具体的治理内容,比如数据应该怎么进行规范,元数据该怎么来管理,每个过程需要那些系统或者工具来配合?
数据治理领域包括但不限于以下内容:数据标准、元数据、数据模型、数据分布、数据存储、数据交换、数据声明周期管理、数据质量、数据安全以及数据共享服务。
模型设计的思路?业务驱动?数据驱动?
构建数据仓库有两种方式:自上而下、自下而上
Bill Inmon推崇自上而下的方式,一个企业建立唯一的数据中心,数据是经过整合、清洗、去掉脏数据、标准的、能够提供统一的视图。要从整个企业的环境入手,建立数据仓库,要做很全面的设计。偏数据驱动
Ralph Kimball推崇自下而上的方式,认为数据仓库应该按照实际的应用需求,架子啊需要的数据,不需要的数据不要加载到数据仓库中。这种方式建设周期短,用户能很快看到结果。偏业务驱动
数据质量管理
https://blog.csdn.net/kuangfeng88588/article/details/99085074
数据质量管理是对数据从计划、获取、存储、共享、维护、应用、消亡生命周期的每个阶段里可能引发的数据质量问题,进行识别、度量、监控、预警等,通过改善了提高组织的管理水平使数据质量进一步提高。
数据质量管理是一个集方法论、技术、业务和管理为一体的解决方案。放过有效的数据质量控制手段,进行数据的管理和控制,消除数据质量问题,从而提高企业数据变现的能力。
会遇到的数据质量问题:数据真实性、数据准确性、数据一致性、数据完整性、数据唯一性、数据关联性、数据及时性
什么是数据模型?
数据模型就是数据组织和存储的方法,通过抽象的实体以及实体间联系的形式来表达现实世界中事务的相互关系的一种映射,他强调从业务、数据存取和使用角度合理的存储数据。
为什么需要数据仓库建模?
数仓建模需要按照一定的数据模型,对整个企业的数据进行采集,整理,提供跨部门、完全一致的报表数据。
合适的数据模型,对于大数据处理来讲,可以获得得更好的性能、成本、效率和质量。良好的模型可以帮助我们快速查询数据,减少不必要的数据冗余,提高用户的使用效率。
数据建模进行全方面的业务梳理,改进业务流程,消灭信息孤岛,更好的推进数仓系统的建设。
OLAP和OLTP的模型方法的选择?
OLTP系统是操作事物型系统,主要数据操作是随机读写,主要采用满足3NF的实体关系模型存储数据,在事物处理中解决数据的冗余和一致性问题。
OLAP系统是分析型系统,主要数据操作是批量读写,不需要关注事务处理的一致性,主要关注数据的整合,以及复杂大数据量的查询和处理的性能。
3范式?
- 每个属性值唯一,不具有多义性
- 每个非主属性必须完全依赖于整个主键,而非主键的一部分
- 每个非主属性不能依赖于其他关系中的属性
数据仓库建模方法?
有四种模型:ER模型、维度模型、Data Vault模型、Anchor模型。用的较多的是维度模型和ER模型。
ER模型
ER模型用实体关系模型描述企业业务,在范式理论上满足3NF。数仓中的3NF是站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系的抽象。
采用ER模型建设数据仓库模型的出发点是整合数据,将各个系统中的数据按照主题进行相似性整合,并进行一致性处理。
ER模型特点:
- 需要全方位了解企业业务数据
- 实施周期较长
- 对建模人员要求教高
维度建模
维度建模按照事实表和维度表来构建数仓。
维度建模从分析决策的需求出发构建模型,为分析需求服务。重点关注用户如何快速的完成数据分析,可以直观的反应业务模型中的业务问题,需要大量的数据预处理、数据冗余,有较好的大规模复杂查询的响应性能。
事实表
发生在现实世界中的操作性事件,其产生的可度量数值,存储在事实表中。从最细粒度级别来看,事实表的一行对应一个度量事件。事实表表示对分析主题的度量。‘
事实表中包含了与各个维度表相关联的外键,可与维度表关联。事实表的度量通常是数值类型,且记录数不断增加,表数据量迅速增长。
维度表
维度表示分析数据时所用的环境。
每个维度表都包含单独的主键列。维度表行的描述环境应该与事实表行完全对应。维度表通常比较宽,是扁平型的非规范表,包含大量的低粒度的文本属性。
注意
事实表的设计是以能够正确记录历史信息为准则
维度表的设计是以能够以合适的角度来聚合主题内容为准则
维度建模的三种模式
- 星形模型:以事实表为中心,所有的维度直接连接在事实表上。由一个事实表和一组维度表组成。
- 雪花模型:是对星形模型的扩展。雪花模型的维度表可以拥有更细的维度,比星形更规范一点。维护成本较高,且查询是要关联多层维表,性能较低
- 星座模型:基于多张事实表,多张事实表共享维度信息
维度建模步骤:
- 选择业务过程
- 选择粒度
- 选定事实表
- 选择维度
事实表的类型?
事实表有:事务事实表、周期快照事实表、累积快照事实表、非事实事实表
事务事实表
事务事实表记录的是事务层面的事实,保存的是最原子的数据,也称“原子事实表”。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务记录一条记录。
周期快照事实表
以具有规律性的、可预见的时间间隔来记录事实。它统计的是间隔周期内的度量统计,每个时间段一条记录,是在事务事实表之上建立的聚集表。
累积快照事实表
累积快照表记录的不确定的周期的数据。代表的是完全覆盖一个事务或产品的生命周期的时间跨度,通常具有多个日期字段,用来记录整个生命周期中的关键时间点。
非事实型事实表
https://www.cnblogs.com/lijun4017/archive/2010/08/05/1792293.html
这个与上面三个有所不同。事实表中通常要保留度量事实和多个维度外键,度量事实是事实表的关键所在。
非事实表中没有这些度量事实,只有多个维度外键。非事实型事实表通常用来跟踪一些事件或说明某些活动的范围。
第一类非事实型事实表是用来跟踪事件的事实表。例如:学生注册事件
第二类非事实型事实表是用来说明某些活动范围的事实表。例如:促销范围事实表
数仓架构为什么要分层?
- 分层可以清晰数据结构,使用时更好的定位和理解
- 方便追踪数据的血缘关系
- 规范数据分层,可以开发一些通用的中间层数据,能够减少极大的重复计算
- 把复杂问题简单化
- 屏蔽原始数据的异常。不必改一次业务就重新接入数据
数据分层思想?
理论上数据分为:操作数据层、数据仓库层、数据服务层。可根据需要添加新的层次,满足不同的业务需求。
操作数据层ODS
Operate Data Store操作数据存储。数据源中的数据经过ETL后装入ODS层。
ODS层数据的来源一般有:业务数据库、日志、抓取等。
数据仓库层DW
根据ODS层中的数据按照主题建立各种数据模型。
DW通常有:DWD、DWB、DWS
DWD: data warehouse detail细节数据层,是业务层和数据仓库的隔离层。
DWB: data warehouse base基础数据层,存储的是客观数据,一般用作于中间层。
DWS: data warehouse service服务数据层,整合汇总分析某个主题域的服务数据。一般是大宽表。
数据服务层/应用层ADS
该层主要提供数据产品和数据分析使用的数据,一般会放在ES、Mysql系统中供线上系统使用
数仓架构进化
经典数仓架构:使用传统工具来建设数仓
离线大数据架构:开始使用大数据工具来替代经典数仓中的传统工具
Lambda架构:在离线大数据架构的基础上,使用流处理技术直接完成实时性较高的指标计算
Kappa:实时处理变成了主要的部分,出现了以实时处理为核心的kappa架构
离线大数据架构
数据源通过离线的方式导入离线数仓中。下游应用根据业务需求选择获取数据的方式
Lambda架构
在离线数仓的基础上增加了实时计算的链路,并对数据源进行流式改造,实时计算去订阅消息队列,并推送到下游的数据服务中去。
Lambda架构问题:同样的需求需要开发两套一样的代码;资源占用增多
Kappa架构
kappa架构可以认为是lambda架构的简化版,移除了lambda架构中的批处理部分。
在kappa架构中,需求修改或者历史数据重新处理都通过上游重放完成
kappa架构最大的问题是流式重新处理历史数据的吞吐能力会低于批处理,但可以通过增加计算资源来弥补
总结
真实场景中,是lambda架构和kappa架构的混合。大部分实时指标通过kappa架构计算,少量关键指标用lambda架构批量计算
随着数据多样性的发展,数据库这种提前规定schema的模式显得力不从心。这时出现了数据湖技术,把原始数据全部缓存到某个大数据存储上,后续分析时根据需求去解析原始数据。简单来说,数据仓库模式是schema on write,数据湖模式是schema on read
OLAP简介
OLAP(On-line Analytical Processing),联机分析处理,其主要的功能在于方便大规模数据分析及统计计算,对决策提供参考和支持
特点:数据量大、高速响应、灵活交互、多维分析
OLAP分类
存储类型分类
ROLAP(RelationalOLAP)
MOLAP(MultimensionalOLAP)
HOLAP(HybridOLAP)
处理类型分类
- MPP架构
- 搜索引擎架构
- 预处理架构
开源OLAP解决方案
https://blog.csdn.net/weixin_42529806/article/details/97615618
- Persto、SparkSQL、Impala等MPP架构和ROLAP的引擎
- Druid和Kylin等预处理架构和MOLAP的引擎
- ES这种搜索引擎架构
- ClickHouse及IndexR这种列式数据库
OLAP引擎
https://www.cnblogs.com/kaleidoscope/p/10163678.html
Presto
Facebook开发的分布式大数据SQL查询引擎,专门进行快速数据分析
特点
- 可以将多个数据源的数据进行合并,可以跨越整个组织进行分析
- 直接从HDFS读取数据,在使用前不需要大量的ETL操作
查询原理
- 完全基于内存的并行计算
- 流水线
- 本地化计算
- 动态编译执行计划
- 小心使用内存和数据结构
- 类BlinkDB的近似查询
- GC控制
Druid
Druid是一个用于实时查询和分析的分布式实时处理系统,主要用于广告分析,互联网广告监控、度量和网络监控
特点
- 快速的交互式查询——Druid的低延迟数据摄取架构允许事件在它们创建后毫秒内可被查询到。
- 高可用性——Druid的数据在系统更新时依然可用,规模的扩大和缩小都不会造成数据丢失;
- 可扩展——Druid已实现每天能够处理数十亿事件和TB级数据。
- 为分析而设计——Druid是为OLAP工作流的探索性分析而构建,它支持各种过滤、聚合和查询
应用场景
- 需要实时查询分析
- 具有大量数据时,如每天数亿事件的新增、每天数10T数据的增加;
- 需要一个高可用、高容错、高性能数据库时。
- 需要交互式聚合和快速探究大量数据时
Kylin
Kylin是提供与Hadoop之上的SQL查询接口及多维分析能力以支持超大规模数据
特点
- 用户为百亿以上数据集定义数据模型并构建立方体
- 亚秒级的查询速度,同时支持高并发
- 为Hadoop提供标准SQL支持大部分查询功能
- 提供与BI工具,如Tableau的整合能力
- 友好的web界面以管理,监控和使用立方体
- 项目及立方体级别的访问控制安全
参考
面试问题准备-数据仓库建模篇 https://blog.csdn.net/lurrass/article/details/89061562
事实表的类型 https://blog.csdn.net/a6822342/article/details/99189806
浅析非事实表 https://www.cnblogs.com/lijun4017/archive/2010/08/05/1792293.html
-
华为数据仓库面试题
2013-08-14 22:00:09华为数据仓库面试题 -
数据仓库面试题资料
2015-05-02 14:59:00什么叫数据仓库? 数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它用于支持企业或组织的决策分析处理。 数据...什么叫数据仓库?
数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它用于支持企业或组织的决策分析处理。
数据仓库是为了便于多维分析和多角度展现而将数据按特定的模式进行存储所建立起来的关系型数据库,它的数据基于OLTP源系统。
首先,用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库;
其次,对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改
数据仓库的基本架构是什么?(数据源,ETL, data stage,ODS,data warehouse,datamart,OLAP等等)
数据仓库系统体系结构
1.数据源-> 2.ETL -> 3.数据仓库存储与管理-> 4.OLAP -> 5.BI工具
数据源:是数据仓库系统的数据源泉,通常包括企业各类信息,包括存放于RDBMS中的各种业务处理数据和各类文档数据;各类法律法规、市场信息和竞争对手的信息等等;
数据的存储与管理:数据的存储和管理是整个数据仓库的核心,是关键。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。从数据仓库的技术特点着手分析,来决定采用什么产品和技术来建立数据仓库,然后针对现有各业务系统的数据,进行抽取、清理,并有效集成,按照主题进行组织。数据仓库按照数据的覆盖范围可以分为企业级数据仓库和部门级数据仓库(通常称为数据集市)。
OLAP服务器:
对需要的数据进行有效集成,按多维模型予以组织,以便进行多角度、多层次的分析,并发现趋势。其具体实现可以分为:ROLAP(关系型在线分析处理)、MOLAP(多维在线分析处理)和HOLAP(混合型线上分析处理)。ROLAP基本数据和聚合数据均存放在RDBMS之中;MOLAP基本数据和聚合数据均存放于多维数据库中;HOLAP基本数据存放于RDBMS之中,聚合数据存放于多维数据库中。
前端工具:主要包括各查询工具、数据分析工具、数据挖掘工具、种报表工具以及各种基于数据仓库或数据集市的应用开发工具。
数据分析工具主要针对OLAP服务器。报表工具、数据挖掘工具主要针对数据仓库。
数据库和数据仓库有什么区别?
1.数据是面向事务处的,数据是由日常的业务产生的,常更新;数据仓库是面向主题的,数据来源于数据库或文件,经过一定的规则转换得到,用来分析的。
2.数据库一般是用来存储当前交易数据,数据仓库存储一般存储的是历史数据。
3.数据库的设计一般是符合三范式的,有最大的精确度和最小的冗余度,有利于数据的插入; .数据仓库的设计一般是星型的,有利于查询。
构建企业级数据仓库五步法:
一、 确定主题
即确定数据分析或前端展现的主题(例:某年某月某地区的啤酒销售情况)。主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系,确定主题时要综合考虑.
二、 确定量度
确定主题后,需要考虑分析的技术指标(例:年销售额等等)。它们一般为数据值型数据,其中有些度量值不可以汇总;些可以汇总起来,以便为分析者提供有用的信息。量度是要统计的指标,必须事先选择恰当,基于不同的量度可以进行复杂关键性指标(KPI)的设计和计算。
三、 确定事实数据粒度
确定量度之后,需要考虑该量度的汇总情况和不同维度下量度的聚合情况.例如在业务系统中数据最小记录到秒,而在将来分析需求中,时间只要精确到天就可以了,在ETL处理过程中,按天来汇总数据,些时数据仓库中量度的粒度就是”天”。如果不能确认将来的分析需求中是否要精确的秒,那么,我们要遵循”最小粒度原则”,在数据仓库中的事实表中保留每一秒的数据,从而在后续建立多维分析模型(CUBE)的时候,会对数据提前进行汇总,保障产生分析结果的效率。
四、 确定维度
维度是分析的各个角度.例:我们希望按照时间,或者按照地区,或者按照产品进行分析。那么这里的时间,地区,产品就是相应的维度。基于不同的维度,可以看到各个量度汇总的情况,也可以基于所有的维度进行交叉分析。
维度的层次(Hierarchy)和级别(Level)。例:在时间维度上,按照”度-季度-月”形成了一个层次,其中”年” ,”季度” ,”月”成为了这个层次的3个级别。我们可以将“产品大类-产品子类-产品”划为一个层次,其中包含“产品大类”、“产品子类”、“产品”三个级别。
我们可以将3个级别设置成一张数据表中的3个字段,比如时间维度;我们也可以使用三张表,分别保存产品大类,产品子类,产品三部分数据,比如产品维度。
建立维度表时要充分使用代理键.代理键是数据值型的ID号码(每张表的第一个字段),它唯一标识了第一维度成员。在聚合时,数值型字段的匹配和比较,join效率高。同时代理键在缓慢变化维中,起到了对新数据与历史数据的标识作用。
五、 创建事实表
在确定好事实数据和维度后,将考虑加载事实表。业务系统的的一笔笔生产,交易记录就是将要建立的事实表的原始数据.
我们的做法是将原始表与维度表进行关联,生成事实表。关联时有为空的数据时(数据源脏),需要使用外连接,连接后将各维度的代理键取出放于事实表中,事实表除了各维度代理键外,还有各度量数据,不应该存在描述性信息。
事实表中的记录条数据都比较多,要为其设置复合主键各蛇引,以实现数据的完整性和基于数据仓库的查询性能优化。
元数据:
描述数据及其环境的数据。两方面用途:
首先,元数据能提供基于用户的信息,如记录数据项的业务描述信息的元数据能帮助用户使用数据。
其次,元数据能支持系统对数据的管理和维护,如关于数据项存储方法的元数据能支持系统以最有效的方式访问数据。
元数据机制主要支持以下五类系统管理功能:
(1)描述哪些数据在数据仓库中;
(2)定义要进入数据仓库中的数据和从数据仓库中产生的数据;
(3)记录根据业务事件发生而随之进行的数据抽取工作时间安排;
(4)记录并检测系统数据一致性的要求和执行情况;
(5)衡量数据质量。
ODS: Operational Data Store
ODS为企业提供即时的,操作型的,集成的数据集合,具有面向主题性,集成性,动态性,即时性,明细性等特点
ODS作为数据库到数据仓库的一种过渡形式,与数据仓库在物理结构上不同,能提供高性能的响应时间,ODS设计采用混合设计方式。
ODS中的数据是"实时值",而数据仓库的数据却是"历史值",一般ODS中储存的数据不超过一个月,而数据仓库为10年或更多.
Data Mart
为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据(subjectarea)。在数据仓库的实施过程中往往可以从一个部门的数据集市着手,以后再用几个数据集市组成一个完整的数据仓库。需要注意的就是在实施不同的数据集市时,同一含义的字段定义一定要相容,这样再以后实施数据仓库时才不会造成大麻烦。
DDS(decision-support system)决策支持系统:
用于支持管理决策的系统。通常,DSS包括以启发的方式对大量的数据单元进行的分析,通常不涉及数据更新。
三.什么叫OLAP?用途是什么?
联机分析处理,On-Line Analysis Processing 即从数据仓库中抽取详细数据的一个子集并经过必要的聚集,存储到OLAP存储器中供前端分析工具读取。
OLAP系统按照数据存储格式可以分为关系OLAP(RelationalOLAP,简称ROLAP)、多维OLAP(MultidimensionalOLAP,简称MOLAP)和混合型OLAP(HybridOLAP,简称HOLAP)三种类型。
ROLAP将分析要用的多维数据存储在关系数据库中,并根据应用的需要有选择的定义一批实视图也存储在关系数据库中
MOLAP将OLAP分析所要用到的多维数据物理上存储为多维数组的形式,形成“立方体”的结构。
HOLAP能把MOLAP和ROLAP两种结构的优点有机的结合起来,能满足用户各种复杂的分析请求。
OLTP与OLAP的区别
OLTP OLAP
用户 操作人员 决策人员
功能 日常操作 分析决策
DB设计 面积应用 面向主题
数据 当前的,最新的,细节的,二维的 历史的,概括的,多维集成的,统一的
存取及规模 读取少 大规模读
事实表
事实表是包含大量数据值的一种结构。事实数据表可能代表某次银行交易,包含一个顾客的来访次数,并且这些数字信息可以汇总,以提供给有关单位作为历史的数据。
每个数据仓库都包含一个或者多个事实数据表。事实数据表只能包含数字度量字段和使事实表与维度表中对应项的相关索引字段.,该索引包含作为外键的所有相关性维度表的主键。
事实数据表中的“度量值”有两中:一种是可以累计的度量值,另一种是非累计的度量值。用户可以通过累计度量值获得汇总信息。
维度表
用来描述事实表的某个重要方面,维度表中包含事实表中事实记录的特性:有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构
缓慢变化维:在实际情况下,维度的属性并不是静态的,它会随着时间的流失发生缓慢的变化。
处理方法: 1新信息直接覆盖旧信息,2,保存多条记录,并添加字段加以区分(用y,n;0,1,2或用时间来区别新旧记录)
3.保存多条记录,并添加字段加以区分4.另外建表保存历史记录.5混合模式
退化维
般来说事实表中的外键都对应一个维表,维的信息主要存放在维表中。但是退化维仅仅是事实表中的一列,这个维的相关信息都在这一列中,没有维表与之相关联。比如:发票号,序列号等等。
那么退化维有什么作用呢?
1、退化维具有普通维的各种操作,比如:上卷,切片,切块等(上卷汇总,下钻明细;切片,切块:对二维数据进行切片,三维数据进行切块,,可得到所需要的数据)
2、如果存在退化维,那么在ETL的过程将会变得容易。
3、它可以让group by等操作变得更快粒度:(granularity)
是指数据仓库的数据单位中保存数据的细化或综合程度的级别,细化程度越高,粒度就越小。
钻取:
首先从某一个汇总数据出发,查看组成该数据的各个成员数据。
KPI(Key Performance Indication)关键业绩指标用来衡量业绩好坏比如销售这个主题,销售增长率、销售净利润就是一个KPI
E T L
extract/transformation/load寻找数据,整合数据,并将它们装入数据仓库的过程。
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析的依据。
工作流 抽取à清洗,转换à加载 数据流 业务系统àODSà数据仓库
一.抽取
方法有三种:1.利用工具,例如datastage,informatic,OWB,DTS,SISS. 2,利用存储过程. 3,前两种工具结合.
抽取前的调研准备工作:1.弄清数据是从哪几个业务系统中来,各个业务系统的数据库服务器运行什么DBMS. 2.是否存在手工数据,手工数据量有多大。3.是否存在非结构化的数据。
抽取中的数据处理方法:
1. 业务系统服务器与DW的DBMS相同时,在DW数据仓库服务器与原业条系统之间建立直接的链接关系就可以写select语句直接访问.
2. 业务系统服务器与DW的DBMS不同时,对不能建立直接链接的话,可以将源数据导入.txt文件,在导入ODS中,或通过程序接口来完成.
3. 对于文件类型数据源(.txt.xls)利用数据库工程将这个数据导入指定的数据库,如(oracle的SQL*LOADER,db2的import)
如何实现增量抽取
业务系统会记录业务发生的时间,我们可以用来做增量的标志,每次抽取之前首先判断ODS中记录最大的时间,然后根据这个时间去业务系统取大于这个时间所有的记录。
二.清洗与转换
清洗
数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。
清洗的数据种类: 1,不完整数据,2,错误数据,3重复的数据.
转换
1.不一致数据转换:编码转换(m,f;男女);字段转换(balance,bal);度量单位的转换(cm,m)
2.数据粒度的转换;业务系统数据存储非常明细的数据,而数据仓库中数据是用分析的,不需要非常明细,会将业务系统数据按照数据仓库粒度进行聚合.
3.商务规则的计算.不同企业有不同的业务规则,不同的数据指标,在ETL过程,将这些数据计算好之后存储在数据仓库中,供分析使用(比如KPI)
三.加载经过前两步处理后的数据可直接加载入数据仓库
用过什么ETL工具(informatica,ssis,owb,datastage),以及该工具简单讲述特点。
DataStage是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集市或数据仓库目标数据库的集成工具。
它有四个组件:Administrator:用来管理project和环境变量。Manager:用于job,表定义,的引导,引出。Designer:用来设计job。Direct:用运查看job运行日志。
星形模型与雪花模型的区别?
1.星星的中心是一个大的事实表,发散出来的是维度表,每一个维度表用一个PK-FK连接到事实表,维度表之间彼此并不关联。一个事实表又包括一些度量值和维度。
2.雪花模型通过规范维度表来减少冗余度,也就是说,维度表数据已经被分组成一个个的表而不是使用一个大表。例如产品表被分成了产品大类和产品小类两个表。尽管这样做可以节省了空间,但是却增加了维度表的数量和关联的外键的个数。这就导致了更复杂的查询并降低了数据库的效率
维度建模(dimensional modeling):
是数据仓库建设中的一种数据建模方法。按照事实表,维表来构建数据仓库,数据集市。这种方法最被人广泛知晓的名字就是星型模式(Star-schema)。
什么叫查找表,为什么使用替代键?(其实目的和上面一样,从基础表到缓慢维度表的过程中的一种实现途径)
替代键(alternate key)可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据重复的现象。
数据仓库项目最重要或需要注意的是什么,以及如何处理?
数据质量,主要是数据源数据质量分析,数据清洗转换,当然也可以定量分析
数据仓库有两个重要目的,一是数据集成,二是服务BI
数据准确性是数据仓库的基本要求,而效率是项目事实的前提,数据质量、运行效率和扩展性是数据仓库项目设计、实施高明与否的三大标志;代理键:
在关系型数据库设计中,是在当资料表中的候选键都不适合当主键时,例如资料太长,或是意义层面太多,就会用一个attribute来当代理主键,此主键可能是用流水号,来代替可辨识唯一值的主键
在数据仓库领域有一个概念叫Surrogate key,中文一般翻译为“代理关键字”。代理关键字一般是指维度表中使用顺序分配的整数值作为主键,也称为“代理键”。代理关键字用于维度表和事实表的连接。可以避免通过主键的值就可以了解一些业务信息 -
数据仓库面试题-数仓-五
2020-11-22 20:15:081.理解维度数据仓库——事实表、维度表、聚合表 参考自 1.1 事实表 在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”。 事实表中的每个列通常要么是键值列,要么是度量值列,但也可能包含其他参考...1.理解维度数据仓库——事实表、维度表、聚合表
1.1 事实表
- 在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”。
- 事实表中的每个列通常要么是键值列,要么是度量值列,但也可能包含其他参考目的的列——例如采购订单号或者发票号。
- 事实表中,每个度量值都有一个列。不同事实表将有不同的度量值。
- 事实表中对每个维度的最详细的项目成员都有数据行。
- 事实是事实表几乎总会使用一个整数值来表示(维度)成员,而不使用描述性的名称。因为事实表往往会包含数量多得无法想象的数据行——在一个中等大小的数据仓库中,事实表动辄包含上百万行数据——使用整数键值可以有效地减小事实表的大小。
- 在事实表中使用整数键值时,维度成员的名称需要放到另一种表中——也就是维度表。通常,事实表中的每个维度都有一个维度表。
- 归纳:
1)每个数据仓库都包含一个或者多个事实数据表。事实数据表可能包含业务销售数据,如现金登记事务。
2)所产生的数据,事实数据表通常包含大量的行。事实数据表的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据表包含一个由多个部分组成的索引,该索引包含作为外键的相关性纬度表的主键,而维度表包含事实记录的特性。事实数据表不应该包含描述性的信息,也不应该包含除数字度量字段及使事实与纬度表中对应项的相关索引字段之外的任何数据。
3)包含在事实数据表中的“度量值”有两中:一种是可以累计的度量值,另一种是非累计的度量值。最有用的度量值是可累计的度量值,其累计起来的数字是非常有意义的。用户可以通过累计度量值获得汇总信息,例如。可以汇总具体时间段内一组商店的特定商品的销售情况。非累计的度量值也可以用于事实数据表,单汇总结果一般是没有意义的,例如,在一座大厦的不同位置测量温度时,如果将大厦中所有不同位置的温度累加是没有意义的,但是求平均值是有意义的。
4)一般来说,**一个事实数据表都要和一个或多个纬度表相关联,**用户在利用事实数据表创建多维数据集时,可以使用一个或多个维度表。
1.2 维度表
- 维度表包含了维度的每个成员的特定名称。维度成员的名称称为“属性”(Attribute)。
- 在数据仓库中,维度表中的键属性必须为维度的每个成员包含一个对应的唯一值。用关系型数据库术语描述就是,键属性称为主键列。每个维度表中的主键值都与任何相关的事实表中的键值相关。在维度表中出现一次的每个键值都会在事实表中出现多次。
- 在事实表中,键值列(它是一对多关系的“多”的一方)称为外键列。关系型数据库使用匹配的**主键列(在维度表中)和外键列(在事实表中)**值来联接维度表到事实表。
- 把维度信息移动到一个单独的表中,除了使得事实表更小外,还有额外的优点——可以为每个维度成员添加额外的信息。
- 维度属性可以是可分组的,也可以是不可分组的。不可分组的属性通常称为成员属性(member property)。
- 某些可分组的属性可以组合起来创建一个自然层次结构(natural hierarchy)。例如假设Product有Category和Subcategory属性,在多数情况下,单个产品只会属于单个Subcategory,并且单个Subcategory只会属于单个Category。这将形成一个自然层次结构。在报表中,可能会显示Categories,然后允许用户从某个Category钻取到Subcategories,以及最终钻取到Products。
1.3 结论:
1、事实表就是你要关注的内容;
2、维度表就是你观察该事务的角度,是从哪个角度去观察这个内容的。1.4 聚合表
数据是按照最详细的格式存储在事实表中,各种报表可以充分利用这些数据。一般的查询语句在查询事实表时,一次操作经常涉及成千上万条记录,但是通过使用汇总、平均、极值等聚合技术可以大大降低数据的查询数量。因此,来自事实表中的底层数据应该事先经过聚合存储在中间表中。中间表存储了聚合信息,所以被称为聚合表,这种处理过程被称为聚合过程。
2. 数据库三范式
- 第一范式,又称1NF,它指的是在一个应中的数据都可以组织成由行和列的表格形式,且表格的任意一个行列交叉点即单元格,都不可再划分为行和列的形式,实际上任意一张表格都满足1NF;
- 第二范式,又称2NF,它指的是在满足1NF的基础上,一张数据表中的任何非主键字段都全部依赖于主键字段,没有任何非主键字段只依赖于主键字段的一部分。即,可以由主键字段来唯一的确定一条记录。比如学号+课程号的联合主键,可以唯一的确定某个成绩是哪个学员的哪门课的成绩,缺少学号或者缺少课程号,都不能确定成绩的意义。
- 第三范式,又称3NF,它是指在满足2NF的基础上,数据表的任何非主键字段之间都不产生函数依赖,即非主键字段之间没有依赖关系,全部只依赖于主键字段。例如将学员姓名和所属班级名称放在同一张表中是不科学的,因为学员依赖于班级,可将学员信息和班级信息单独存放,以满足3NF。
3.如何检验数据仓库模型构建是否合理–京东面试题
- 数据是否完善,指标是否健全,维度表、事实表是否能涵盖所有的业务
- 规范度,模型、表名、字段名、格式
- 复用度。表格的复用度来衡量数仓的模型的好坏
- 其他:数据治理,配置生命周期,全量/增量减少存储,如果中间表可以通过其他表复现,可把中间表生命周期调短。
4.数据质量管理–京东面试题
1)正常
时效减少,优化方式
降低存储(设置增量表/全量表/拉链表)
设置合理的生命周期,数据回溯可找回/或者通过其他表复现
2)异常
资源紧张–》日常数据监控
数据倾斜问题–》缓解数据倾斜5.数据仓库、数据湖、数据集市的了解
-
数据仓库面试题汇总-数仓-四
2020-11-22 20:16:44联系:数据仓库是由数据库以一种方式组织起来的。 区别: (1)数据库强调范式,尽可能减少冗余; 数据仓库强调查询分析的速度,优化读取的操作,主要目的是做大量数据的查询。 (2) 数据库是行存储,数据仓库是列...目录
1.数仓与关系数据库区别?
联系:数据仓库是由数据库以一种方式组织起来的。
区别:
(1)数据库强调范式,尽可能减少冗余;
数据仓库强调查询分析的速度,优化读取的操作,主要目的是做大量数据的查询。
(2) 数据库是行存储,数据仓库是列存储。
(3)数据库面向事务的,在线交易处理(OLTP)
数据仓库是面向主题的、集成、相对稳定、反应历史变化,存储历史数据(OLAP)。
(4)数据仓库定期写入新数据,而不覆盖原有数据,而是给数据加上时间戳。
(5)数据仓库两个基本元素:事实表和维度表
事实表存储要查询的数据;维度是看待问题的角度,如时间、部门等。2.数仓为什么需要分层?优缺点?
2.1 什么是数仓?
面向主题的、集成的、相对稳定的、反映历史变化的数据集合
为企业所有级别的决策制定过程,提供所有类型数据支撑的战略集合,主要是用于数据挖掘和数据分析,以建立数据沙盘为基础,为消灭消息孤岛和支持决策为目的而创建的。2.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 是什么?
- 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。
- 触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。
- 触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。
- 触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。
- 此外触发器是逻辑电路的基本单元电路,具有记忆功能,可用于二进制数据储存,记忆信息等。
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 什么是维度建模?
- 星型模型:是一种多维的数据关系。由一个事实表和一组维表组成,每个维表都有一个维作为主键,所有维的主键组合成事实表的主键。多维数据集的每一个维度都直接与事实表相连,不存在渐变维度,所以数据有一定冗余
- 雪花模型:雪花模型是当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上。雪花模型是对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。
- 星座模型:星座模型是数仓建设中的一种概念模型。这种模型往往应用于数据关系比星型模型和雪花模型更复杂的场合。事实星座模型需要多个事实表共享维度表,因而可以视为星形模型的集合,也称为星系模型。
2.2 特点: - 星型模型:关联关系简单、方便解耦,关联查询方便适用于大数据环境的数据模型建。但表中存在冗余数据。查询效率比雪花型高。
- 雪花模型:层级较多,关联不方便,但冗余数据较少。
- 星座模型:在星型模型基础上共享维表。更适合复杂的数据环境。
应用:
雪花模型在**应用系统的表设计(关系型数据库)**中涉及的会比较多,
**分析系统偏向于(大数据系统的数据库hadoop)**星型模型
7.2 优缺点
优点
- 简化查询-每次需要从数据库中获取一些信息时,可以不用编写冗长的查询
- 优化读取-针对读取进行了优化,可以写更少的JOIN,更快地返回结果
缺点 - 对数据进行非规范化意味着一次性插入或更新会导致数据异常。在实践中,星型模型是通过批处理实来弥补这一问题
- 分析灵活性有限。星型模型通常是为特定目的而设计的。在分析需求方面,它不像规范化数据模型那样灵活
8.事实表、维度表怎么建立?-设计原则
- 事实表:事实表存储了从业务活动或事件提炼出来的性能度量,它主要包含维度表的外键和连续变化的可加性数值或半可加事实。事实表产生于业务过程中而不是业务过程的描述性信息。在维度模型中也有表示多对多关系的事实,其他都是维度表。
- 维度表:维度表是对业务过程的上下文描述,主要包含代理键、文本信息和离散的数字。它是进入事实表的入口,丰富的维度属性给出了对事实表的分析切割能力。
如果属性值是离散的,用于过滤和标记的,就放到维度表里,如果是属性值是连续取值,用于计算的,就放到事实表中。
首先,明确一个定义:
代理键:维度表中的主键。
创建维度表的规则:
主键(代理键,自动增加编号,数据仓库中只有唯一编号)
业务键(业务键可以链接回数据源,具有业务含义)
属性(来自数据源的描述性信息)
有两种数据:主数据和事务数据。
主数据是指实体(例如员工),而交易数据是指使用该实体执行的所有交易。
主数据有限,而交易数据可能是数十亿。
在维度表中,大多数数据是主数据。
创建事实表的规则:
主键(代理键/备用键,自动增加编号)
外键(维度表中的主键/代理键/备用键)
度量(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图转换成为物理数据模型
第四部:实施物理数据模型 -
HP数据仓库面试题
2012-12-28 11:09:041.A 和B 两张表,A中有B表的外键,B表中有A表中的外键,求A表中,B表中没有的数据行,B表中,A表没有的数据行。 select * from a where not exists (select 1 from b where a.主键=b.外键) select * from b where... -
数据仓库工程师面试题.docx
2020-11-07 14:58:56数据仓库面试题,有可能不全,但是都是基础,是自己的学习笔记 -
数据仓库工程师面试题
2020-11-07 14:36:03什么是数据仓库? 数据仓库,英文名称date warehouse 简称DW,数据仓库,就是一个很大的用来存储数据的集合,用于解决企业数据分析性和决策目的创建,对多样的数据进行筛选与整合,指导业务流程曾改进,成本,质量... -
etl工程师 面试题_数据仓库工程师面试题笔试.doc
2020-12-23 04:49:00数据仓库工程师面试题姓名:____张小核______ 开始时间:_____:______ 结束时间:_____:_____数据库使用过哪些数据库?试说出它们的异同。答:使用过SQL SERVER和ORACLE它们的区别是:1.sql server 是中小型企业用的... -
算法面试必备-----数据仓库常见面试题
2020-08-10 12:29:12算法面试必备-----数据仓库常见面试题算法面试必备-----数据仓库常见面试题问题:简述数据仓库中的表的基本类型,以及为了保证引用完整性该以什么样的顺序对它们进行加载问题:事实表和维度表的概念及类型事实表的... -
数据挖掘与数据仓库考试/面试题
2012-12-25 13:14:05数据挖掘与数据仓库考试/面试题 快速学习数据挖掘与数据仓库 及时应对考试或面试 祝你成功 -
数据仓库hive面试题求解
2019-11-10 14:25:58hive中,多个人同时操作一个表,该如何处理?求详解,脑子想不过来,搜索也搜不到,真是无奈呢,有没有会的老哥 -
ETL数据仓库工程师笔试题和面试题整理
2020-05-01 01:08:22[这个人怎么那么多面试题] 如何排重(考察sql),就是group by xxx having count(1)>1。 shell的一些基本命令,如tail、seed、crontab等 如如何查看文件第几行?如何动态查看文件?如何查询文件关键字等等。 还有... -
数据仓库工具hive面试题集锦
2020-11-11 14:44:29进入DATE时代,大数据技术...这里黑马程序员主要和大家分享一下数据仓库工具hive相关的面试题! 1、 Hive 的 join 有几种方式,怎么实现 join 的?答:有3 种 join 方式: 1)在 reduce 端进行 join,最常用的 join 方 -
数据仓库吐血求解,面试题
2019-11-08 22:58:38面试:在数据仓库中,你怎么验证你处理的数据的准确性 答:我说可以验证数据量。(这个也是瞎掰) 面试:那拉取过来的数据就是错误的怎么办? 我:。。。。。 求解大神,不胜感激,最好连贯完整一些 -
【社招】快手_数据仓库_面试题整理
2020-07-06 19:45:01一、面试的是大数据开发岗(偏数据仓库),以下是面试题。 技术面一共三面,我将问题hui 1 讲一下你门公司的大数据项目架构 2 你在工作中都负责哪一部分 3 spark提交一个程序的整体执行流程。(包括向yarn申请资源,... -
etl工程师 面试题_关于数据仓库工程师的一般面试题目
2020-12-23 04:48:13本题只代表自己对数据仓库的肤浅认识,不代表任何公司的面试题目。对于高级数据仓库工程师的问题更侧重于各种工具的细枝末节。对于数据仓库架构师的问题更侧重于数据仓库的架构和总体认识。对于数据仓库项目经理的... -
python名词解释数据仓库_数据仓库知识点以及面试题整理
2021-03-18 09:51:40一、知识点概述1、数仓分层概念ods:operation data store原始数据层,数据保持原貌不做处理dwd:data warehouse detail明细数据层结构和粒度与原始表保持一致,对ods层数据进行清洗(去除空值,脏数据)dws:data ... -
数据仓库方法论与相关面试题
2020-09-22 11:49:22数据仓库的概念最早是由美国著名的信息工程专家 William Inmon 博士在 1991 年提出,他的出现是因为数据量达到一定的程度,传统数据库的数据处理方案已无法支持方便地对海量数据直接做分析和处理。数据仓库对数据... -
ETL架构师面试题+PowerCenter+数据仓库
2011-09-20 12:48:00ETL架构师面试题+PowerCenter+数据仓库 ETL架构师面试题+PowerCenter+数据仓库 -
数据仓库项目管理面试题整理
2011-08-20 18:37:09数据仓库项目管理面试题整理 搜了一下网络上都是一个主题一个网页,自己看了觉得不方便,所以整理到一起放上来方便自己看。 原文出自Jerome的BI博客,网址是... -
大数据常见面试题之数据仓库
2020-08-03 10:40:15例如销售分析就是一个分析领域,因此这个数据仓库应用的主题就是销售分析 主题是根据分析的要求来确定的.这与按照数据处理或应用的要求来组织数据是不同的.如在生产企业中,同样是材料供应,在操作型数据库系统中,人们... -
数据仓库项目管理面试题
2008-01-29 21:25:002.企业的业务系统方,即OLTP方的工作人员对数据仓库方不配合,比如对数据仓库的源数据申请置之不理。项目经理应该如何来应付这种情况?3.企业的管理层变动较频繁,支持数据仓库的企业领导可能会离开,面对这种情况... -
数据仓库、商业智能相关面试题(带答案)
2013-06-21 16:33:54数据仓库、商业智能相关笔试题、面试题(带答案)