Skip to Content
Personal Insights
Author's profile photo Arthur Yang

SAP HANA与HANA Cloud概况介绍

本文部分内容译自 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,感谢你的时间

 

 

 

 

 

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.