Oracle 分析系統OLAP設計思想

來源:互聯網
上載者:User

Oracle 的原來設計是基於事務型的,對處理分析型的就不地道了.最近的發展Oracle相關技術開發都逐步適應OLAP的需求.

1 分區技術 2 壓縮技術  3索引組織表 4 大塊 5並行技術 6記憶體結果集.

原來的Oracle設計基礎是短小精悍的大規模並發事務. 而甲骨文憑藉這一點佔領了大部分資料庫市場份額.微軟的SQLSERVER以它的綜合型,友好型和簡單易用型佔領了中小企業市場.

要設計個Oracle 10G分析系統,不能選擇預設安裝法.連機器的儲存也不能按OLTP的思維.

基於目前的RAC技術 它是為了OLTP的高可用型而設計的.不適合分析系統的駐留的機器系統. Oracle 還沒有IBM的分庫資料庫,可以水平無限擴充.

選擇一台分析系統的伺服器,基本上是RAID0+RAID5+SSD  大記憶體+多CPU的單台機器.

選擇SSD固態硬碟主要是用於分析即時型很強的報表需求. 而RAID0主要儲存1個月的資料,這個基本上是很頻繁訪問的資料報表需求. RAID5或者RAID10等主要儲存曆史資料了.

大記憶體主要用於做GROUP BY 運算, 多CPU使用者並行查詢.

分析系統的分層設計. 分層設計主要是把資料逐步的融縮精華.提供比較多的靈活型.

1 資料同步層, 設定個使用者和模式 DATA_synch 主要從各個資料來源中擷取資料到該使用者模式下.資料表空間 DATA_DAY,DATA_MON,DATA_HIS 三個時間段的空間.

2 資料拆分和匯總. 設定個使用者和模式 data_split_sum  主要從來源資料提取出部分欄位的表,和從中提取時間等粒度的表,或者提取出部分使用者的表.

比如活躍使用者表

3 報表結果層: data_result 這一層主要存放最終想要的資料.

這三層可以在同一台資料庫中,也可以安放在不同的機器上

資料表空間設計: 分為資料和索引資料表空間 同時在分為 SSD,RAID0 RAID5空間:ssd_index,ssd_data,raid0_index,raid0_data,raid5_index,raid5_data

注意把重要的表,重要的運算涉及到表,以及即時性要求高的表,領導每天要的表 放在SSD資料表空間中.

資料同步重要的放進SSD資料表空間中,其他的不重要的放進RAID0資料表空間裡去. 超過一個月上的資料存進曆史資料表空間.

所有的表要考慮做成索引組織表,因為組織表是有序存放的.   SSD還是存放的是日和周層級的重要表,可以採用原來的堆組織表.

RAID0資料表空間存放當月的資料,因此可以採用非壓縮式索引組織表,塊空間FREE為0-10 主要看該表的資料更新周期,也就是說穩定時間.比如說該表的資料從外面拖過來後,下一天再拖資料過來要修改前天資料的值.這就是穩定周期.如果硬碟空間有多餘的話 可以再設個RAID0_DAY資料表空間,把那些需要一定時間才穩定下來的表存放此處.等它穩定後才同步到月資料表空間裡去.這樣塊的FREE可以設定為0.

RAID5空間的表設計 要分區,雙分區,壓縮,索引組織表,塊FREE為0.畢竟這個空間主要存放超過一個月上的曆史資料.

最後所有的表的塊應該設計為64KB-128KB

開發中使用並行技術 /*+paraller(4)*/

記憶體表: with _as 共用一張記憶體資料

拆分資料庫中的表除了提取某些欄位外, 還經常需要 新增使用者,活躍使用者,儲值使用者,購買使用者等 有可能結果層統計資料時候要關聯很多表造成速度緩慢.

這可以把這幾張表做成聚族表.或者是把表做出列.

比如 使用者名稱, 註冊時間,第一次儲值時間,第一次購買時間,第一次等.

總體來說 1資料量小化,2資料區塊讀取少量化. 包含讀取的次數和塊的多少.

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.