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
可以对接大数据处理工具(例如Hadoop
和R
语言)。
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 种的数据源类型(如Oracle
、MS SQL Server
、SAP 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
来调用这些计划引擎的功能。
SQLScript
是 SAP 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相关的知识点,希望能帮助到大家,谢谢大家的阅读,本文完!