01 引言

最近用到了SAP HANA,本人对此也是一点概念都没有,究竟HANA为何物?本文来讲讲。
在这里插入图片描述

02 HANA 概述

2.1 简介

本人总结:HANA本质就是一个内存数据库!

SAP HANA(全称SAP High-performance ANalytic Appliance)是由SAP开发的一款内置列式数据库的系统平台。

  • 狭义上SAP HANA指的是其内置的数据库管理系统,其主要功能是存储和检索数据。
  • 广义上,SAP HANA指的是HANA数据库系统及周边的各种功能组成的平台。

SAP HANA除内置数据库以外,还具有高级分析功能(例如预测分析、空间数据处理、文本分析、文本搜索、流分析、图形数据处理),ETL功能,并内置了应用程序服务器。

2.2 工作原理

SAP HANA向内存中加载大量系统数据,实现数据的高速读写。同时,每隔一段时间向硬盘写入当前内存中数据的快照,保证数据不会丢失。

由于可以从内存中直接访问所需的系统数据,HANA便可以实现传统ERP系统无法实现的一些功能,比如实时报表分析,短时间内多次执行物料需求计划等。

2.3 特点

HANA具有如下特点:

  • 内存数据库系统SAP HANA可以把系统所有的数据都载入内存中。因此,与传统的将数据存储在硬盘上的数据库相比,HANA的性能可以提升10~10,000倍。
  • 列式存储HANA使用了列式存储,可以提高内存的使用率和数据的检索效率。
  • 自动压缩数据
  • 并行处理SAP HANA专门针对并行处理做了优化。
  • 对应非结构化数据
  • 搭载数据仓库引擎
  • 应用程序平台
  • 可对接大数据工具HANA可以对接大数据处理工具(例如HadoopR语言)。

03 架构

3.1 HANA及相关外围系统

SAP HANA与和外围系统(OLAP方式)图:
在这里插入图片描述
组件介绍:

  • SAP HANA 工作台:用户可以使用这个工作台进行 HANA 建模、系统日常管理和监控等操作。
  • 数据展现和访问接口:存在于 SAP HANA 系统中的信息,用户可以根据不同的目标群体,使用不同的方式进行展现, SAP BI 提供的展现工具及其适用人群如图所示在这里插入图片描述
  • 数据加载:将数据抽取到 SAP HANA。在 HANA 环境下提供了众多的 ETL 工具,例如使用 SLT 可以实现数据的实时同步抽取。而使用 Data Services 组件可以根据业务需求,定时周期性地从多个数据源抽取最新的业务数据,并将其填充至 HANA 内存中。还可以利用 DXC (Direct Extractor Connection)方式直接抽取 SAP 系统中的标准数据源。
  • 对数据源的支持SAP HANA 支持所有的主流系统的数据源。对于 SAP 系统而言,可以使用 SLT (SAP Landscape Transformation)Data Services,以及 DXC 的方式进行数据复制。对于非 SAP 系统的数据源,同样也可以使用 Data Services SLT 进行数据的抽取。Data Services 支持超过 l00 种的数据源类型(如 OracleMS SQL ServerSAP ERP、文本文件等),可以对这些抽取过来的数据进行清洗和转换。

3.2 HANA系统组成

HANA系统由下图的六个组件组成:
在这里插入图片描述
六大组件如下:

  • Name Server(名字服务器):相当于整个 HANA 数据库系统环境中的“通信员”,通过 Name Server 可以知道当前 HANA 服务器的部署情况;
  • Index Server(索引服务器): 是 HANA 最核心的组件,承担着内存管理、事务管理、元数据管理器及权限认证、多版本并发控制(MVCC)等众多的管理工作;
  • Statistics Server(统计分析服务器):负责收集所有数据库组件运行的状态、执行效率和资源的消耗状态,还监控 HHANA Studio 的访问问,并且返回不同的提示信息给登录的用户;
  • Pre-processor Server(预处理器服务器)
  • XS Engine (XS 引擎或 XS Server):可以将持久层的数据模型封装成 HTTP 的方式供外部使用,而且它还具有对这些发布出去的服务进行搜索的功能,并且内置一个应用服务器;
  • Hdbdaemon:以正确的顺序开始或停止其他进程

