什么叫数据仓库?(相信inmon的数据仓库概念的四个特点是最基本的吧,当然需要加上自己的理解)
A:
著名的数据仓库专家W.H.Inmon在其
著作《Building the Data Warehouse》 一书中给予如下描述: 数据仓库(Data Warehouse)
是一个面向主题的(Subject Oriented)、
集成的(Integrate)、
相对稳定的(Non-Volatile)、
反映历史变化( Time Variant)的数据集合,用于支持管理决策。
对于数据仓库的概念我们可以从两个层次予以理解,首先,数据仓库用于支持决策,面
向分析型数据处理,它不同于企业现有的操作型数据库;其次,数据仓库是对多个异构
的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓
库中的数据一般不再修改。
Q:数据仓库和数据库有什么区别?(事务性数据库和决策支持数据库的区别,当然包括目标、用途、设计等等)
A:
有两个层面/角度来回答这个有趣的问题:
1,逻辑层面/概念层面:数据库和数据仓库其实是一样的或者及其相似的,都是通过某个数据库软件,基于某种数据模型来组织、管理数据。但是,数据库通常更关注业务交易处理(OLTP),而数据仓库更关注数据分析层面(OLAP),由此产生的数据库模型上也会有很大的差异。数据库通常追求交易的速度,交易完整性,数据的一致性,等等,在数据库模型上主要遵从范式模型(1NF,2NF,3NF,等等),从而尽可能减少数据冗余,保证引用完整性;而数据仓库强调数据分析的效率,复杂查询的速度,数据之间的相关性分析,所以在数据库模型上,数据仓库喜欢使用多维模型,从而提高数据分析的效率。
2,产品实现层面:数据库和数据仓库软件是有些不同的,数据库通常使用行式存储,如SAP ASE,Oracle, Microsoft SQL Server,而数据仓库倾向使用列式存储,如SAP IQ,SAP HANA
作者:明说
链接:https://www.zhihu.com/question/20623931/answer/22191772
Q:什么叫OLAP?用途是什么?(OLAP指多维数据库了,主要用于多维分析了;包括三种实现方式)
A:
OLAP(联机分析处理, On-Line Analytical Processing) :是使分析人员、管理人
员或执行人员能够从多种角度对从原始数据中转化出来的、能够真正为用户所理解的、
并真实反映企业维特性的信息进行快速、一致、交互地存取,从而获得对数据的更深入
了解的一类软件技术。
OLAP的目标:是满足决策支持或多维环境特定的查询和报表需求,它的技术核心
是“维”这个概念,因此OLAP也可以说是多维数据分析工具的集合。
OLAP的实现方法, 根据存储数据的方式不同可以分为ROLAP、 MOLAP、 HOLAP:
ROLAP表示基于关系数据库的OLAP实现( Relational OLAP)。以关系数据库为
核心,以关系型结构进行多维数据的表示和存储。 ROLAP将多维数据库的多维结构划分
为两类表:一类是事实表,用来存储数据和维关键字;另一类是维表,即对每个维至少
使用一个表来存放维的层次、成员类别等维的描述信息。维表和事实表通过主关键字和
外关键字联系在一起,形成了“星型模型”。对于层次复杂的维,为避免冗余数据占用
过大的存储空间,可以使用多个表来描述,这种星型模型的扩展称为“雪花模型”。
MOLAP表示基于多维数据组织的OLAP实现( Multidimensional OLAP)。以多维
数据组织方式为核心,也就是说,MOLAP使用多维数组存储数据。多维数据在存储中将
形成“立方块( Cube)”的结构,在MOLAP中对立方块的“旋转”、“切块”、“切
片”是产生多维数据报表的主要技术。
HOLAP表示基于混合数据组织的OLAP实现( Hybrid OLAP)。如低层是关系型
的,高层是多维矩阵型的。这种方式具有更好的灵活性
OLTP与OLAP的不同点:
OLTP数据 OLAP数据
原始数据 导出数据
细节性数据 综合性和提炼性数据
当前值数据 历史数据
可更新 不可更新,但周期性刷新
一次处理的数据量小 一次处理的数据量大
面向应用,事务驱动 面向分析,分析驱动
面向操作人员,支持日常操作 面向决策人员,支持管理需要
什么叫维度和度量值?(一个是出发点,一个是观察值)
数据仓库的基本架构是什么?
(数据源,ETL,data stage,ODS,data warehouse,datamart,OLAP等等,可能为针对每一个结构进行发问啊)
A: 2个流派
目前来说,数据仓库架构比较成熟并已经形成理论的主要有两个,一个是Corporate
Information Factory, 简称CIF, 中文一般翻译为企业信息工厂, 代表人物是Bill Inmon。
另一个是Mutildimensional Architecture,简称MD,中文一般翻译为多维体系结构,
代表人物是Ralph Kimball(维度)。
企业信息工厂主要包括集成转换层( Integrated and Transformation Layer)、操作
数据存储( Operational Data Store)、数据仓库( Enterprise Data Warehouse)、数
据集市( Data Mart)、探索仓库( Exploration Warehouse)等部件。
多维体系结构分为后台( Back Room)和前台( Front Room)两部分。后台主要负
责数据准备工作,称为数据准备区( Staging Area),前台主要负责数据展示工作,称
为数据集市( Data Mart)。而数据仓库是一个虚拟的部件,它指的是全部数据集市的
集合。
两个数据仓库架构各有优缺点,一种比较流行的做法是合用两种架构,即建立CIF
的数据仓库和MD的数据集市。
什么叫缓慢维度变化? | 缺实例
(为了表现和记录基础数据变化情况在数据仓库中的记录,包括三大类维度处理方式,缓慢变化维包括三小类)
维度建模的数据仓库中,有一个概念叫Slowly Changing Dimensions,中文一般翻
译成“缓慢变化维”,经常被简写为SCD。缓慢变化维的提出是因为在现实世界中,维
度的属性并不是静态的,它会随着时间的流失发生缓慢的变化。这种随时间发生变化的
维度我们一般称之为缓慢变化维, 并且把处理维度表的历史变化信息的问题称为处理缓
慢变化维的问题,有时也简称为处理SCD的问题。
处理缓慢变化维的方法通常有三种方式:
第一种方式是直接覆盖原值。这样处理,最容易实现,但是没有保留历史数据,无
法分析历史变化信息。第一种方式通常简称为“TYPE 1”。
第二种方式是添加维度行。这样处理,需要代理键的支持。实现方式是当有维度属
性发生变化时,生成一条新的维度记录,主键是新分配的代理键,通过自然键可以和原
维度记录保持关联。第二种方式通常简称为“TYPE 2”。
第三种方式是添加属性列。这种处理的实现方式是对于需要分析历史信息的属性添
加一列,来记录该属性变化前的值,而本属性字段使用TYPE 1来直接覆盖。这种方式
的优点是可以同时分析当前及前一次变化的属性值,缺点是只保留了最后一次变化信
息。第三种方式通常简称为“TYPE 3”。
在实际建模中,我们可以联合使用三种方式,也可以对一个维度表中的不同属性使
用不同的方式,这些,都需要根据实际情况来决定,但目的都是一样的,就是能够支持
方便的分析历史变化情况
?? 什么叫查找表,为什么使用替代键? 来源SCD
(其实目的和上面一样,从基础表到缓慢维度表的过程中的一种实现途径)
如何实现增量抽取?
(主要采用时间戳方式,提供数据抽取和处理的性能)
用过什么ETL工具(informatica,ssis,owb,datastage),以及该工具简单讲述特点。
ETL都包括那些组成部分
(工作流和数据流,数据流包括若干组件处理ETL的各个环节)
用过什么报表工具(bo,hyperion,congo,reporing servce),以及该工具基本特点。
数据仓库项目最重要或需要注意的是什么,以及如何处理?
(一般答数据质量,主要是数据源数据质量分析,数据清洗转换,当然也可以定量分析)
如何进行性能优化,只要能答索引的基本原理以及各种索引的区别就行了
Kimball的多维体系结构( MD)中的三个关键性概念
一致性事实( Conformed Fact)是Kimball的多维体系结构( MD)中的三个关键性
概念之一,另两个是总线架构( Bus Architecture)和一致性维度( Conformed
Dimension)。
在建立多个数据集市时,完成一致性维度的工作就已经完成了一致性的80%- 90%
的工作量。余下的工作就是建立一致性事实。
一致性事实和一致性维度有些不同, 一致性维度是由专人维护在后台( Back Room),
发生修改时同步复制到每个数据集市,而事实表一般不会在多个数据集市间复制。需要
查询多个数据集市中的事实时,一般通过交叉探查( drill across)来实现。
其他
关于数据库部分的面试题(不是要DBA的,但是还是要具备DBA的部分知识结构)
用过什么数据库(SQLServer,Oracle),并能够讲述其物理和逻辑结构,以Oracle为主
能够写基本的SQL语句,分组函数和关联,通常会给几个例子的
事实上数据仓库和DBA或者其他技术不同,没有什么绝对的答案,只要能表达和描述清楚自己的观点就行了
qa: 索引
唯一索引:
- 创建索引
create unique index 索引名 on 表名(列名);
alter table 表名 add unique index 索引名 (列名);
alter table 表名 add unique index 索引名 (列名);
- 删除索引
drop index 索引名 on 表名;
alter table 表名 drop index 索引名;
alter table 表名 drop index 索引名;
主键索引:
其实主键索引是唯一索引的一种,一般指定主键的表会默认创建主键索引,如果不指定主键,其实DB会默认的生成主键,但是这种主键性能不高,所以在建表的时候还是指定主键吧。==!
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
全文索引:
就是对Char、Text等结构建索引,只有MyISAM支持,现在应该很少用了,大家都用基于Lucene的索引中间件解决这种Case了,没用过也不过多纠缠。
ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
4.单列索引:
对单个列建立索引,对于经常用来进行检索的字段,做好建立索引,能很大程度的优化查询,但是索引的建立是有一定规则的,一会儿会提到这些规则。
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
5.组合索引:
组合索引是将多个列组合到一起建立一个索引,组合索引有很著名的“左前缀规则”,同时也因为这个规则,其实有时候单列索引和组合索引是有重复的。什么是左前缀规则,一会儿会交代。
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )