Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
ArthurYang
Product and Topic Expert
Product and Topic Expert
0 Kudos
3,111

本文部分内容译自 SAP HANA Overview | SAP Blogs,阅读时间约为15分钟


本文包含以下内容:


1.什么是HANA?


2.SAP S/4 HANA与 SAP Suite on HANA之间的差异


3.OLAP和OLTP的概念


4.企业级数据库的发展过程


5.SAP HANA的独特功能


6.Code Push Down及其方式


7.HANA Cloud是什么以及它从何而来


8.云化后HANA Cloud新增的能力以及常见场景


 

 

如果您对BTP感兴趣,BTP个人精选内容目录 | SAP Blogs 可能有更多你需要的内容


 

1.什么是HANA?


SAP HANA(High Performance Analytical Appliance高性能分析设备)是一款使用内存数据库技术的应用程序,可在短时间内处理大量实时数据。内存计算引擎允许HANA直接处理存储在内存中的数据,跳过了从磁盘读取数据的步骤。

HANA是第一个可以基于OLTP数据执行实时OLAP分析的数据库系统。

 

2.SAP S/4 HANA与 SAP Suite on HANA之间的差异


SAP Suite on HANA:


SAP Suite on HANA是SAP为不同行业提供的完整产品(ECC是SAP Business Suite的模块之一)。其数据库可以是HANA或任何其他数据库,如DB2、DB6、MSSQL等。ECC是SAP Suite on HANA的一部分。

SAP Business Suite 4 SAP HANA(SAP S/4 HANA):


这是基于HANA开发和充分利用HANA能力优化过的SAP系统。”简化”了数据模型,并遵循“一体原则”。简单理解就是,某些业务流程的一批核心表(MM、FI等)已被单个表(MATDOC、ACDOCA等)所取代。因此SAP Business Suite 4 SAP HANA被称为S/4 HANA。

 

3.OLAP和OLTP的概念:


3.1 OLAP:


Online Analytical Processing(OLAP),这类操作主要针对数据分析,而不是数据处理。

例如:库存分析中获取库存数据各类指标的过程。

3.2 OLTP:


Online Transaction Processing(OLTP)这类操作主要针对数据处理,而不是数据分析。

例如:保存或修改某些数据,例如创建销售订单或更改销售订单。

 

4.企业级数据库的发展过程


传统的数据库系统,例如Oracle、DB2、DB6、Sybase、MSSQl,主要的优化都是针对OLTP,而没OLAP方面的优化往往不足,导致分析性能一般。

而分析性能一般的原因除了优化少,还包括其基于硬盘的存储方式,App需要从硬盘中读取和提取数据,将其加载到内存后再与CPU通信,以完成计算,获取结果。

而操作90%的耗时用于从数据库读取和获取数据,硬盘IO成为了主要瓶颈。

此外,OLAP和OLTP操作往往不是实时的。

因为在App从数据库中提取数据并传递到内存时,数据库可能同时正在执行其他操作,因此,数据不是完全实时的。

这可以借助下图进行解释:

基于这些需求,SAP推出了BW,作为一款数据仓库,它基本完全是一个OLAP系统。在OLAP操作上性能更高,但这也是接近实时的查询,不是完全实时的。

下图解释了上述概念:


该系统依旧存在数据冗余、硬件成本高、性能低等缺陷。

 

而基于传统数据库以及独立数据仓库的常见问题,SAP推出了HANA数据库。在这里,所有数据都保存在内存中。

因此,现在的OLAP操作得到了很大的优化,因为在内存中处理数据比在磁盘中快得多。

此外,这是第一个OLAP和OLTP事务都是实时的数据库系统。

 

5.SAP HANA的独特功能:



  • 内存计算

  • 同时支持列式和行式存储

  • 仅插入方法

  • Code push down

  • 数据压缩

  • 数据的大规模并行处理


5.1内存计算:


内存计算意味着所有计算都在内存里进行,这使得计算速度更快。

5.2同时支持列式和行式存储


5.2.1基于行的存储Row based storage:


传统数据库系统,如Oracle、DB2、DB6、Sybase等,都以行存储的方式存储表中的数据。

这意味着每次执行OLAP操作时,都需要从左到右遍历所有数据。


下图右侧即数据实际存储的方式:


row-based storage的优点:

  • 每一行的所有字段都存储在一起。

  • 易于插入/更新,即基于行的存储有利于OLTP事务,因为它将直接遍历内存的末尾并插入新记录。


row-based storage缺点:

  • 即使查询过程中只涉及少数列也必须遍历所有数据。这意味着row-based storage的表不利于OLAP事务。例如:如果我们想知道印度国家的总销售额,那么查询将是SELECT sales FROM“table name”WHERE country=“India”,即使查询结果只涉及前两行数据,它仍需要遍历所有行数据。


