Oracle的數據倉庫方案

給某一運營商的增值業務系統做過一個數據倉庫子系統,基於oracle9i,當時的一些記錄,以備將來查驗!


Oracle的數據倉庫方案構件如下:
1、Oracle 9i中的insert all, merge等超強的語句
2、Cube的支持,在安裝OLAP組件之後,包括MIEW的Query Rewrite
3、Oracle 9i中集成了以前的 Express Server

抽取工具用pl/sql + external table + sqlldr來實現
展現工具用Discovery, Reports 或其他工具來做

對於每天同步一次的只要網絡還可以的,建議還是用exp/ftp/check/imp.其實可以將exp的文件分成多個小文件,防止因爲網絡的問題導致大量數據的重傳。在ftp的client和server端分別寫個shell然後利用cron job來調用,應該就ok了。

快照+觸發器+存儲過程

dw由於多數是隻讀的,所以工作於非歸檔,不用做聯機備份

DWA 關注與存貯和設計和實施, 由於 DW 在實際的實施的時候一般都可能要分爲 ODS/DW/OLAP 等等, 必須考慮導每一個部分的數據存儲的時間和備份的方案,同時由於數據倉庫中數據量很大,並且由很多的重複數據,在定備份方案上一定需要確定一個時間窗口, 還有數據導入的時間窗口也是非常重要的。

物理存儲的空間規劃[HA、RAID、硬件存儲的劃分]、邏輯建模[PD、ERwin等]、ETL技術[DS、INFORMATICA等]、沉澱數據的存儲管理[DBA]、前端展現工具[cognos、brio等,還要一定的數理分析知識]。當然了,做好DW項目的前提還有泥必須很熟悉這個行業的業務及需求。

使用ftp傳輸, 使用external table load, 再使用merge整合數據

1、最主要的是db_block_size的大小設置不同,DW的要比OLTP的大些;另外還有一個buffer大小設置不同(印象中是large_pool),也是DW的要相應大些。

使用位圖索引,存儲更爲有效,與B*Tree索引比較起來,只需要更少的存儲空間,這樣每次讀取可以讀到更多的記錄,而且與B*Tree索引相比,位圖索引將比較,連接和聚集都變成了位算術運算,大大減少了運行時間,從而得到性能上的極大的提升。在事實表的外鍵列上建立位圖索引,查詢首先訪問事實表,然後纔是維表的連接。在事實表上返回的結果將減少,而不是對所有的可能的維表屬性進行笛卡爾積運算,所以極爲有效。
*如果要使用位圖索引,初始化參數STAR_TRANSFORMATION_ENABLED應該設置爲
TRUE.
* 優化模式應該是CBO。對於數據倉庫的環境中,總是應該考慮使用CBO(COST-BASED
OPTIMIZER)。
*位圖索引應該建立在每一個事實表的外鍵列上。(這只是一個一般的規則.)

1、數據倉庫中的外鍵等約束主要是爲數據庫提供元數據讓優化器使用的,保證數據一致性的工作應該在ETL中完成。
2、數據裝載的時候最好是把所有約束禁用,把索引去掉,完了再啓用約束和重建索引,這樣會快好多(3、我不你明白,你說維表加載不成功,fact表的一部分數據也要加載嗎,那不會得出錯誤的統計結果嗎,或者因爲沒有維度數據fact表中的數據通過關聯會被過濾掉?我的做法是如果出現加載不成功時根據情況的不同給管理員發送警告或者重新加載數據(可能需要人工干預)。

分區(hash分區和range分區)
CUBE和ROLLUP
位圖化索引(Bitmapped index)
程序員特區

http://coderarea.net/html/shujukukaifa/Oracle/2009/0311/60208.html

 

發佈了50 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章