Oracle Database Application Optimizations for SAP

当 SAP 开发内存中数据库 HANA 时,他们发现自己的应用是这个新的内存中数据库最大的敌人。SAP 意识到,如果要从 HANA 中受益,他们的应用必须经过优化。但是,虽然 SAP 只专注于考虑 HANA,但 Oracle 和其他功能丰富的数据库也可以支持相同的优化并从中受益。

Oracle Database Application Optimizations for SAP

工作负载分布优化

SAP 曾经将数据库视为一个简单的数据存储。每当用户想要对数据执行有用的操作时,就必须进行数据传输,因为智能功能位于 SAP Application Server 中。

这种方法的缺点是显而易见的:如果需要计算 100 万个值的总和,而且这些值以不同的货币表示,就需要将 100 万个单独的值从数据库服务器传输到应用服务器,只有在计算完成后才会被丢弃。此方法会产生网络通信流量,导致性能欠佳。

为此,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 的 SAP 用户如果已经激活了 Oracle Database In-Memory,就可以实施该数据模型,唯一的区别在于名称(Flat InfoCubes 或简称 Flat Cubes)。

SAP OLTP Applications: Table Declustering

一个不太有名,但很重要的优化是 Table Declustering。集群表将完整(逻辑)记录存储在一个(物理)表列中。这种复杂的值可以由 SAP Application Server 解释,但不能由数据库服务器解释 - 这意味着如果涉及集群表,就无法进行代码下推。因此,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 报告。

赶快行动

注:为免疑义,本网页所用以下术语专指以下含义:

  1. Oracle专指Oracle境外公司而非甲骨文中国。
  2. 相关Cloud或云术语均指代Oracle境外公司提供的云技术或其解决方案。