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 表有两种存储类型。

  1. 行类型存储(用于行表)。
  2. 列类型存储(用于列表)。

文本数据和图数据分别驻留在文本引擎和图引擎中。SAP HANA 数据库中还有一些其他的引擎。只要有足够的空间,数据就可以存储在这些引擎中。

SAP HANA 架构

在 SAP HANA 列存储中,数据通过不同的压缩技术(例如字典编码、游程编码、稀疏编码、簇编码、间接编码)进行压缩。

当 SAP HANA 中的主内存限制达到时,所有未使用的数据库对象(表、视图等)将从主内存中卸载并保存到磁盘。

这些对象的名称由应用程序语义定义,并在需要时从磁盘重新加载到主内存中。在正常情况下,SAP HANA 数据库会自动管理数据的卸载和加载。

但是,用户可以通过在相应模式下的SAP HANA studio中选择一个表,然后右键单击并选择“卸载/加载”选项来手动加载和卸载数据。

SAP HANA 服务器包含:

  1. 索引服务器
  2. 预处理器服务器
  3. 名称服务器
  4. 统计服务器
  5. XS Engine

    SAP HANA Architecture

  1. SAP HANA 索引服务器 SAP HANA 数据库主服务器是索引服务器。每个服务器的详细信息如下:
  • 它是 SAP HANA 数据库的主要组件
  • 它包含实际的数据存储和用于处理数据的引擎。
  • 索引服务器处理传入的 SQL 或 MDX 语句。

以下是索引服务器的架构。

SAP HANA Architecture

SAP HANA 索引服务器概述

  • 会话和事务管理器: 会话组件管理 SAP HANA 数据库的会话和连接。事务管理器协调和控制事务。
  • SQL 和 MDX 处理器: SQL 处理器组件查询数据并将其发送到查询处理引擎,即 SQL/SQL Script / R / Calc Engine。MDX 处理器查询和操作多维数据(例如 SAP HANA 中的分析视图)。
  • SQL / SQL Script / R / Calc 引擎: 此组件执行 SQL / SQL 脚本,并将计算数据转换为计算模型。
  • 存储库: 存储库维护 SAP HANA 元数据对象(例如属性视图、分析视图、存储过程)的版本控制。
  • 持久层: 此层使用 SAP HANA 数据库内置的“灾难恢复”功能。备份以保存点形式保存在数据卷中。
    1. 预处理器服务器

    当使用搜索功能时,此服务器用于文本分析并从文本中提取数据。

    1. 名称服务器

    此服务器包含有关系统景观的所有信息。在分布式服务器中,名称服务器包含有关每个运行组件以及服务器上数据位置的信息。此服务器包含数据所在服务器的信息。

    1. 统计服务器

    统计服务器负责收集与 SAP HANA 系统的状态、资源分配/消耗和性能相关的数据。

    1. 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 Landscape

    SAP HANA 中有两种关系数据存储:行存储和列存储。

    行存储

    • 这与传统数据库(例如 Oracle、SQL Server)相同。唯一的区别是,与传统数据库将数据存储在硬盘上不同,SAP HANA 的所有数据都存储在内存中的行存储区域。

    列存储

    • 列存储是 SAP HANA 数据库的一部分,在 SAP HANA 内存中以列式方式管理数据。列表存储在列存储区域中。列存储为写入操作提供良好的性能,同时优化读取操作。

    通过以下两种数据结构优化读写操作性能:

    SAP HANA Landscape

    主存储

    主存储包含数据的主体部分。在主存储中,应用了合适的数据压缩方法(字典编码、簇编码、稀疏编码、游程编码等)来压缩数据,以节省内存并加快搜索速度。

    • 在主存储中,对压缩数据的写入操作成本很高,因此写入操作不会直接修改主存储中的压缩数据。相反,所有更改都写入列存储中的一个单独区域,称为“增量存储”。
    • 增量存储针对写入操作进行了优化,并使用常规压缩。不允许在主存储上进行写入操作,但允许在增量存储上进行写入操作。允许在两个存储上进行读取操作。

    我们可以通过“加载到内存”选项手动将数据加载到主内存中,并通过“从内存卸载”选项将数据从主内存中卸载,如下所示。

    SAP HANA Landscape

    增量存储

    增量存储用于写入操作,并使用基本压缩。在增量存储中存储的所有未提交的列表数据修改。

    当我们想将这些更改移至主存储时,则使用 SAP HANA studio 中的“增量合并操作”,如下所示。

    SAP HANA Landscape

    • 增量合并操作的目的是将增量存储中收集的更改移至主存储。
    • 在 SAP HANA 列表上执行增量合并操作后,将主存储的内容保存到磁盘并重新计算压缩。

    增量合并期间将数据从增量移至主存储的过程

    SAP HANA Landscape

    存在一个行存储的缓冲区(L1-Delta)。因此,在 SAP HANA 中,列表由于 L1-Delta 的存在而类似于行存储。

    1. 用户对表运行更新/插入查询(物理运算符是 SQL 语句)。
    2. 数据首先进入 L1。当 L1 进一步移动数据时(L1-未提交数据)
    3. 然后数据进入 L2-delta 缓冲区,这是面向列的。(L2-已提交数据)
    4. 当 L2-delta 过程完成时,数据进入主存储。

    因此,由于 L1-Delta 和主存储,列存储既是写入优化又是读取优化。L1-Delta 包含所有未提交的数据。已提交的数据通过 L2-Delta 移至主存储。从主存储到持久层(此处箭头表示将 SQL 语句发送到列存储的物理运算符)。在列存储中处理 SQL 语句后,数据将转到持久层。

    例如,以下是基于行的表:

    SAP HANA Landscape

    表数据以线性格式存储在磁盘上,因此以下是行表和列表在磁盘上存储数据的格式。

    在 SAP HANA 内存中,此表以行存储格式存储在磁盘上:

    SAP HANA Landscape
    内存地址

    而在列中,数据以如下格式存储在磁盘上:

    SAP HANA Landscape

    内存地址

    数据以线性格式按列存储在磁盘上。可以通过压缩技术压缩数据。

    因此,列存储具有节省内存的优势。

    SAP HANA Landscape

    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 提供了各种指南和方法来计算正确的尺寸。

    我们可以使用以下方法:

    1. 使用 ABAP 报表进行尺寸计算。
    2. 使用 DB Script 进行尺寸计算。
    3. 使用 Quicksizer 工具进行尺寸计算。

    使用 Quicksizer 工具,需求将以以下格式显示:

    SAP HANA Sizing