分布式环境下多台 SAP HANA 服务器节点是如何协同工作图如下:
在这里插入图片描述

04 HANA 开发接口

SAP HANA 提供了一整套的预定义接口的 API,客户端的软件或用户自己开发的程序可以通过使用这一套 API 来访问 SAP HANA 中的数据和应用服务。

4.1 SQL 和 SQLScript

SAP HANA 是一个开放的系统,对标准 ANSI92SQL 全部支持,因为 SAP HANA 数据库层的 SQL 的实现是基于 P*time 组件的,而 P*time 很早就实现了 ANSI SQL92 全部特性,以下是SQLScript的一些特性说明:

  • 可以创建一个基于行或列的数据库表,而且还支持在两种存储之间互相转换;
  • 支持定义和查询临时表;
  • 支持几种特别类型的 SQL 视图。这些视图和列式数据的视图不同,这几种特别类型的视图是OLAP层的视图(星形模型)或 Calculation View 等;
  • 对很多SQL 的语法都做了特别的扩展。用户可以使用这些扩展的参数,而以往的标准 SQL 没有提供这些参数供用户使用;
  • 支持基于数据库表和视图级别的全文本检索;
  • 支持 SAP HANA 提供的计划引擎。用户可以通过 SOLScript 来调用这些计划引擎的功能。

SQLScriptSAP HANA 默认的开发语言,它提供了Table Type 类型的数据结构。用户可以定义一个 Table Type 类型的变量,此类型的变量可以保存任何 SQL 查询返回的临时结果,其结构由返回的数据类型自动进行匹配定义。在使用 SQL 执行一些复杂的计算逻辑时,Table Type 能够作为一个临时表保存某些中间运算值。SQLScript 是包含 SQL 的,这意味着 SQLScript 中可以包含标准的SQL语句。

4.2 MDX(多维度查询表达式)

SAP HANA 数据库也提供了 MDX(多维度查询表达式)。目前版本的 SAP HANA 提供的 MDX 的特性只能通过MS Excel 和其他支持工具来访问和使用。目前 SAP HANA 对于绝大多数的MDX规范和特性都支持,并且会继续在这方面进行开发。

4.3 REST Service XS Server

在前面我们了解了 XS Server 这一组件,它是一个轻量级的应用服务器,支持客户端程序通过 HTTP 的方式来访问 SAP HANA 系统。XS Server 提供的服务可以通过编写服务器端应用程序来实现。

要访问 XS Server 提供的 HTTP 服务,就要用到 REST 接口,通过这个接口,应用开发人员可以使用 XS Server 将 HANA 内存数据库中的数据和资源通过 HTTP 的方式发布。

当前在 XS Server 中开发的 HTTP 服务均是通过服务器端的 JavaScript 来实现的,而且增强了对 SAP HANA 的数据结构的支持,用户可以编写 JavaScript 来访问 SAP HANA数据库中的数据,使用SQL/SQLScript来调用其中的业务逻辑。

4.4 HANA Client Libraries

SAP HANA 提供了一组封装好的技术组件,这组组件被广泛称为 P HANA Client,其实它是一组客户端的驱动程序,用于在不同的平台下访问 SAP HANA 中的数据提供接口。以下是 HANA Client 提供的数据接口及其描述:

  • 为标准 Java 应用程序提供 SAP HANA Database JDBC 驱动
  • Windows 系统提供 ODBC 驱动,例如 Office 集成,直接通过 ODBC 数据源来访问HANA
  • SAP ABAP 应用系统服务器提供的 DBSL (Database Shared Library),使 ABAP 可以访问HANA数据库。DBSL 并未包含在 HANA Client 软件包中,而是作为 SAP Basis Kenerl 的一部分来发布。
  • Python 提供了 Python Database API
  • MDX 方式提供了ODBO接口。

05 HANA 相关资料

SAP HANA文档

SAP HANA 快速向导

The SAP HANA Certified Hardware Directory:

Collection of all security guides of SAP applications

HANA下载:

SAP Community Network:

Deployment Options:

A good entry point for information and demos:

06 文末

本文主要讲解SAP HANA相关的知识点,希望能帮助到大家,谢谢大家的阅读,本文完!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