數據倉庫設計
⑴ 誰能給我一個數據倉庫和數據挖掘案例的詳細設計文檔
最好可以問你們老師,或者去相應的網站上去查找。如果你離畢業還早的話,可以去考資料庫系統工程師。相應的教材和資料都可以買到,而且是國家承認的。不過這只是個證書而已,關鍵的以後還是要實踐。通過准備考試,可以打下扎實的基礎,為以後做准備。
另外,資料庫其實也比較枯燥,如果你有決心的話,還是不錯的工作。關鍵的在學校還是要先打好基礎。
有很多這樣的網站,你可以上網去搜索。如果有相應的輔導班,也可以考慮。
資料庫系統工程師級考試大綱
一、考試說明
1.考試要求
(1)掌握計算機體系結構以及各主要部件的性能和基本工作原理;
(2)掌握操作系統、程序設計語言的基礎知識,了解編譯程序的基本知識;
(3)熟練掌握常用數據結構和常用演算法;
(4)熟悉軟體工程和軟體開發項目管理的基礎知識;
(5)熟悉計算機網路的原理和技術;
(6)掌握資料庫原理及基本理論;
(7)掌握常用的大型資料庫管理系統的應用技術;
(8)掌握資料庫應用系統的設計方法和開發過程;
(9)熟悉資料庫系統的管理和維護方法,了解相關的安全技術;
(10)了解資料庫發展趨勢與新技術;
(11)掌握常用信息技術標准、安全性,以及有關法律、法規的基本知識;
(12)了解信息化、計算機應用的基礎知識;
(13)正確閱讀和理解計算機領域的英文資料。
2. 通過本考試的合格人員能參與應用信息系統的規劃、設計、構建、運行和管理,能按照用戶需求,設計、建立、運行、維護高質量的資料庫和數據倉庫;作為數據管理員管理信息系統中的數據資源,作為資料庫管理員建立和維護核心資料庫;擔任資料庫系統有關的技術支持,同時具備一定的網路結構設計及組網能力;具有工程師的實際工作能力和業務水平,能指導計算機技術與軟體專業助理工程師(或技術員)工作。
3. 本考試設置的科目包括
(1)信息系統知識,考試時間為150分鍾,筆試;
(2)資料庫系統設計與管理,考試時間為150分鍾,筆試。
二、考試范圍
考試科目1:信息系統知識
1. 計算機系統知識
1.1 硬體知識
1.1.1 計算機體系結構和主要部件的基本工作原理
·CPU和存儲器的組成、性能、基本工作原理
·常用I/O設備、通信設備的性能,以及基本工作原理
·I/O介面的功能、類型和特點
·CISC/RISC,流水線操作,多處理機,並行處理
1.1.2 存儲系統
·虛擬存儲器基本工作原理,多級存儲體系
·RAID類型和特性
1.1.3 安全性、可靠性與系統性能評測基礎知識
·診斷與容錯
·系統可靠性分析評價
· 計算機系統性能評測方法
1.2 數據結構與演算法
1.2.1 常用數據結構
·數組(靜態數組、動態數組)
·線性表、鏈表(單向鏈表、雙向鏈表、循環鏈表)
·棧和隊列
·樹(二叉樹、查找樹、平衡樹、遍歷樹、堆)、圖、集合的定義、存儲和操作
·Hash(存儲位置計算、碰撞處理)
1.2.2 常用演算法
·排序演算法、查找演算法、數值計算、字元串處理、數據壓縮演算法、遞歸演算法、圖的相關演算法
·演算法與數據結構的關系,演算法效率,演算法設計,演算法描述(流程圖、偽代碼、決策表),演算法的復雜性
1.3 軟體知識
1.3.1 操作系統知識
·操作系統的類型、特徵、地位、內核(中斷控制)、進程、線程概念
·處理機管理(狀態轉換、同步與互斥、信號燈、分時輪轉、搶占、死鎖)
·存儲管理(主存保護、動態連接分配、分段、分頁、虛存)
·設備管理(I/O控制、假離線、磁碟調度)
·文件管理(文件目錄、文件的結構和組織、存取方法、存取控制、恢復處理、共享和安全)
·作業管理(作業調度、作業控制語言(JCL)、多道程序設計)
·漢字處理,多媒體處理,人機界面
·網路操作系統和嵌入式操作系統基礎知識
·操作系統的配置
1.3.2 程序設計語言和語言處理程序的知識
· 匯編、編譯、解釋系統的基礎知識和基本工作原理
· 程序設計語言的基本成分:數據、運算、控制和傳輸,程序調用的實現機制
· 各類程序設計語言的主要特點和適用情況
1.4 計算機網路知識
·網路體系結構(網路拓撲、OSI/RM、基本的網路協議)
·傳輸介質,傳輸技術,傳輸方法,傳輸控制
·常用網路設備和各類通信設備
·Client/Server結構、Browser/Server結構、Browser/Web/Datebase結構
·LAN拓撲,存取控制,LAN的組網,LAN間連接,LAN-WAN連接
·網際網路基礎知識及應用
·網路軟體
·網路管理
·網路性能分析
·網路有關的法律、法規
2. 資料庫技術
2.1 資料庫技術基礎
2.1.1 資料庫模型
·資料庫系統的三級模式(概念模式、外模式、內模式),兩級映像(概念模式/外模式、外模式/內模式)
·資料庫模型:數據模型的組成要素,概念數據模型ER圖(實體、屬性、關系),邏輯數據模型(關系模型、層次模型、網路模型)
2.1.2 資料庫管理系統的功能和特徵
·主要功能(資料庫定義、資料庫操作、資料庫控制、事務管理、用戶視圖)
·特徵(確保數據獨立性、資料庫存取、同時執行過程、排它控制、故障恢復、安全性、完整性)
·RDB(關系資料庫),OODB(面向對象資料庫),ORDB(對象關系資料庫),NDB(網狀資料庫)
·幾種常用Web資料庫的特點
2.1.3 資料庫系統體系結構
· 集中式資料庫系統
· Client/Server資料庫系統
· 並行資料庫系統
· 分布式資料庫系統
· 對象關系資料庫系統
2.2 數據操作
2.2.1 關系運算
·關系代數運算(並、交、差、笛卡兒積、選擇、投影、連接、除)
·元組演算
·完整性約束
2.2.2 關系資料庫標准語言(SQL)
·SQL的功能與特點
·用SQL進行數據定義(表、視圖、索引、約束)
·用SQL進行數據操作(數據檢索、數據插入/刪除/更新、觸發控制)
·安全性和授權
·程序中的API,嵌入SQL
2.3 資料庫的控制功能
·資料庫事務管理(ACID屬性)
·資料庫備份與恢復技術(UNDO、REDO)
·並發控制
2.4 資料庫設計基礎理論
2.4.1 關系資料庫設計
·函數依賴
·規范化(第一範式、第二範式、第三範式、BC範式、第四範式、第五範式)
·模式分解及分解應遵循的原則
2.4.2 對象關系資料庫設計
·嵌套關系、 復雜類型,繼承與引用類型
·與復雜類型有關的查詢
·SQL中的函數與過程
·對象關系
2.5 數據挖掘和數據倉庫基礎知識
·數據挖掘應用和分類
·關聯規則、聚類
·數據倉庫的成分
·數據倉庫的模式
2.6 多媒體基本知識
2.6.1 多媒體技術基本概念
·多媒體系統基礎知識
·常用多媒體文件格式
2.6.2 多媒體壓縮編碼技術
·多媒體壓縮編碼技術
·統計編碼
·預測編碼
·編碼的國際標准
2.6.3多媒體技術應用
·簡單圖形的繪制,圖像文件的處理方法
·音頻和視頻信息的應用
·多媒體應用開發過程
2.7 系統性能知識
·性能計算(響應時間、吞吐量、周轉時間)
·性能指標和性能設計
·性能測試和性能評估
2.8 計算機應用基礎知識
·信息管理、數據處理、輔助設計、科學計算,人工智慧等基礎知識
·遠程通信服務及相關通信協議基礎知識
3. 系統開發和運行維護知識
3.1 軟體工程、軟體過程改進和軟體開發項目管理知識
·軟體工程知識
·軟體開發生命周期階段目標和任務
·軟體開發項目基礎知識(時間管理、成本管理、質量管理、人力資源管理、風險管理等)及其常用管理工具
·主要的軟體開發方法(生命周期法、原型法、面向對象法、CASE)
·軟體開發工具與環境知識
·軟體質量管理基礎知識
·軟體過程改進基礎知識
·軟體開發過程評估、軟體能力成熟度評估的基礎知識
3.2 系統分析基礎知識
·系統分析的目的和任務
·結構化分析方法(數據流圖(DFD)和數據字典(DD),實體關系圖(ERD),描述加工處理的結構化語言)
·統一建模語言(UML)
·系統規格說明書
3.3 系統設計知識
·系統設計的目的和任務
·結構化設計方法和工具(系統流程圖、HIPO圖、控制流程圖)
·系統總體結構設計(總體布局,設計原則,模塊結構設計,數據存取設計,系統配置方案)
·系統詳細設計(代碼設計、資料庫設計、用戶界面設計、處理過程設計)
·系統設計說明書
3.4 系統實施知識
·系統實施的主要任務
·結構化程序設計、面向對象程序設計、可視化程序設計
·程序設計語言的選擇、程序設計風格
·系統測試的目的、類型,系統測試方法(黑盒測試、白盒測試、灰盒測試)
·測試設計和管理(錯誤曲線、錯誤排除、收斂、注入故障、測試試用例設計、系統測試報告)
·系統轉換基礎知識
3.5 系統運行和維護知識
·系統運行管理知識
·系統維護知識
·系統評價知識
4. 安全性知識
·安全性基本概念(網路安全、操作系統安全、資料庫安全)
·計算機病毒的防治,計算機犯罪的防範,容災
·訪問控制、防闖入、安全管理措施
·加密與解密機制
·風險分析、風險類型、抗風險措施和內部控制
5.標准化知識
·標准化意識,標准化的發展,標准出台過程
·國際標准、國家標准、行業標准、企業標准基本知識
·代碼標准、文件格式標准、安全標准軟體開發規范和文檔標准
·標准化機構
6.信息化基礎知識
·信息化意識
·全球信息化趨勢、國家信息化戰略、企業信息化戰略和策略
·有關的法律、法規
·遠程教育、電子商務、電子政務等基礎知識
·企業信息資源管理基礎知識
7.計算機專業英語
·掌握計算機技術的基本詞彙
·能正確閱讀和理解計算機領域的英文資料
考試科目2:資料庫系統設計與管理
1.資料庫設計
1.1理解系統需求說明
·了解用戶需求、確定系統范圍
·確定應用系統資料庫的各種關系
·現有環境與新系統環境的關系
·新系統中的數據項、數據字典、數據流
1.2 系統開發的准備
·選擇開發方法,准備開發環境,制訂開發計劃
1.3 設計系統功能
·選擇系統機構,設計各子系統的功能和介面,設計安全性策略、需求和實現方法,制定詳細的工作流和數據流
1.4 資料庫設計
1.4.1 設計數據模型
·概念結構設計(設計ER模型)
·邏輯結構設計(轉換成DBMS所能接收的數據模型)
·評審設計
1.4.2 物理結構設計
·設計方法與內容
·存取方法的選擇
·評審設計與性能預測
1.4.3 資料庫實施與維護
·數據載入與應用程序調試
·資料庫試運行
·資料庫運行與維護
1.4.4 資料庫的保護
·資料庫的備份與恢復
·資料庫的安全性
·資料庫的完整性
·資料庫的並發控制
1.5 編寫外部設計文檔
·編寫系統說明書(系統配置圖、各子系統關系圖、系統流程圖,系統功能說明、輸入輸出規格說明、數據規格說明、用戶手冊框架)
·設計系統測試要求
1.6 設計評審
2. 資料庫應用系統設計
2.1 設計資料庫應用系統結構
·信息系統的架構(如Client/Server)與DBMS
·多用戶資料庫環境(文件伺服器體系結構、Client/Server體系結構)
·大規模資料庫和並行計算機體系結構(SMP、MPP)
·中間件角色和相關工具
·按構件分解,確定構件功能規格以及構件之間的介面
2.2 設計輸入輸出
·屏幕界面設計,設計輸入輸出檢查方法和檢查信息
·資料庫交互與連接(掌握C程序設計語言,以及Java、Visual Basic、Visual C++、PowerBuilder、Delphi中任一種開發工具與資料庫互連的方法(如何與資料庫伺服器溝通))
2.3 設計物理數據
·分析事務在資料庫上運行的頻率和性能要求,確定邏輯數據組織方式、存儲介質,設計索引結構和處理方式
·將邏輯數據結構變換成物理數據結構,計算容量(空間代價),確定存取方法(時間效率)、系統配置(維護代價)並進行優化
2.4 設計安全體系
·明確安全等級
·資料庫的登錄方式
·資料庫訪問
·許可(對象許可、命令許可、授權許可的方法)
2.5 應用程序開發
2.5.1 應用程序開發
·選擇應用程序開發平台
·系統實施順序
·框架開發
·基礎小組的程序開發
·源代碼控制
·版本控制
2.5.2 模塊劃分(原則、方法、標准)
2.5.3 編寫程序設計文檔
·模塊規格說明書(功能和介面說明、程序處理邏輯的描述、輸入輸出數據格式的描述)
·測試要求說明書(測試類型和目標,測試用例,測試方法)
2.5.4 程序設計評審
2.6 編寫應用系統設計文檔
·系統配置說明、構件劃分圖、構件間的介面、構件處理說明、屏幕設計文檔、報表設計文檔、程序設計文檔、文件設計文檔、資料庫設計文檔
2.7 設計評審
3. 資料庫應用系統實施
3.1 整個系統的配置與管理
3.2 常用資料庫管理系統的應用(SQL Server、Oracle、Sybase、DB2、Access或Visual Foxpro)
·創建資料庫
·創建表、創建索引、創建視圖、創建約束、創建UDDT(用戶自定義類型)
·創建和管理觸發器
·建立安全體系
3.3 資料庫應用系統安裝
·擬定系統安裝計劃(考慮費用、客戶關系、雇員關系、後勤關系和風險等因素)
·擬定人力資源使用計劃(組織機構安排的合理性)
·直接安裝(安裝新系統並使系統快速進入運行狀態)
·並行安裝(新舊系統並行運行一段時間)
·階段安裝(經過一系列的步驟和階段使新系統各部分逐步投入運行)
3.4 資料庫應用系統測試
·擬定測試目標、計劃、方法與步驟
·數據載入,准備測試數據
·指導應用程序員進行模塊測試進行驗收
·准備系統集成測試環境測試工具
·寫出資料庫運行測試報告
3.5 培訓與用戶支持
4.資料庫系統的運行和管理
4.1 資料庫系統的運行計劃
·運行策略的確定
·確定資料庫系統報警對象和報警方式
·資料庫系統的管理計劃(執行,故障/恢復,安全性,完整性,用戶培訓和維護)
4.2 資料庫系統的運行和維護
·新舊系統的轉換
·收集和分析報警數據(執行報警、故障報警、安全報警)
·連續穩定的運行
·資料庫維護(資料庫重構、安全視圖的評價和驗證、文檔維護)
·資料庫系統的運行統計(收集、分析、提出改進措施)
·關於運行標准和標准改進一致性的建議
·資料庫系統的審計
4.3 資料庫管理
·數據字典和數據倉庫的管理
·數據完整性維護和管理(實體完整性、參照完整性)
·資料庫物理結構的管理(保證數據不推遲訪問)
·資料庫空間及碎片管理
·備份和恢復(順序、日誌(審計痕跡)、檢查點)
·死鎖管理(集中式、分布式)
·並發控制(可串列性、鎖機制、時間戳、優化)
·數據安全性管理(加密、安全、訪問控制、視圖、有效性確認規則)
·資料庫管理員(DBA)職責
4.4 性能調整
·SQL語句的編碼檢驗
·表設計的評價
·索引的改進
·物理分配的改進
·設備增強
·資料庫性能優化
4.5 用戶支持
·用戶培訓
·售後服務
5. SQL
5.1 資料庫語言
·資料庫語言的要素
·資料庫語言的使用方式(互動式和嵌入式)
5.2 SQL概述
·SQL語句的特徵
·SQL語句的基本成分
5.3 資料庫定義
·創建資料庫(Create Datebase)、創建表(Create Table)
·定義數據完整性
·修改表(Alter Table)、刪除表(Drop Table)
·定義索引(Create Index)、刪除索引(Drop Index)
·定義視圖(Create View)、刪除視圖(Drop View)、更新視圖
5.4 數據操作
·Select語句的基本機構
·簡單查詢
·SQL中的選擇、投影
·字元串比較,涉及空值的比較
·日期時間,布爾值,輸出排序
·多表查詢
·避免屬性歧義
·SQL中的連接、並、交、差
·SQL中的元組變數
·子查詢
5.5 完整性控制與安全機制
·主鍵(Primary Key)約束
·外鍵(Foreign Key)約束
·屬性值上的約束(Null、Check、Create Domain)
·全局約束(Create Assertions)
·許可權、授權(Grant)、銷權(Revoke)
5.6 創建觸發器(Create Trigger)
5.7 SQL使用方式
·互動式SQL
·嵌入式SQL
·SQL與宿主語言介面(Declare、共享變數、游標、卷游標)
·動態SQL
·API
5.8 SQL 標准化
6. 網路環境下的資料庫
6.1 分布式資料庫
6.1.1 分布式資料庫的概念
·分布式資料庫的特點與目標
6.1.2 分布式資料庫的體系結構
·分布式資料庫的模式結構
·數據分布的策略(數據分片、分布透明性)
·分布式資料庫管理系統
6.1.3 分布式查詢處理和優化
6.1.4 分布式事務管理
·分布式資料庫的恢復(故障、恢復、2段提交、3段提交)
·分布式資料庫的透明性(局部、分裂、復制、處理、並發、執行)
6.1.5 分布式資料庫系統的應用
6.2 網路環境下資料庫系統的設計與實施
·數據的分布設計
·負載均衡設計
·資料庫互連技術
6.3 面向Web的DBMS技術
·三層體系結構
·動態Web網頁
·ASP、JSP、XML的應用
7.資料庫的安全性
7.1 安全性策略的理解
·資料庫視圖的安全性策略
·數據的安全級別(最重要的、重要的、注意、選擇)
7.2 資料庫安全測量
·用戶訪問控制(採用口令等)
·程序訪問控制(包含在程序中的SQL命令限制)
·表的訪問控制(視圖機制)
·控制訪問的函數和操作
·外部存儲數據的加密與解密
8. 資料庫發展趨勢與新技術
8.1 面向對象資料庫(OODBMS)
8.1.1 OODBMS的特徵
8.1.2 面向對象數據模型
·對象結構、對象類、繼承與多重繼承、對象標識、對象包含、對象嵌套
8.1.3 面向對象資料庫語言
8.1.4 對象關系資料庫系統(ORDBMS)
·嵌套關系
·復雜類型
·繼承、引用類型
·與復雜類型有關的查詢
·函數與過程
·面向對象與對象關系
·ORDBMS應用領域
8.2 企業資源計劃(ERP)和資料庫
8.2.1 ERP概述
·基本MRP(製造資源計劃)、閉環MRP、ERP
·基本原理、發展趨勢
·ERP設計的總體思路(一個中心、兩類業務、三條干線)
8.2.2 ERP與資料庫
·運行資料庫與ERP數據模型之間的關系
·運行資料庫與ERP資料庫之間的關系
8.2.3 案例分析
8.3 決策支持系統的建立
·決策支持系統的概念
·數據倉庫設計
·數據轉移技術
·聯機分析處理(OLAP)技術
·企業決策支持解決方案
·聯機事務處理(OLTP)
⑵ 資料庫設計與數據倉庫設計的相同點
資料庫與數據倉庫的本質差別如下: 1、邏輯層面/概念層面:資料庫和數據倉庫其實是一樣的或版者及權其相似的,都是通過某個資料庫軟體,基於某種數據模型來組織、管理數據。但是,資料庫通常更關注業務交易處理(OLTP),而數據倉庫更關注數據分析層面(OLAP),由此產生的資料庫模型上也會有很大的差異。 2、資料庫通常追求交易的速度,交易完整性,數據的一致性等,在資料庫模型上主要遵從範式模型(1NF,2NF,3NF等),從而盡可能減少數據冗餘,保證引用完整性;而數據倉庫強調數據分析的效率,復雜查詢的速度,數據之間的相關性分析,所以在資料庫模型上,數據倉庫喜歡使用多維模型,從而提高數據分析的效率。 3、產品實現層面:資料庫和數據倉庫軟體是有些不同的,資料庫通常使用行式存儲,如SAP ASE,Oracle, Microsoft SQL Server,而數據倉庫傾向使用列式存儲,如SAP IQ,SAP HANA。
⑶ 數據倉庫的數據模型
有別於一般聯機交易處理(OLTP)系統,數據模型設計是一個數據倉庫設計的地基,當前兩大主流理論分別為採用正規方式(normalized approach)或多維方式(dimensional approach)進行數據模型設計。 數據模型可以分為邏輯與實體數據模型。邏輯數據模型陳述業務相關數據的關系,基本上是一種與資料庫無關的結構設計,通常均會採用正規方式設計,主要精神是從企業業務領域的角度及高度訂出subject area model,再逐步向下深入到entities、attributes,在設計時不會考慮未來採用的資料庫管理系統,也不需考慮分析性能問題。而實體數據模型則與資料庫管理系統有關,是建置在該系統上的數據架構,故設計時需考慮數據類型(data type)、空間及性能相關的議題。 實體數據模型設計,則較多有採用正規方式或多維方式的討論,但從實務上來說,不執著於理論,能與業務需要有最好的搭配,才是企業在建置數據倉庫時的正確考量。
數據倉庫的建制不僅是資訊工具技術面的運用,在規劃和執行方面更需對產業知識、行銷管理、市場定位、策略規劃等相關業務有深入的了解,才能真正發揮數據倉庫以及後續分析工具的價值,提升組織競爭力。
⑷ 數據倉庫 什麼是mapping設計
由於資料庫通常用於操作型系統管理數據,是面向某個具體應用的,所以現在的資料庫設計大多採用以關系數據模型為主的設計方法,以保證數據的原子性、一致性,消除數據冗餘。常常先通過對需要處理的數據進行詳細分析後建立ER模型
⑸ 數據倉庫的設計步驟
1)選擇合適的抄主題(所要解決問題的領域)
2)明確定義事實表
3)確定和確認維
4)選擇事實表
5)計算並存儲fact表中的衍生數據段
6)轉換維表
7)資料庫數據採集
8)根據需求刷新維表
9)確定查詢優先順序和查詢模式。
硬體平台:數據倉庫的硬碟容量通常要是操作資料庫硬碟容量的2-3倍。通常大型機具有更可靠的性能和和穩定性,也容易與歷史遺留的系統結合在一起;而PC伺服器或UNIX伺服器更加靈活,容易操作和提供動態生成查詢請求進行查詢的能力。選擇硬體平台時要考慮的問題:是否提供並行的I/O吞吐?對多CPU的支持能力如何?
數據倉庫DBMS:他的存儲大數據量的能力、查詢的性能、和對並行處理的支持如何。
網路結構:數據倉庫的實施在那部分網路段上會產生大量的數據通信,需不需要對網路結構進行改進。
⑹ 從數據倉庫技術出發,說明數據倉庫的設計、數據表的設計等
簡單的說就是無處不索引。
數據倉庫的特點:
插入,修改的性能可以不高。大數據量統計的性能要高。
所以就要建很多的索引。
跟在線聯機系統有較大的差別。聯機在線的系統主要講究,響應速度要快。
當然還有很多復雜的技術。比如海客寶在線ERP,一套系統中有幾萬家客戶的數據,一家的客戶數據可能就有幾十萬,總體上來講是有海量數據的,又要講究系統響應速度,又有海量數據需要處理,這個就需要更復雜的設計。
⑺ 數據倉庫模型設計師是做什麼的
1、星型模型 星型模型是一種由一點向外輻射的建模範例,中間有一單一對象沿半徑向外連接到多個對象。星型模型反映了最終用戶對商務查詢的看法:銷售事實、賠償、付款和貨物的托運都用一維或多維描述(按月、產品、地理位置)。
⑻ 如何設計數據中心數據倉庫
保證數據同源,就可以統一指標,上下游的問題~
整理指標,保證各個部門指標統計口徑一致,這個活不好乾但是必須干
需要整理好了 然後再去利用各種設計模式設計開發之。
⑼ 怎樣的架構設計才是真正的數據倉庫架構
一直想整理一下這塊內容,既然是漫談,就想起什麼說什麼吧。我一直是在互聯網行業,就以互聯網行業來說。
先大概列一下互聯網行業數據倉庫、數據平台的用途:
整合公司所有業務數據,建立統一的數據中心;
提供各種報表,有給高層的,有給各個業務的;
為網站運營提供運營上的數據支持,就是通過數據,讓運營及時了解網站和產品的運營效果;
為各個業務提供線上或線下的數據支持,成為公司統一的數據交換與提供平台;
分析用戶行為數據,通過數據挖掘來降低投入成本,提高投入效果;比如廣告定向精準投放、用戶個性化推薦等;
開發數據產品,直接或間接為公司盈利;
建設開放數據平台,開放公司數據;
。。。。。。
- 上面列出的內容看上去和傳統行業數據倉庫用途差不多,並且都要求數據倉庫/數據平台有很好的穩定性、可靠性;但在互聯網行業,除了數據量大之外,越來越多的業務要求時效性,甚至很多是要求實時的 ,另外,互聯網行業的業務變化非常快,不可能像傳統行業一樣,可以使用自頂向下的方法建立數據倉庫,一勞永逸,它要求新的業務很快能融入數據倉庫中來,老的下線的業務,能很方便的從現有的數據倉庫中下線;
- 其實,互聯網行業的數據倉庫就是所謂的敏捷數據倉庫,不但要求能快速的響應數據,也要求能快速的響應業務;
- 建設敏捷數據倉庫,除了對架構技術上的要求之外,還有一個很重要的方面,就是數據建模,如果一上來就想著建立一套能兼容所有數據和業務的數據模型,那就又回到傳統數據倉庫的建設上了,很難滿足對業務變化的快速響應。應對這種情況,一般是先將核心的持久化的業務進行深度建模(比如:基於網站日誌建立的網站統計分析模型和用戶瀏覽軌跡模型;基於公司核心用戶數據建立的用戶模型),其它的業務一般都採用維度+寬表的方式來建立數據模型。這塊是後話。
- 整體架構下面的圖是我們目前使用的數據平台架構圖,其實大多公司應該都差不多:
- 邏輯上,一般都有數據採集層、數據存儲與分析層、數據共享層、數據應用層。可能叫法有所不同,本質上的角色都大同小異。
- 我們從下往上看:
- 數據採集數據採集層的任務就是把數據從各種數據源中採集和存儲到數據存儲上,期間有可能會做一些簡單的清洗。
- 數據源的種類比較多:
網站日誌:
- 作為互聯網行業,網站日誌占的份額最大,網站日誌存儲在多台網站日誌伺服器上,
- 一般是在每台網站日誌伺服器上部署flume agent,實時的收集網站日誌並存儲到HDFS上;
業務資料庫:
- 業務資料庫的種類也是多種多樣,有Mysql、Oracle、SqlServer等,這時候,我們迫切的需要一種能從各種資料庫中將數據同步到HDFS上的工具,Sqoop是一種,但是Sqoop太過繁重,而且不管數據量大小,都需要啟動MapRece來執行,而且需要Hadoop集群的每台機器都能訪問業務資料庫;應對此場景,淘寶開源的DataX,是一個很好的解決方案(可參考文章 《異構數據源海量數據交換工具-Taobao DataX 下載和使用》),有資源的話,可以基於DataX之上做二次開發,就能非常好的解決,我們目前使用的DataHub也是。
- 當然,Flume通過配置與開發,也可以實時的從資料庫中同步數據到HDFS。
來自於Ftp/Http的數據源:
- 有可能一些合作夥伴提供的數據,需要通過Ftp/Http等定時獲取,DataX也可以滿足該需求;
其他數據源:
- 比如一些手工錄入的數據,只需要提供一個介面或小程序,即可完成;
- 數據存儲與分析毋庸置疑,HDFS是大數據環境下數據倉庫/數據平台最完美的數據存儲解決方案。
- 離線數據分析與計算,也就是對實時性要求不高的部分,在我看來,Hive還是首當其沖的選擇,豐富的數據類型、內置函數;壓縮比非常高的ORC文件存儲格式;非常方便的SQL支持,使得Hive在基於結構化數據上的統計分析遠遠比MapRece要高效的多,一句SQL可以完成的需求,開發MR可能需要上百行代碼;
- 當然,使用Hadoop框架自然而然也提供了MapRece介面,如果真的很樂意開發Java,或者對SQL不熟,那麼也可以使用MapRece來做分析與計算;Spark是這兩年非常火的,經過實踐,它的性能的確比MapRece要好很多,而且和Hive、Yarn結合的越來越好,因此,必須支持使用Spark和SparkSQL來做分析和計算。因為已經有Hadoop Yarn,使用Spark其實是非常容易的,不用單獨部署Spark集群,關於Spark On Yarn的相關文章,可參考:《Spark On Yarn系列文章》
- 實時計算部分,後面單獨說。
- 數據共享這里的數據共享,其實指的是前面數據分析與計算後的結果存放的地方,其實就是關系型資料庫和NOSQL資料庫;
- 前面使用Hive、MR、Spark、SparkSQL分析和計算的結果,還是在HDFS上,但大多業務和應用不可能直接從HDFS上獲取數據,那麼就需要一個數據共享的地方,使得各業務和產品能方便的獲取數據;和數據採集層到HDFS剛好相反,這里需要一個從HDFS將數據同步至其他目標數據源的工具,同樣,DataX也可以滿足。
- 另外,一些實時計算的結果數據可能由實時計算模塊直接寫入數據共享。
- 數據應用
業務產品
- 業務產品所使用的數據,已經存在於數據共享層,他們直接從數據共享層訪問即可;
報表
- 同業務產品,報表所使用的數據,一般也是已經統計匯總好的,存放於數據共享層;
即席查詢
- 即席查詢的用戶有很多,有可能是數據開發人員、網站和產品運營人員、數據分析人員、甚至是部門老大,他們都有即席查詢數據的需求;
- 這種即席查詢通常是現有的報表和數據共享層的數據並不能滿足他們的需求,需要從數據存儲層直接查詢。
- 即席查詢一般是通過SQL完成,最大的難度在於響應速度上,使用Hive有點慢,目前我的解決方案是SparkSQL,它的響應速度較Hive快很多,而且能很好的與Hive兼容。
- 當然,你也可以使用Impala,如果不在乎平台中再多一個框架的話。
OLAP
- 目前,很多的OLAP工具不能很好的支持從HDFS上直接獲取數據,都是通過將需要的數據同步到關系型資料庫中做OLAP,但如果數據量巨大的話,關系型資料庫顯然不行;
- 這時候,需要做相應的開發,從HDFS或者HBase中獲取數據,完成OLAP的功能;
- 比如:根據用戶在界面上選擇的不定的維度和指標,通過開發介面,從HBase中獲取數據來展示。
其它數據介面
- 這種介面有通用的,有定製的。比如:一個從Redis中獲取用戶屬性的介面是通用的,所有的業務都可以調用這個介面來獲取用戶屬性。
- 實時計算現在業務對數據倉庫實時性的需求越來越多,比如:實時的了解網站的整體流量;實時的獲取一個廣告的曝光和點擊;在海量數據下,依靠傳統資料庫和傳統實現方法基本完成不了,需要的是一種分布式的、高吞吐量的、延時低的、高可靠的實時計算框架;Storm在這塊是比較成熟了,但我選擇Spark Streaming,原因很簡單,不想多引入一個框架到平台中,另外,Spark Streaming比Storm延時性高那麼一點點,那對於我們的需要可以忽略。
- 我們目前使用Spark Streaming實現了實時的網站流量統計、實時的廣告效果統計兩塊功能。
- 做法也很簡單,由Flume在前端日誌伺服器上收集網站日誌和廣告日誌,實時的發送給Spark Streaming,由Spark Streaming完成統計,將數據存儲至Redis,業務通過訪問Redis實時獲取。
- 任務調度與監控在數據倉庫/數據平台中,有各種各樣非常多的程序和任務,比如:數據採集任務、數據同步任務、數據分析任務等;
- 這些任務除了定時調度,還存在非常復雜的任務依賴關系,比如:數據分析任務必須等相應的數據採集任務完成後才能開始;數據同步任務需要等數據分析任務完成後才能開始;這就需要一個非常完善的任務調度與監控系統,它作為數據倉庫/數據平台的中樞,負責調度和監控所有任務的分配與運行。
- 前面有寫過文章,《大數據平台中的任務調度與監控》,這里不再累贅。
- 總結在我看來架構並不是技術越多越新越好,而是在可以滿足需求的情況下,越簡單越穩定越好。目前在我們的數據平台中,開發更多的是關注業務,而不是技術,他們把業務和需求搞清楚了,基本上只需要做簡單的SQL開發,然後配置到調度系統就可以了,如果任務異常,會收到告警。這樣,可以使更多的資源專注於業務之上。
⑽ 資料庫和數據倉庫在設計上有哪些不同
由於資料庫通常用於操作型系統管理數據,是面向某個具體應用的,所回以現在的資料庫設計答大多採用以關系數據模型為主的設計方法,以保證數據的原子性、一致性,消除數據冗餘。常常先通過對需要處理的數據進行詳細分析後建立ER模型(實體-聯系模型),然後轉換為關系模型後,由關系模型生成資料庫的表。
但數據倉庫是面向主題的,是為了通過對歷史數據進行多視角(稱之為多維)分析,為決策人員提供針對該關注點(該主題)的輔助決策信息,所以在設計上大多採用多維數據模型進行設計(不是用關系模型),以一個事實表加上與之想關聯的多個維表為分析一個主題的模型建模。一個事實表代表一個主題和對主題的度量,與之相關聯的每一個維表代表對主題進行分析的一個不同的視角。如果你有數據知識的話,應該領會到兩者實際上有本質的不同了。前者多用關系模型且無數據冗餘,用於事務處理;後者多用多維模型,且有大量數據冗餘,用於針對某關注點的分析。
數據倉庫本就不是一個三句兩句能解釋清楚其本質的概論,但願上述回答對你有幫助。