構建資訊立方體維度的基本原則

wolfinflow發表於2010-02-08
        SAP BW的各資訊提供者中可以說最重要的就是資訊立方體,因為它是分析報表最主要的基礎。而對於資訊立方體模型,最重要的莫過於維度的設計,它不只決定著查詢的效能,而且會影響到資料上傳的時間。一個好的設計方案,不只能提高查詢的訪問速度,而且可以大大降低把資料更新到資訊立方體的時間。
在資訊立方體的設計中,如果能夠遵循下面的這些基本的原則,那麼你就可以構建一個相對高效的資訊立方體模型:
1> 不要把查詢用不到的CHARACTERISTIC放到資訊立方體中。
        如果一個CHARACTERRISTIC不會被查詢用到,而且你也不能確定它一定會在以後的查詢中用到,那麼就不要把它放到資訊立方體中。因為資訊立方體中每多包含一個特徵,它的查詢效能和資料上傳效能就會降低一分。對於一個多層的資料倉儲架構來說,我們常常把這種特徵放到中間層的DSO中。這樣一方面不會影響到資訊立方體的效能,另一方面,當後續開發的查詢用到這個特徵的時候,我們可以重新把它加入到資訊立方體中,然後從DSO上傳資料到資訊立方體。由於它的資訊已經存在於DSO中了,我們不需要重新從源系統抽取資料,避免影響到業務系統。
2> 對於NAVIGATIONAL屬性和特徵,前者有利於資料上傳效能,而後者有利於報表效能。
        這個很好理解。但是它們還代表了不同的歷史事實性。對於特徵來說,它代表的是業務發生時候的歷史事實。而NAVIGATIONAL屬性代表的是當前事實或者某個指定時間的歷史事實。比如如果你把物料甲的物料組建模為一個特徵,那麼基於它的報表顯示的是業務發生時候的物料組。不管物料甲的物料組在這筆業務後有沒有被修改過,報表資料都是基於這筆業務產生時候的物料組顯示的。如果你把物料組建模為屬性,那麼非時效屬性對應的是當前的物料組分派,也就是說不管物料甲在一筆業務發生時候的物料組分配是什麼,報表資料都是基於當前分配的物料組的。而時效屬性則對應於某個指定時間的物料組分配。
3> 儘量減小維度表。
        對於普通的維度,它的索引型別是BIT-MAP索引,降低維度表的大小可以大大提高BIT-MAP索引的效能,進而大大提高報表效能。另外合理的維度設計可以大大減少資料上傳過程中維度ID的生成次數,提高資料上傳效能。
4> 減少維度數,但是減小維度表更重要。特別是當兩者衝突的時候。
5> 對於高CARDINALITY的特徵來說,比如銷售訂單號,我們應該使用LINE ITEM維度。
       普通的維度是一個擴充套件了的星形結構,中間是事實表,事實表首先關聯到維度表,然後經過維度表關聯到主資料表。而對於LINE ITEM維度來說,它沒有中間層的維度表,事實表直接和主資料表關聯。這樣執行SQL的時候,可以減少一個JOIN。
6> 對於高CARDINALITY的維度來說,我們應該使用B-TREE索引。
       普通維度的預設索引時BIT-MAP,如果一個維度表太大,那麼BIT-MAP索引的效能會大大降低。 這時候我們應該選擇使用B-TREE索引,也就是將一個普通維度改為HIGH-CARDINALITY 維度。
7>  如果一個資訊立方體的特徵數小於等於13, 那麼你可以去掉推薦架構中的維度表這一層。將所有的特徵建模為一個LINE ITEM維度。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/119153/viewspace-627033/,如需轉載,請註明出處,否則將追究法律責任。

相關文章