什麼叫數據倉庫?(相信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 索引名 (列名);
drop index 索引名 on 表名;
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` )