離線數倉面試題?
1、ODS:存放原始數據,直接加載原始日志,數據,數據保持原貌不做處理。
2、DWS:結構和粒度與原始表保持一致,對ODS層數據進行清洗(去除空值,臟數據)
3、DWS:以DWD層為基礎,進行輕度匯總。
4、ADS:為各種統計報表提供數據。
為什么要對數倉進行分層?
1、把簡單問題復雜化
將一個復雜的任務分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單,並且方便定位問題。
2、減少重復開發
規范數據分層,通過中間層的數據,能夠減少極大的重復計算,增加一次計算結果的復用性。
3、隔離原始數據
不論是數據的異常還是數據的敏感性,使真實數據與統計數據解耦開
說說對數據庫倉庫的理解?
數據倉庫是面向主題進行組織的,數據是集成的,不更新的隨時間變化的。
數據倉庫經歷了這樣三個階段:簡單報表,數據集市階段,數據倉庫階段
數據庫和數據倉庫的區別?
數據庫是面向事務的,用來存放數據的倉庫,通過數據庫軟件來實現。數據庫由很多表組成,表是二維的,一張表里面可以有很多字段
數據倉庫是面向主題的
星型模型和雪花模型?
星型模型:多維表的數據關系,它由一個事實表和一組維表組成,每個維作為主鍵
雪花模型:當一個或多個維沒有直接連接到事實表上,而是通過其他維表連接到事實表上的時候。
使用場景:
雪花模型:使得維度分析更加容易比如“針對特定的廣告主,有哪些客戶或者公司 是在線的?"
星型模型:用來做指標分析更合適,比如:給定的一個客戶他們的收入是多少?
如果現在有一千張表,從一個庫到另一個庫的ODS層,你會怎么做?
利用消息隊列做數據訂閱發布
數倉三層架構,每層有什么用?
1、數據訪問層:主要對非原始數據的操作層,而不是指原始數據,也就是說是對數據庫的操作,而不是數據,具體為業務邏輯層或表示層提供數據服務。
2、業務邏輯層:主要針對具體的問題的操作,也可以理解為對數據層的操作,對數據業務邏輯處理,比如說數據層是積木,那邏輯層就是對這些積木的搭建
3、界面層、主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表現成:aspx。如果邏輯層相當強大和完善,無論變現層如何定義和修改,邏輯層都能完善地提供服務。
什么是拉鏈表?
拉鏈表就是隨着時間變遷產生歷史數據。
拉鏈表的含義:就是記錄歷史,記錄一個事務從開始一直到當前狀態的所有信息變化