5.2.2基于列的存储Column based storage:


在Column based storage中,我们将按照列为单位进行查询。


下图为列式存储中数据实际存储的方式


Column based storage优点:

  • 在查询过程中,只需要读取目标列(遍历),因为每一列都可以用作索引。

  • 系统记录了每列的起始地址和结束地址。因此,对于先前的查询例子,系统只需要遍历Country列即可,每一列都可以作为查询索引。


Column based storage缺点:

  • OLTP事务会比较麻烦

  • 查找到目标数据后,需要按照其行号重新获取整行数据


 

5.2.3在SAP HANA中何时选择基于列/行的存储:



  • SAP HANA中表的默认存储类型是列存储,基于特殊原因才推荐放入行存储中。


5.2.4什么时候可能选择Row based storage



  • 单次更新/插入/删除的范围很大时,例如:table NRIV(Number range intervals)。


5.2.5什么时候必须选择Column based storage



  • 表用于分析上下文时(例如:包含业务数据)。

  • 行数较多时(经验法则:超过100000),因为列存储中的压缩效果更好。


 

5.3 HANA中的Insert only策略:


HANA中的“Insert only”策略意味着,当某行被更新时,实际不会更新其具体的数据,而是将其设置为无效。并插入(追加)一个具有新数据的新行。

优点:

  • 保持OLAP的高效。

  • 不需要重新排序

  • 降低系统负载


5.4 Code push down:

传统方式中,主要的数据密集型计算都在应用中进行,数据库层主要用于存储并向应用提供数据。

但在HANA数据库中,SAP建议直接在数据库层执行数据密集型计算。这是因为整个数据库现在都驻留在内存中,多数时候处理数据比应用要快。

5.5数据压缩:


目的是降低内存复杂性。每个不同的字段(列)中不同列值都会被映射到连续的数字,因此数据库实际存储的不是实际值,而是占用空间小得多的连续数字。这种方法或过程被称为dictionary compression字典压缩。这样就能减少数据占据的空间。



5.6海量数据处理:


目的是降低时间复杂度。数据库工作(例如搜索查询)将被分配给CPU的多个核心,从而加速工作


 

6. Code push down及其架构:


code-to-data paradigm在SAP HANA中分为三个级别,每个级别的代码复杂性和性能都在不断提高:

  • 透明优化:表buffer增强带来更快的数据访问。

  • ABAP中的高级SQL:针对Open SQL的增强,以及CDS视图

  • SAP HANA原生特性:AMDP、原生SQL。


5.1自下而上的开发方法:


在自下而上的方法中,我们将在HANA数据库内开发HANA View和database procedures,然后使用远程代理在ABAP层(应用程序服务器)中调用这些功能。


这种方法显然会更快,但也会有缺点:

ABAP开发必须一边在HANA 数据库创建DB artifact,一边在ABAP层远程调用artifact,而远程调用就意味着数据复制,意味着需要同时维护HANA和ABAP链接。

5.2自上而下的开发方法:


在自上而下的方法中,我们在可以在应用层直接开发基于HANA的ABAP artifact,如CDS View和AMDP,它们将在HANA服务器上自动创建HANA View。


自上而下方法的主要优点是,ABAP artifact中,只有基于HANA的部分才需要和HANA集成。不需要HANA delivery unit。

 

7.HANA Cloud是什么以及它从何而来


HANA Cloud是SAP于2020年发布的一款数据库即服务DBaaS。

其实SAP之前还发布过HANA Service(NEO)和HANA Service(Cloud Foundry)两个版本的云HANA数据库,但是由于这些版本的底层都是基于VM虚拟机的,而不是基于容器的,在技术能力上会有一些限制。随着HANA技术的发展,实现了底层的容器化架构之后,才有了我们现在的SAP HANA Cloud.



8.相较HANA,HANA Cloud新增的能力以及常见场景


新增的能力:

  • 首先,HANA Cloud底层是基于Kubernetes搭建的,也就意味着其底层是容器化的,具有可伸缩,高可用等特性;

  • 其次,SAP认为云时代的大数据量不能仅仅依靠HANA来支撑,所以在HANA Cloud中加入了Data Lake作为另一个存储选项,以更低的成本支撑更多的数据,并与高性能的HANA存储原生集成,一起提供功能。


新增的场景:

  • 在HANA支持的场景之外,HANA Cloud额外可以支撑云/本地混合架构下的数据管理,同时提供Data Lake的存储选项来支持PB级的数据量。


 

 

关于本文内容有任何问题或见解,欢迎在评论区留下你的想法,如果时间紧迫,也可以直接联系到我 arthuryang1996@foxmail.com,感谢你的时间