構建資訊立方體維度的基本原則
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維度。
在資訊立方體的設計中,如果能夠遵循下面的這些基本的原則,那麼你就可以構建一個相對高效的資訊立方體模型:
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 架構設計中的基本原則架構
- 多維度的軟體架構分解架構
- SOLID 原則:軟體設計的基本原則Solid
- 第6章:可維護性軟體構建方法 6.1可維護性的度量和構造原則
- 微服務架構設計基礎之立方體模型微服務架構模型
- 資料架構的基本原則有哪些?架構
- 基於Java語言構建區塊鏈(一)—— 基本原型Java區塊鏈原型
- 架構設計的立方體擴充套件架構套件
- 【CBO】基於成本優化器的基本原則(二)優化
- 【CBO】基於成本優化器的基本原則(一)優化
- Zuul:構建高可用閘道器之多維度限流Zuul
- 索引使用的基本原則索引
- 第6章:可維護性軟體構建方法 6.3可維護性構建技術
- 從搞笑到高效,構建敏捷團隊的基礎原則敏捷
- 工程索賠的基本原則
- 測試基本原則
- 軟體構造的多維度檢視&質量目標
- 資料倉儲建設-OLAP和資料立方體
- 如何構建企業內的 TiDB 自運維體系TiDB運維
- PIGOSS BSM 與“中國交通建設”攜手資訊化運維保障體系的建設Go運維
- 物件導向基本原則物件
- 構建高效能MySQL體系思維導圖MySql
- “網際網路+”的多維度解析——資訊圖
- nlp基礎之-詞彙表構建的具體做法
- 思邁特軟體Smartbi:資料分析的作用及基本原則
- 表單驗證設計的使用者體驗基本原則
- 安全測試的基本原則有哪些?
- MySQL鎖使用的基本原則歸納MySql
- DevOps的基本原則與介紹dev
- 網站製作的基本原則 (轉)網站
- 基於HTML的3D立方體相簿免費下載HTML3D
- 資料分析-基礎維度
- 用 Java 構建簡單的規則引擎Java
- 社交媒體資訊釋出的理想長度–資訊圖
- 選擇免費OA軟體的四項基本原則請遵守好
- 架構的思想與指導原則——架構師的思維架構
- 深入理解介面隔離原則:構建靈活的面向介面軟體
- App設計的基本原則和規範APP