最佳效能祕籍:SAP HANA資料建模
雖然SAP HANA的資料仍然是儲存在table中,但是它與傳統資料庫的資料儲存模型是有所區別的。列儲存的資料壓縮性更好,且讀取速度也更快,這一點毫無疑問。而要充分利用這一點,它的資料建模就要有別於傳統基於行的RDBMS,這主要是基於兩點原因:
其一,同行式資料庫表相比,冗餘資料在HANA中並不是大問題。列式資料庫表通過提供指標來引用重複的資料,因此重複值僅會儲存一次。此外,當資料不是扁平進入一個表當中,或者在HANA的多個表中未進行標準化的時候,表連線的消耗將是相當大的。HANA提供了基於行和基於列儲存的兩種資料庫引擎,不同方式的處理會同時出現,而當資料需要物理地從一個引擎移動到另外一個進行處理的時候,表連線的消耗就會提升。所以,我們要儘量將資料處理過程保持在一個資料庫引擎中,而且最好是HANA的列式資料庫引擎。
表連線消耗對於傳統資料庫來說影響會比較小,主要因為索引和標準化,而在HANA中它是不容忽視的,你需要監控資料庫查詢是否違反了列儲存結構的約束。如果處理過程在列式記憶體資料庫引擎中不支援的話,那麼結果就是它會物理地移動到行資料庫引擎當中,這對於效能的破壞是可想而知的。因此,在SAP HANA的配置階段,你仍然需要對資料進行建模。記住,它與傳統資料庫的資料建模設計會有很大的不同。
在資料建模和配置完成之後,你就需要馬上著手處理後設資料(metadata)。首先要對基於列式資料庫表中的資料供應進行“屬性”和“分析”檢視的建模,這些檢視的運轉原理同傳統資料庫的檢視很類似。屬性檢視設計用來給主資料(master data)設定上下文環境:它們提供有意義的資料值,比如ID列的描述或者實際ID值的名稱等。
分析檢視是運算與聚合發揮作用的地方。包括屬性檢視和分析檢視在內,它們都將成為最終生成“計算”檢視的基礎。計算檢視結合並擴充套件了分析檢視與屬性檢視,這個以後設資料驅動的記憶體執行時計算模型正是SAP HANA的最大價值所在,因為後設資料層往往會免去將資料儲存到分配表之外其他層級的操作。
儘管在SAP HANA中進行建模通常被認為就是玩轉計算、分析或者屬性檢視,但同時需要強調的是要在記憶體中對資料進行合理的分配。資料必須符合其儲存結構的需要,SAP HANA也不例外。雖然資料模型能夠直接從傳統RDBMS的個星形schema移植過來,但是精心測試並設計一個合適的基礎模型,你將從SAP HANA中得到更多的回報。
SAP HANA如何處理資料?
在早期版本的RDBMS中,由於技術限制,資料只能首先被建模到物理的基於行的表中,並儲存到磁碟上。後來我們普遍使用了索引,來通過SQL查詢進行快速的資料訪問。索引目前仍然是資料庫當中非常重要的技術,因為它是圍繞傳統行式交易型資料庫概念進行設計的。
在這個平臺中,讀資料不是主要的目的。它的結構是圍繞如何將資料載入來設計的,而不是匯出。再後來,聯機分析處理(OLAP)資料庫結構,有時我們直接指代cube,成為解決行式資料庫報表效能瓶頸的新一代解決方案。OLAP也是將資料匯出的首次嘗試,它將主要精力放在了讀取資料上。然而缺點是資料需要轉換到額外的永續性儲存之上,因此它的整個過程都是非常複雜並且成本頗高(儲存與計算)。
然後,列式資料庫的出現成為上面方法的替代品,它對於儲存資料用來進行生成報表是非常高效的。列式資料庫的資料儲存效率非常高,因此免去了額外的資料層需求。讀效能更好,但是寫資料的速度勢必會變慢變複雜。
再然後,就是SAP HANA的出現。可以說它是集合了所有上面所提到的資料庫設計理念,唯獨有一個差別:就是SAP HANA是將所有的資料集儲存在記憶體之中的。
SAP HANA將資料儘可能地儲存在離CPU最近的地方:記憶體。資料以行式與列式兩種方式物理地存放在記憶體當中。它還能夠通過特定型別的邏輯檢視進行建模,來模擬基於cube的儲存結構。
其一,同行式資料庫表相比,冗餘資料在HANA中並不是大問題。列式資料庫表通過提供指標來引用重複的資料,因此重複值僅會儲存一次。此外,當資料不是扁平進入一個表當中,或者在HANA的多個表中未進行標準化的時候,表連線的消耗將是相當大的。HANA提供了基於行和基於列儲存的兩種資料庫引擎,不同方式的處理會同時出現,而當資料需要物理地從一個引擎移動到另外一個進行處理的時候,表連線的消耗就會提升。所以,我們要儘量將資料處理過程保持在一個資料庫引擎中,而且最好是HANA的列式資料庫引擎。
表連線消耗對於傳統資料庫來說影響會比較小,主要因為索引和標準化,而在HANA中它是不容忽視的,你需要監控資料庫查詢是否違反了列儲存結構的約束。如果處理過程在列式記憶體資料庫引擎中不支援的話,那麼結果就是它會物理地移動到行資料庫引擎當中,這對於效能的破壞是可想而知的。因此,在SAP HANA的配置階段,你仍然需要對資料進行建模。記住,它與傳統資料庫的資料建模設計會有很大的不同。
在資料建模和配置完成之後,你就需要馬上著手處理後設資料(metadata)。首先要對基於列式資料庫表中的資料供應進行“屬性”和“分析”檢視的建模,這些檢視的運轉原理同傳統資料庫的檢視很類似。屬性檢視設計用來給主資料(master data)設定上下文環境:它們提供有意義的資料值,比如ID列的描述或者實際ID值的名稱等。
為了更好地為您提供服務,請您在回覆中告訴我們“針對該主題,您目前存在的困難,或者您還想了解的內容”,即可瀏覽/下載
分析檢視是運算與聚合發揮作用的地方。包括屬性檢視和分析檢視在內,它們都將成為最終生成“計算”檢視的基礎。計算檢視結合並擴充套件了分析檢視與屬性檢視,這個以後設資料驅動的記憶體執行時計算模型正是SAP HANA的最大價值所在,因為後設資料層往往會免去將資料儲存到分配表之外其他層級的操作。
儘管在SAP HANA中進行建模通常被認為就是玩轉計算、分析或者屬性檢視,但同時需要強調的是要在記憶體中對資料進行合理的分配。資料必須符合其儲存結構的需要,SAP HANA也不例外。雖然資料模型能夠直接從傳統RDBMS的個星形schema移植過來,但是精心測試並設計一個合適的基礎模型,你將從SAP HANA中得到更多的回報。
SAP HANA如何處理資料?
在早期版本的RDBMS中,由於技術限制,資料只能首先被建模到物理的基於行的表中,並儲存到磁碟上。後來我們普遍使用了索引,來通過SQL查詢進行快速的資料訪問。索引目前仍然是資料庫當中非常重要的技術,因為它是圍繞傳統行式交易型資料庫概念進行設計的。
在這個平臺中,讀資料不是主要的目的。它的結構是圍繞如何將資料載入來設計的,而不是匯出。再後來,聯機分析處理(OLAP)資料庫結構,有時我們直接指代cube,成為解決行式資料庫報表效能瓶頸的新一代解決方案。OLAP也是將資料匯出的首次嘗試,它將主要精力放在了讀取資料上。然而缺點是資料需要轉換到額外的永續性儲存之上,因此它的整個過程都是非常複雜並且成本頗高(儲存與計算)。
然後,列式資料庫的出現成為上面方法的替代品,它對於儲存資料用來進行生成報表是非常高效的。列式資料庫的資料儲存效率非常高,因此免去了額外的資料層需求。讀效能更好,但是寫資料的速度勢必會變慢變複雜。
再然後,就是SAP HANA的出現。可以說它是集合了所有上面所提到的資料庫設計理念,唯獨有一個差別:就是SAP HANA是將所有的資料集儲存在記憶體之中的。
SAP HANA將資料儘可能地儲存在離CPU最近的地方:記憶體。資料以行式與列式兩種方式物理地存放在記憶體當中。它還能夠通過特定型別的邏輯檢視進行建模,來模擬基於cube的儲存結構。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/42046/viewspace-768388/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SAP HANA資料建模祕籍XV
- 如何使用SAP HANA Vora規劃HANA大資料戰略?LH大資料
- 祕籍 | 機器學習資料集網址大全機器學習
- SAP HANA Cloud 學習教程之二: 如何往SAP BTP 上 HANA Cloud 資料庫表裡插入資料Cloud資料庫
- 【SAP HANA】新建賬戶和資料庫(2)資料庫
- 如何在 SAP BTP Java 應用裡使用 SAP HANA 資料庫Java資料庫
- 在SAP HANA Express Edition裡建立資料庫表Express資料庫
- Android資料庫高手祕籍(1):SQLite命令Android資料庫SQLite
- Android資料庫高手祕籍(一):SQLite命令Android資料庫SQLite
- Salesforce和SAP HANA的後設資料訪問加速Salesforce
- 使用 SAP HANA Virtual Table 連線外部資料來源
- 使用 SSL 加密的 JDBC 連線 SAP HANA 資料庫加密JDBC資料庫
- 使用JDBC操作SAP雲平臺上的HANA資料庫JDBC資料庫
- The SAP Business Suite 4 SAP HANA FAQUI
- 如何使用 Node.js 訪問 SAP HANA Cloud 資料庫裡的資料Node.jsCloud資料庫
- SAP ECC,SAP HANA和SAP S/4HANA之間有什麼區別?
- Pycharm使用祕籍PyCharm
- React面試祕籍React面試
- SAP HANA Hint簡介
- SAP S/4 HANA OverviewView
- 資料建模在效能測試中的理解
- 使用PHP應用查詢SAP HANA Express Edition裡的資料PHPExpress
- 關於 SAP HANA 資料庫的死鎖問題(deadlock)資料庫
- 使用ABAP(ADBC)和Java(JDBC)連線SAP HANA資料庫JavaJDBC資料庫
- 農夫山泉CIO分享SAP HANA資料庫實施經驗資料庫
- 【效能最佳化】ORACLE資料庫效能最佳化概述Oracle資料庫
- Android資料庫高手祕籍(5):LitePal的儲存操作Android資料庫
- Android資料庫高手祕籍(3):使用LitePal升級表Android資料庫
- SAP ABAP 效能最佳化實踐
- 如何使用SAP HANA Studio的PlanViz分析CDS view效能問題View
- 使用nodejs應用查詢SAP HANA Express Edition裡的資料NodeJSExpress
- SAP推全新管理軟體版本S/4 資料庫僅支援HANA資料庫
- 消失的遊戲祕籍遊戲
- 前端構建祕籍前端
- 前端新手祕籍丶前端
- HTML5祕籍HTML
- GOOGLE搜尋祕籍Go
- SAP HANA和區塊鏈區塊鏈