Oracle Database Application Optimizations for SAP

當 SAP 開發記憶體內資料庫 HANA 時,發現自己的應用程式是這個新的記憶體內資料庫最大的敵人。SAP 意識到,如果要從 HANA 中獲益,其應用程式必須最佳化。但雖然 SAP 僅考量 HANA,但功能豐富的資料庫 (例如 Oracle) 可以支援相同的最佳化並從中獲益。

Oracle Database 支援 SAP 應用程式最佳化

工作量分配最佳化

SAP 過去將資料庫視為簡單的資料儲存區。當使用者想要對資料執行有用的操作時,就必須進行資料傳輸,因為智慧功能位於 SAP Application Server 中。

此方法的缺點是顯而易見的:如果需要計算 100 萬個值的總和,而且這些值以不同的貨幣表示,則需要將 100 萬個單獨的值從資料庫伺服器傳輸到應用程式伺服器,只有在計算完成後才會被丟棄。這樣一來,就會產生網路流量,進而造成效能不佳。

對此,SAP 採用「下推」策略,將需要資料密集型計算的程式碼從應用層下推至資料庫層。SAP 開發的全新程式設計模型,允許 ABAP 程式碼 (隱含或明確地) 呼叫儲存在資料庫中的程序。他們定義了標準程序的程式庫,稱為 SAP NetWeaver Core Data Services (CDS)

在 20 年前,Oracle 已經有相同的想法並做出相同的決定。從第 7 版開始,Oracle Database 支援開發人員建立可在資料庫中儲存和執行的程序和函數,因此 Oracle Database 可以使用 CDS。從今天起,SAP 應用程式開發人員也可以使用 CDS。

資料模型最佳化

SAP BW: Flat InfoCubes

SAP 的資料模型 (應用程式使用的表格集和它們之間的關係) 已在 15 或 20 年前定義,並針對磁碟導向的資料庫進行最佳化。事實證明,在最佳化方面,記憶體內運算時代面臨著與磁碟運算時代一樣的挑戰。

其中廣為人知的範例是 SAP BW 立方體的內部結構。從業務或使用者角度來看,看起來像是單一「立方體」,但實際上是一組多個表格,它們之間的關係為多層次階層(「星狀」或「雪花狀」架構)。這個複雜的結構在執行查詢或報表時需要許多結合,會大幅降低記憶體內資料庫的速度。因此,SAP 為 HANA 上的 SAP BW 設計了更簡單的新資料模型,並將其命名為 HANA-Optimized InfoCubes。此新資料模型不僅針對 HANA 進行最佳化,還針對一般記憶體內運算進行最佳化。因此,已啟動 Oracle Database In-Memory 之 Oracle 使用者上的 SAP 也可以實行它,唯一的差異就是名稱 ( Flat InfoCubes 或只是 Flat Cube)。

SAP OLTP 應用程式:Table Declustering

Table Declustering 是一個不太有名,但很重要的最佳化。叢集表格會將完整 (邏輯) 記錄儲存在單一 (實體) 表格資料欄中。這類複雜值可由「SAP 應用程式伺服器」解譯,但無法由資料庫伺服器解譯,這表示如果涉及叢集表格,就無法執行程式碼下推。因此,SAP 現在推出支援 HANA 和 Oracle Database 的 Table Declustering

應用程式開發最佳化

所述 CDS 架構的優點在於沒有限制 SAP 應用程式 (即 SAP 開發人員建立的標準應用程式)。對客戶來說,自家開發的應用程式是 SAP 環境不可或缺的一部分。使用 CDS 功能時,許多這些應用程式都可能大幅受益。

CDS 視觀表可以透過 OData 顯示。根據 CDS 的 OData 曝光,使用開發架構 SAP WEB IDE 建立 SAP Fiori 應用程式相當簡單。如需詳細資訊,請參閱 ABAP Core Data Services on anyDB 報告。