一、SAP HANA 的概念
SAP HANA 是一种面向列的内存关系数据库,它将 OLAP 和 OLTP 操作组合到单个系统中。
首先,它是关系型数据库,遵循了ACID标准(原子性,一致性,隔离性,持久性)。
其次,它是列式数据库,以列为形式存储数据,先把一列数据存储到数据库,然后再存储下一列数据,而其他像Oracle,Mysql 都是行式数据库。
最后,它是内存数据库,数据是存储在内存中,利用内存处理数据,效率非常高。
二、SAP HANA的架构
SAP HANA 是多租户数据库,由系统数据库和租户数据库组成,可以安装到一台机器,也可以横向扩展到多台。这和Oracle多租户架构类似,一个CDB可以包含多个PDB,而HANA则是由一个SYSTEM DB和多个TENANT DB组成。下图是HANA单机的架构:

三、SAP HANA 的版本
主要版本包括HANA 1.0和2.0,2010年发布HANA 1.0,到2021年6月结束支持。2016年11月30日发布HANA 2.0,定期发布Support Package Stacks(SPS),截止2024年5月,最新版本为HANA 2.0 SPS 07。

四、HANA进程结构
SAP HANA 数据库是多租户数据库,默认包含一个系统数据库(System database)和一个租户数据库(Tenant database),一套单机环境最多可以创建20个租户数据库。
系统数据库:仅用于系统管理,包含系统的全局配置信息,没有租户数据库的功能完整。主要运行了5个进程:Compileserver,Daemon,Nameserver,Preprocessor 和 Webdispatcher。其他租户数据库共享这5个进程。
租户数据库:用于业务数据的处理和存储。主要运行了2个进程:Indexserver 和 Xsengine

五、HANA进程功能描述
| 进程名称 | 描述 |
|---|---|
| Compileserver | 编译SQL 存储过程 |
| Daemon | 守护进程,用于启动其余服务 |
| Nameserver | 包含系统全局信息,如果是分布式环境,包含所有节点的拓扑信息 |
| Preprocessor | 用于预处理非结构化数据,文本数据分析提取 |
| Webdispatcher | 用于处理对HANA XS引擎的HTTP/HTTPS请求。 |
| Indexserver | HANA 数据库的核心,负责会话和事务管理、处理SQL语句、数据备份恢复 |
| Xsengine | 用于在 SAP HANA 系统之上开发和托管应用程序 |