大數據環境下的多維分析技術——動態立方體的性能調優(四)
通過前期的文章,我們知道,通過的Dynamic Cubes(動態立方體,下同)技術可以實現TB級的多維分析。為了提升查詢性能,動態立方體可以利用聚合感知能力,實現對聚合數據集的自動路由,從而實現對于復雜應用的性能提升。在Dynamic Cubes里,聚合數據集包括內存內部聚合與數據庫內部聚合兩種。本期文章我們來看看動態立方體如何使用數據庫內部聚合來進行性能調優。
數據庫內部聚合(Database aggregates)
對于關系數據庫里的那些超大規模的集(由事實表與維表構成),為了提高特定的多維分析的查詢性能,可以創建一些聚合表來存儲高層匯總數據。在設計Dynamic Cube模型時,將數據庫內部聚合指定到對應的聚合表,即可保證在查詢這些維度和指標時,優先使用聚合表的數據,而不是直接到最細粒度的維表與事實表里去查詢。這類聚合表,我們稱之為數據庫內部聚合。
要想使用數據庫內部聚合。首先,由DBA或者數據庫設計人員創建若干張聚合表。例如對于多維模型gosldw_sales(test),我們創建了一張聚合表AGGR_TIME_PROD_OM_FACT。如下圖所示。

這張表里面包括了多維模型使用時可能經常用到的部分維度與度量,它并不是最細粒度的數據集。示例中,時間維度只到了季度層次,產品維度只到了產品類型層次。然后可以通過ETL方法,定期將底層多維模型數據集的數據匯總后插入到該聚合表中。以下SQL語句示例供參考(只表現數據處理邏輯,物理性能參數應由DBA負責確定):


然后,在Cube designer里將此聚合表放到動態立方體的模型設計當中,如下圖所示。

最后,在發布此Dynamic Cube后,就可以使用到該數據庫內部聚合來加速多維分析性能了。
數據庫內部聚合建議
也許您現在會提出一個問題,既然數據庫內部聚合能夠提高多維分析查詢性能,那我如何確定聚合表應該選擇哪些維度、哪些指標來創建呢?這個問題Cognos已經幫您考慮到了。在我們前期的文章《大數據環境下的多維分析技術-動態立方體(Dynamic Cubes)的性能調優(二)》中提到,通過Dynamic Query Analyzer(簡稱DQA,下同)工具可以對動態立方體的查詢性能進行評估并得到優化建議。這些優化建議里就包括對數據庫內部聚合的優化建議。
在啟動對應的動態立方體的工作負載記錄后,運行DQA工具,可以分析出用戶對于該動態立方體的查詢偏好,從而得到數據庫內部聚合的設計思路。如下圖所示。DQA得出的建議有25條,每條建議都有說明從哪些維度查詢哪些指標,以及占用的數據空間大小。

通過下圖中的詳細查詢甚至可以得到對應聚合表的數據來源和建表腳本。

數據庫內部聚合的性能監控
Cognos服務器還提供了對數據庫內部聚合的監控功能。它通過一些特定的分析指標來持續分析動態立方體里數據庫內部聚合的性能情況,來提示系統管理員如何持續優化數據庫內部聚合的設計。通過Cognos administration界面可以查看到數據庫內部聚合的性能情況,如下圖所示。

由上圖可以看出,我們的數據庫內部聚合命中率為0,說明設計不合理。對于數據庫內部聚合的設計,我們有以下最佳實踐建議:
- 使用DQA來獲得聚合表的設計建議;
- 對于聚合表的設計,盡量將所有指標都涵蓋到;
- 對于指標的聚合規則,盡可能使用SUM和COUNT,而避免使用AVERAGE方法;
- 使用非規范化的聚合表,不要使用表關聯。
慧都控件網年終促銷第一波已開啟,全場6折起,豪禮搶不停>>>
截止時間:2016年10月30日
詳情請咨詢!
客服熱線:023-66090381