SAP HANA 架构、Landscape、Sizing:完整教程
SAP HANA 数据库是一个以内存为中心的数据管理平台。SAP HANA 数据库运行在 SUSE Linux 企业服务器上,并基于 C++ 语言构建。
SAP HANA 数据库可以分布到多台机器上。
SAP HANA 的优势如下:
- SAP HANA 很受欢迎,因为它速度非常快,所有数据都加载在内存中,无需从磁盘加载数据。
- SAP HANA 可用于在单个数据库上进行 OLAP(联机分析)和 OLTP(联机事务)处理。
SAP HANA 数据库包含一组内存处理引擎。计算引擎是 SAP HANA 中主要的内存处理引擎。它与其他处理引擎协同工作,如关系数据库引擎(行和列引擎)、OLAP 引擎等。
关系数据库表驻留在列存储或行存储中。
SAP HANA 表有两种存储类型。
- 行类型存储(用于行表)。
- 列类型存储(用于列表)。
文本数据和图数据分别驻留在文本引擎和图引擎中。SAP HANA 数据库中还有一些其他的引擎。只要有足够的空间,数据就可以存储在这些引擎中。
SAP HANA 架构
在 SAP HANA 列存储中,数据通过不同的压缩技术(例如字典编码、游程编码、稀疏编码、簇编码、间接编码)进行压缩。
当 SAP HANA 中的主内存限制达到时,所有未使用的数据库对象(表、视图等)将从主内存中卸载并保存到磁盘。
这些对象的名称由应用程序语义定义,并在需要时从磁盘重新加载到主内存中。在正常情况下,SAP HANA 数据库会自动管理数据的卸载和加载。
但是,用户可以通过在相应模式下的SAP HANA studio中选择一个表,然后右键单击并选择“卸载/加载”选项来手动加载和卸载数据。
SAP HANA 服务器包含:
- SAP HANA 索引服务器 SAP HANA 数据库主服务器是索引服务器。每个服务器的详细信息如下:
- 它是 SAP HANA 数据库的主要组件
- 它包含实际的数据存储和用于处理数据的引擎。
- 索引服务器处理传入的 SQL 或 MDX 语句。
以下是索引服务器的架构。
SAP HANA 索引服务器概述
- 预处理器服务器
当使用搜索功能时,此服务器用于文本分析并从文本中提取数据。
- 名称服务器
此服务器包含有关系统景观的所有信息。在分布式服务器中,名称服务器包含有关每个运行组件以及服务器上数据位置的信息。此服务器包含数据所在服务器的信息。
- 统计服务器
统计服务器负责收集与 SAP HANA 系统的状态、资源分配/消耗和性能相关的数据。
- XS 服务器
XS 服务器包含 XS Engine。它允许外部应用程序和开发人员通过 XS Engine 客户端使用 SAP HANA 数据库。外部客户端应用程序可以使用 HTTP 通过 XS Engine 进行数据传输,以获取 HTTP 服务器。
SAP HANA 景观
“HANA”代表高性能分析设备,是硬件和软件平台的组合。
- 由于计算机架构的变化,在 CPU、RAM 和硬盘方面提供了更强大的计算机。
- SAP HANA 是针对性能瓶颈的解决方案,所有数据都存储在主内存中,无需频繁地将数据从磁盘 I/O 传输到主内存。
以下是 SAP HANA 在硬件/软件领域的创新。
SAP HANA 中有两种关系数据存储:行存储和列存储。
行存储
- 这与传统数据库(例如 Oracle、SQL Server)相同。唯一的区别是,与传统数据库将数据存储在硬盘上不同,SAP HANA 的所有数据都存储在内存中的行存储区域。
列存储
- 列存储是 SAP HANA 数据库的一部分,在 SAP HANA 内存中以列式方式管理数据。列表存储在列存储区域中。列存储为写入操作提供良好的性能,同时优化读取操作。
通过以下两种数据结构优化读写操作性能:
主存储
主存储包含数据的主体部分。在主存储中,应用了合适的数据压缩方法(字典编码、簇编码、稀疏编码、游程编码等)来压缩数据,以节省内存并加快搜索速度。
- 在主存储中,对压缩数据的写入操作成本很高,因此写入操作不会直接修改主存储中的压缩数据。相反,所有更改都写入列存储中的一个单独区域,称为“增量存储”。
- 增量存储针对写入操作进行了优化,并使用常规压缩。不允许在主存储上进行写入操作,但允许在增量存储上进行写入操作。允许在两个存储上进行读取操作。
我们可以通过“加载到内存”选项手动将数据加载到主内存中,并通过“从内存卸载”选项将数据从主内存中卸载,如下所示。
增量存储
增量存储用于写入操作,并使用基本压缩。在增量存储中存储的所有未提交的列表数据修改。
当我们想将这些更改移至主存储时,则使用 SAP HANA studio 中的“增量合并操作”,如下所示。
- 增量合并操作的目的是将增量存储中收集的更改移至主存储。
- 在 SAP HANA 列表上执行增量合并操作后,将主存储的内容保存到磁盘并重新计算压缩。
增量合并期间将数据从增量移至主存储的过程
存在一个行存储的缓冲区(L1-Delta)。因此,在 SAP HANA 中,列表由于 L1-Delta 的存在而类似于行存储。
- 用户对表运行更新/插入查询(物理运算符是 SQL 语句)。
- 数据首先进入 L1。当 L1 进一步移动数据时(L1-未提交数据)
- 然后数据进入 L2-delta 缓冲区,这是面向列的。(L2-已提交数据)
- 当 L2-delta 过程完成时,数据进入主存储。
因此,由于 L1-Delta 和主存储,列存储既是写入优化又是读取优化。L1-Delta 包含所有未提交的数据。已提交的数据通过 L2-Delta 移至主存储。从主存储到持久层(此处箭头表示将 SQL 语句发送到列存储的物理运算符)。在列存储中处理 SQL 语句后,数据将转到持久层。
例如,以下是基于行的表:
表数据以线性格式存储在磁盘上,因此以下是行表和列表在磁盘上存储数据的格式。
在 SAP HANA 内存中,此表以行存储格式存储在磁盘上:
而在列中,数据以如下格式存储在磁盘上:
数据以线性格式按列存储在磁盘上。可以通过压缩技术压缩数据。
因此,列存储具有节省内存的优势。
SAP HANA 尺寸
尺寸是用于确定 SAP HANA 系统的硬件需求(如 RAM、硬盘和 CPU 等)的术语。
最重要的尺寸组件是内存,第二个重要的尺寸组件是 CPU。第三个主要组件是磁盘,但尺寸完全取决于内存和 CPU。
在 SAP HANA 实施中,关键任务之一是根据业务需求确定服务器的正确尺寸。
SAP HANA DB 在尺寸方面与普通DBMS不同,具体体现在:
- SAP HANA 的主内存需求(内存尺寸由 SAP HANA 中的元数据和事务数据确定)
- SAP HANA 的 CPU 需求(CPU 预测是估计值,不准确)。
- SAP HANA 的磁盘空间需求(用于数据持久化和日志记录数据计算)
应用程序服务器的 CPU 和应用程序服务器的内存保持不变。
对于尺寸计算,SAP 提供了各种指南和方法来计算正确的尺寸。
我们可以使用以下方法:
- 使用 ABAP 报表进行尺寸计算。
- 使用 DB Script 进行尺寸计算。
- 使用 Quicksizer 工具进行尺寸计算。
使用 Quicksizer 工具,需求将以以下格式显示: