使用 DataStore Object (advanced)

学习目标

  • 创建 DataStore Object (advanced)

  • 描述 DataStore Object (advanced) 如何支持常见的建模场景

DataStore Object (advanced)

IntroADSO_image_LJ ADSO_Structure1_image_LJ

简介

在 SAP BW/4HANA 中,DataStore Object (advanced) 是用于管理持久性事务数据的唯一对象。它是 SAP BW 中 DataStore Object (classic) 的后继者。

除了替代原有的 DataStore Object (classic),新的 DataStore Object (advanced) 还替代了 InfoCube、Semantically Partitioned Object 和 PSA。

开发人员可以利用 DataStore Object (advanced) 跨多个层(从数据采集到数据集市)对事务性持久化进行建模。DataStore Object (advanced) 结合了 InfoCube 和 DataStore Object (classic) 的功能,并带来了许多额外特性,例如使用字段建模和数据温度管理。

DataStore Object (advanced) 比其前身更灵活,可以在任意组合中包含字段和 InfoObject(仅字段、仅 InfoObject,或两者混合)。现在,任何 DataStore Object (advanced) 最多可包含 1000 个字段(关键字段/InfoObject + 数据字段/InfoObject),并且最多可包含 120 个关键字段。

多用途的 DataStore Object (advanced) 支持跨许多不同 EDW 层的多种不同建模场景。各种 DataStore Object (advanced) 用例通过在 DataStore Object (advanced) 定义中选择相关设置来实现。

在 SAP BW/4HANA 中,有四种类型的 DataStore Object (advanced):

  • Standard - 用于通用场景

  • Data Mart - 用于开发业务特定的数据集

  • Staging - 用于管理需要与其他数据源协调和合并的入站数据

  • Direct Update - 用于绕过标准加载过程

在 DataStore Object (advanced) 中,特征 InfoObject 的导航属性无法为报表启用。若要在报表中使用,必须在消费该 DataStore Object (advanced) 的 CompositeProvider 中启用导航属性。不过,InfoObject 的导航属性可以为转换启用,以支持在加载过程中对 DataStore Object (advanced) 进行查找。

现在,DataStore Object (advanced) 在 BW Modeling Tools 中创建和维护。不过,向 DataStore Object (advanced) 加载数据的管理由 SAP BW/4HANA Cockpit 支持。

DataStore Object (advanced) 的结构

与 SAP BW 一样,SAP BW/4HANA 中的 DataStore Object (advanced) 在技术上仍然围绕三个核心表组织(入站表、活动数据表和更改日志)。这些表在创建并激活 DataStore Object (advanced) 时生成。这些表的使用方式取决于所选择的建模选项。无论选择何种建模选项,这三个表始终会被生成,以支持在不破坏底层数据库的情况下更改数据模型的用例。

除 "Direct Update" 外,数据总是先加载到入站表中。随后,数据要么直接从该表读取,要么被进一步处理到另外一到两个表中以供读取或进一步提取。这取决于你在创建 DataStore Object (advanced) 时所选择的设置。

让我们来探索这三个核心表:

  • 入站表/BIC/A<技术名称>1

  • 相当于过去的 DataStoreObject (classic) 的激活队列表,或非 HANA 优化 InfoCube 的未压缩事实表

  • 结构:Request ID (REQTSN)、Data Package (DATAPAKID)、Record number (RECORD)、Record mode (RECORDMODE)、Key Field 1、Key Field n、Field 1、Field n...

  • 键定义:REQTSN / DATAPAKID / RECORD(= 生成的技术键)

  • 活动数据表/BIC/A<技术名称>2

  • 等同于过去的 DataStore Object (classic) 的活动表,或非 HANA 优化 InfoCube 的已压缩事实表

  • 结构:Key Field 1、Key Field n、Record mode (RECORDMODE)、Field 1、Field n...

  • 键定义:Key Field 1 / Key Field n(= 用户定义的语义键)

  • 更改日志表/BIC/A<技术名称>3

  • 与过去的 DataStoreObject (classic) 相同

  • 结构:Request ID (REQTSN)、Data Package (DATAPAKID)、Record number (RECORD)、Record mode (RECORDMODE)、Key Field 1、Key Field n、Field 1、Field n....

  • 键定义:REQTSN / DATAPAKID / RECORD(= 生成的技术键)

除这三个核心表之外,还会创建以下三个表视图。它们引用这三个核心表中的哪一个,取决于建模场景(即建模属性的设置):

  • 用于从 DataStore Object (advanced) 提取的视图: 提取 /BIC/A<技术名称>6

  • 用于对 DataStore Object (advanced) 进行报表的视图: 报表 /BIC/A<技术名称>7

  • 用于对 DataStore Object (advanced) 进行外部 SQL 访问的视图: 外部 SQL 访问 /BIC/A<技术名称>8

SAP 不支持客户使用代码直接访问存储 DataStore Object (advanced) 数据的三个表(相关说明请参阅 SAP Note 1682131)。为支持希望这样做的客户,SAP BW/4HANA 提供了一个用于外部 SQL 访问的新数据库视图。它是一个稳定的接口,允许以官方且经授权的方式在编程级别直接访问 DataStore Object (advanced) 的数据。该接口的主要用途是在暂存场景中被调用,例如在转换中使用 ABAP 或 AMDP/SQLScript 在例程中执行查找。它也称为 External SAP HANA SQL View,不提供原生 SAP HANA 计算视图所提供的分析授权和文本联接等功能。

External SAP HANA SQL View 会在激活 DataStore Object (advanced) 时自动生成。它在 ABAP Dictionary 中创建,因此也会在数据库目录中创建,以便用于原生 SQL 和 OpenSQL/ABAP。对于在引入 External SAP HANA SQL View 功能之前就已激活的 DataStore Object (advanced),你可以使用报表 RSDG_ADSO_ACTIVATE 创建缺失的视图。

Repair 按钮在选择 Rebuild database views 时,只会在数据库目录中创建视图,而不会在 ABAP Dictionary 中创建。要在 ABAP Dictionary 中创建视图,你必须使用 BW Modeling Tools 或该报表手动激活 DataStore Object (advanced)。激活不得直接在 ABAP Dictionary 中进行。

如果数据模型启用了库存(inventory-enabled)以管理非累积关键指标,则还会创建以下表:

  • 有效性表 : /BIC/A<技术名称>4

  • 参考点表 : /BIC/A<技术名称>5

为支持数据温度管理,你可以使用生成的视图对此外部冷存储执行例外更新:/BIC/A<技术名称>9

启动下一个演示,在 BW Modeling Tools 中探索 DataStore Object (advanced) 的设置。

使用 BW Modeling Tools 探索 DataStore Object (advanced)

DemoWatch Demo(SAP 官方交互式练习)

建模场景

核心建模属性

在 SAP BW/4HANA 中,DataStore Object (advanced) 是存储和合并事务数据的中心对象。根据你所选择的核心建模属性,DataStore Object (advanced) 可以有多种不同的用法。

核心建模属性位于 BW Modeling Tools 的 General 标签页中,它们代表了定义 DataStore Object (advanced) 行为及其三个数据库表用法的关键设置。此外还有一些称为 "special properties"(特殊属性)的补充增强功能,涉及库存关键指标、计划功能以及新的写入接口,它们会根据你所选择的建模场景而可用。

Standard 类型的 DataStore Object

让我们从最常用的 DataStore Object (advanced) 类型之一开始。

要将 DataStore Object (advanced) 建模为使用更改日志的标准类型,请选择 Standard Data Store Object 和设置 Write Change Log。使用更改日志时,增量(新增、删除和更改的记录)会保存在更改日志中。更改日志用于提取增量。只有存在更改日志时,才能从 DataStore Object (advanced) 回滚请求。也就是说,可以恢复请求激活之前的状态。仅选择 Write Change Log 选项的 standard 类型 DataStore Object (advanced) 可以与以前的 Standard DSO (classic) 相比。

如果你的 DataSource 仅以 FULL 方式提供当前数据集而不提供增量,则可以使用 Snapshot Support 选项。通过设置此标识,已删除的数据记录会被识别并更新。激活时,系统会识别出位于活动数据表中但不在加载请求中的记录,并将它们作为反向映像(reverse images)写入更改日志。

如果你只将唯一数据记录(键组合不重复的数据记录)加载到 DataStore Object (advanced) 中,则可以使用 Unique Data Records 选项。在激活请求期间,系统会检查是否存在唯一记录。如果记录已存在,则激活会因错误而取消。此选项有助于加快加载过程,因为加载期间只执行插入操作。

如果你不需要从此源对象进行增量提取,则可以节省系统资源。

只需不请求更改日志即可。此时只使用入站表和活动表。此外,在此场景中也可以选择 Unique Data Records 设置。

Staging 类型的 DataStore Object

Staging 类型的 DataStore Object (advanced) 针对极快的加载进行了优化。它们通常出现在 EDW 架构的入站层,以确保数据尽快从源系统传输过来。

选择此类型时,会有额外的设置可用于微调模型。

例如,当你设置 Inbound Queue Only 选项时,不会将数据保存在更改日志中。提取过程在增量提取或全量提取时总是再次读取入站表中的数据。

具有 Inbound Queue Only 属性的 DataStore Object (advanced) 只能在非常有限的范围内用于报表,因为入站表中的数据在逻辑上只对该对象有意义,而查询并不知道激活逻辑,因此无法跨记录进行聚合。

当你设置 Compress Data 选项时,请求的数据会写入入站表。在压缩过程中,数据被写入活动表(按照活动数据表的语义键进行聚合),并从入站表中删除。为节省存储空间,更改日志不会被填充。因此,你无法从 DataStore Object (advanced) 执行基于请求的数据删除。你只能选择性地删除数据。

对于全量提取,会访问入站表和活动数据表。增量提取只使用入站表。

具有 Compress Data 属性的 DataStore Object (advanced) 只能在非常有限的范围内用于报表,因为入站表中的数据在逻辑上只对该对象有意义,而查询并不知道激活逻辑,因此无法跨记录进行聚合。

当你设置 Reporting-Enabled 选项时,请求数据会在激活期间写入活动数据表,但也会保留在入站表中。由于数据冗余存储在入站表中,因此可以从活动表中删除数据并从入站表重建。数据只从入站表提取。报表只针对包含活动数据的表进行,这意味着数据只有在激活后才可见。

Data Mart 类型的 DataStore Object

Data Mart 类型的 DataStore Object (advanced) 针对报表和分析进行了优化。它取代了 SAP BW 的 InfoCube。

此类型的 DataStore Object (advanced) 具有以下特性:

  • 关键字段:无法为此 DataStore Object (advanced) 类型指定键,因为所有特征都包含在键中(逻辑键)。这意味着即使记录中有一个字段发生变化,也总会创建一条新记录(新键)。特征不会被更新或删除,这确保了变更历史得以保留。

  • 更新:关键指标值只能聚合,不能被覆盖。

  • 加载:数据总是加载到入站表中。

  • 激活:激活数据时,数据被复制到活动数据表,并按聚合行为进行分组。随后,数据从入站表中删除。更改日志不会被填充。激活相当于 SAP BW InfoCube 的压缩。

  • 回滚:对于此类型,只有在请求尚未激活时才能删除请求。

  • 提取:全量提取和初始提取会读取入站表与活动数据表的并集,用于更新到另一个数据目标。 增量提取的数据只从入站表读取。

  • 报表:查询从入站表活动数据表读取数据的并集。因此,无需激活数据即可看到所有数据。读取的数据是一致的,因为数据只包含到第一个不一致请求为止。读取的数据也是稳定的,因为在查询的导航步骤中,从 DataStore Object (advanced) 纳入的数据量不会改变。

Direct Update 类型的 DataStore Object

此类型的 DataStore Object (advanced) 在 SAP BW 中就已存在。

使用用于直接更新的 DataStore Object (advanced),你可以将数据直接加载到活动数据表,其中包括标准一致性检查(例如 SID 处理、时间特征的一致性、被冷存储或 NLS 锁定的区域)。

数据可以通过标准 DTP/转换或以下 API 加载:

  • RSDSO_DU_WRITE_API / RSDSO_DU_WRITE_API_RFC:将数据从内表加载到活动数据表。

  • RSDSO_DU_DELETE_API_RFC:从活动数据表删除数据。可以截断或选择性删除。

  • RSDSO_DU_CLEANUP_API_RFC:删除出错的 API 请求。红色请求会阻止 DTP/转换或 API 的进一步加载请求。

写入接口

当你使用 Write Interface-Enabled 选项时,此 DataStore Object (advanced) 中的数据可以通过 SAP 集成解决方案以 PUSH 方式移入入站表。基于此属性,它成为已过时的 BW 源系统类型 Data Services、Web Service 和 External System 的后继者。该接口可与以下解决方案集成:

  • SAP Data Services

  • SAP Data Intelligence

  • SAP Process Integration (PI)

  • SAP Integration Suite(作为 Business Technology Platform (BTP) 的一部分),以前也称为 SAP Cloud Platform Integration (CPI)

  • 第三方 ETL 工具

Write Interface 选项可用于所有类型的 Standard DataStore 对象和 Staging DataStore 对象,但不能与 Inventory-EnabledPlanning-Enabled 一起使用。

SID 生成设置

代理 ID(SID)的基本概念在 SAP BW/4HANA 中并未改变。基于 BW Query 的报表仍然需要 SID。但生成选项已得到改进。

在 SAP BW 中,该标签为 BEx-FlagSID Generation。在 SAP BW/4HANA 中,它称为 Master Data Check

与 DataStore Object (classic) 相比,DataStore Object (advanced) 的 SID 生成存在以下差异:

  • 过去整个 DataStore Object 只有一个通用设置。现在每个特征 InfoObject 都有一个单独设置。

  • 新增了一个选项,可将 SID 值作为单独的列持久化到 DataStore Object (advanced) 中。

在 DataStore Object (advanced) 中,通常只保存特征值,而不保存相应的 SID。在这种情况下,查询时会对每个特征执行到其相应 SID 表的 SQL Join。这会对性能产生负面影响。对于报表中经常使用且基数较高的 InfoObject,建议使用新选项。你可以使用报表 SAP_ADSO_DESIGNS 来确定这是否对你的模型有帮助(SAP Note 2511639)。

提示

有关更多详细信息,请参阅这篇 SAP 博客文章:https://community.sap.com/t5/technology-blogs-by-sap/demystifying-sap-bw-adso-master-data-check/ba-p/13505427

使用非累积关键指标建模库存场景

SAP BW/4HANA 仍然支持非累积关键指标。

在 SAP BW/4HANA 中,你可以使用 DataStore Object (advanced) 对非累积关键指标建模。

  • 前提条件:核心建模属性中的 Inventory-Enabled 标志已打开。

  • 如果你向数据模型中添加非累积关键指标 InfoObject,系统还会显示 Inventory 标签页。添加非累积关键指标时,非累积变化(即流入和流出)的关键指标也会被添加到 DataStore Object (advanced) 中。

  • 在这种情况下,会创建两个额外的表:/BIC/A<techn.name>4 = 有效性表,以及 /BIC/A<techn.name>5 = 参考点表。

  • 计算非累积关键指标所需的参考点会随更改日志数据一起更新。因此,数据模型必须有更改日志,并且还必须已定义键。需要以下属性:(1)Activate/Compress Data and Write Change Log,或(2)Activate/Compress Data and All Characteristics are Key, Reporting on Union of Inbound and Active Table。

  • 可以基于事务 DELETE_FACTS 删除没有相应移动的参考点。

  • 必须使用 InfoObject 作为关键指标、非累积关键指标和有效性特征。此场景不支持字段。

提示

有关更多详情,请参阅以下资料:SAP First Guidance - SAP BW/4HANA: Inventory Handling and Non-Cumulative Key Figures https://www.sap.com/documents/2019/04/2cd3175e-497d-0010-87a3-c30de2ffd8ff.html

重塑 DataStore Object (advanced)

如果你的 DataStore Object (advanced) 为空,则可以直接在 BW Modeling Tools 中进行更改,无需进一步操作。但是,如果它已经包含数据,系统会遵循预定义的逻辑来判断是否需要额外的手动重塑任务才能正确激活该对象。当你最终将这些更改提供到生产系统时,这也同样适用于传输管理。单独的重塑作业的作用是使激活时间最小化,从而避免直接执行期间的中断(例如超时)。这道安全防线是合理的,因为对包含大量数据的 DataStore Object (advanced) 所做的更改可能会导致对 DataStore Object (advanced) 中现有数据进行大量的读写操作。

重塑要求并不限于 BW Modeling Tools 的 DataStore Object (advanced) 建模 UI 中 Remodeling 按钮所提供的更改。当其他更改需要对 DataStore Object (advanced) 数据库表进行关键的读和/或写操作时,也会使用重塑框架。例如,对一般建模属性的更改、对 DataStore Object (advanced) 键的更改、对索引、分区或数据分层设置的更改。

  1. 在 SAP BW Modeling Tools 中,打开你要修改的 DataStore Object (advanced)。如果你想使用标准的 DataStore Object (advanced) 重塑选项,请在 Details 标签页上选择 Remodeling。然后以下选项将可用。有关限制和工作方式的更多详细信息,请参阅 SAP BW/4HANA 应用程序帮助:

  • 将 InfoObject 替换为另一个

  • 将 InfoObject 替换为字段

  • 将字段替换为另一个

  • 将字段替换为 InfoObject

  • 用 InfoObject 的值填充

  • 用字段的值填充

  • 用常量值填充

  1. 在激活期间,系统会检查该对象是否可以立即激活,还是需要先进行重塑。如果需要重塑,会出现一条警告:**Remodeling is pending. DataStore object is not activated. Please run remodeling**。这意味着该对象尚未激活,并且会创建一个重塑请求。如果你对该对象做了两处或更多更改,这些更改会被合并到一个重塑请求中。你可以继续使用旧版本的 DataStore Object (advanced)。在此之前,重塑请求尚未被执行。

  2. 在 SAP BW/4HANA Cockpit 中打开 Remodeling Requests 应用,或使用事务 RSMONITOR 在你的 SAP BW/4HANA 系统中打开重塑监视器。找到生成的请求并手动启动或计划它。

  3. 如果你想将重塑后的 DataStore Object (advanced) 传输到测试系统并最终传输到生产系统,而它已在生产系统中存在,系统会检查是否需要重塑,并在目标系统中创建所需的重塑请求。如果你想传输一个已创建重塑请求但尚未执行的 DataStore Object (advanced),会出现一条警告,告知你 M 版本与 A 版本不同。你只能传输 A 版本(不含当前更改)。

提示

有关更多详细信息,请参阅博客 Role of Remodeling in the ADSO Change Management Processhttps://community.sap.com/t5/technology-blogs-by-sap/role-of-remodeling-in-the-adso-change-management-process/ba-p/13478191

管理数据加载

管理 DataStore Object (advanced)

DataStore Object (advanced) 的数据加载管理通过 SAP BW/4HANA Cockpit 中的应用提供。使用该应用,你可以显示加载请求、显示已加载的数据、删除请求、识别加载的激活状态等。

DataStore Object (advanced) 的 Manage 功能可以直接从 Eclipse 中的 BW Modeling Tools 启动。从 Eclipse 中的 BW Modeling Tools 启动会打开一个新的 Web 浏览器,并自动登录到 SAP BW/4HANA Cockpit,在那里直接打开 DataStore Objects - Manage Requests 应用。以下功能可用:

  • 加载和激活过程的请求管理,包括其日志

  • 选择性删除或完全删除

  • 显示已加载的数据

  • 检查某个加载请求是否已加载到其他下游对象

  • 显示元数据,包括所有建模和数据分层属性

  • 从平面文件上传数据

新的请求管理

请求管理是 SAP BW/4HANA 对数据仓库进行有序管理的核心。SAP BW 系统数量的增加、更高的复杂性以及对更多实时场景的需求,促使 SAP 重写了现有的请求管理和流程管理(RSSM)。因此,基于 0REQUID 的请求 ID 在 SAP BW/4HANA 中不再可用。

取而代之,SAP BW/4HANA 有了基于 Request Transaction Sequence Numbers (TSN)(基于 0REQTSN)的新请求状态和流程管理(RSPM)。RSPM 用于 InfoObject、DataStore Object (advanced) 和 Open Hub Destinations 的数据暂存、分发、流式传输和计划流程。新的请求管理附带一个新的管理 UI,可直接从 SAP BW/4HANA Cockpit 访问。它使你能够快速浏览非常庞大的请求和协议集合,并执行手动任务或监控活动。

在 RSPM 中,TSN 不再是 INT4 值,而是时间戳加上生成的递增后缀(例如 2019-03-13 10:25:11 000004)。它不仅消除了系统范围内请求数量 20 亿的上限,还允许直接从请求 ID 推导出新的语义,即加载的日期和时间。它有一个转换例程(conversion exit),可用于按本地时区显示时间戳。示例:99991231235959.000009900(TSN 的内部视图),{9999-12-31 23:59:59 0000099 CET}(TSN 的用户视图)。请求 TSN 有 2 个导航属性:User (0AUSER) 和 Source of Data (0ASOURCE),它们在创建请求 TSN 时被填充,并可作为元数据在 BW 查询中使用。

如果不进行定期的清理和日常维护,RSPM 请求详情在 SAP BW/4HANA 系统中会大幅增长。为执行此任务,SAP 交付了一个新的流程变体,用于归档那些不再需要的请求信息。例如,如果某个请求已从 InfoProvider 中移除,相关的请求详情也可以被移除。更多详情可参阅这篇博客文章:https://community.sap.com/t5/technology-blogs-by-sap/getting-started-with-sap-bw-request-housekeeping/ba-p/13640732

使用流程链类型管理 DataStore Object (advanced)

用于管理 DataStore Object (advanced) 的最重要的流程类型有:

  • 流程类型 Trigger Delta Merge 可用于将数据从增量存储移动到主存储。

  • 流程类型 Activate DSO Data 可用于激活 DataStore Object (advanced) 中的请求。

  • 流程类型 Drop Data Target 可用于删除 DataStore Object (advanced) 的全部内容。

  • 流程类型 Clean Up DSO Request 可用于从入站表或更改日志中移除请求。对于 Data Mart 类型的 DataStore Object (advanced),它可用于激活请求,即包括零消除(Zero Elimination)在内的压缩。

  • 已新增流程类型 Switch to Plan ModeSwitch to Load Mode,用于设置计划场景。

支持 DataStore Object (advanced) 管理的实用工具

还有若干其他工具可用于分析 DataStore Object (advanced) 并修复其不一致性:

  • DataStore Object (advanced) 支持功能(事务 RSOADSO)包含显示数据和数据模型、检查并激活它、管理对象目录条目、写入传输请求以及生成使用位置清单(where-used list)的功能

  • 报表 RSDG_ADSO_ACTIVATE 用于激活这些对象并修复其数据模型定义中的某些问题

  • 报表 SAP_ADSO_DESIGNS 用于分析 DataStore Object (advanced) 的大小并规划日常维护活动

  • 报表 RSDD_IPRO_KEYFIGURE_CONVERT 基于 SAP Standard TCUR 逻辑将金额换算为指定的目标货币。该工具由 SAP Note 3220814 交付,并在其附件中提供了详细文档。更正和增强在同一组件(BW-BEX-OT-DBIF)上提供。目前有补丁 1(3245254)、补丁 2(3251668)和补丁 3(3259972)。

理解 DataStore Object (advanced) 的增量合并设置

列存储表在读取性能方面表现良好,但在写入或接收新的、更新的数据方面表现不佳。因此,内存列存储表由一个主存储(读取优化)以及一个小的增量存储(写入优化)组成。读取这样的表时,主存储和增量存储两个部分都相关。这种划分对应用程序及其用户完全透明,通常由 SAP HANA 数据库管理。增量合并过程也是如此。数据从增量存储到主存储的传输通常由数据库管理,是数据库管理员执行的任务。

增量合并用于将修改从增量存储传输到主存储。首先执行一次异步检查,以确定是否需要增量合并。如果超过阈值,则在增量存储中执行合并。执行读取访问时,数据会从主存储和增量存储中读取,并合并结果。

由于 SAP BW/4HANA 通常在 DataStore Object (advanced) 中处理海量数据,因此在这种情况下增量合并由应用程序而非数据库管理,以便能够在最合适的时机进行处理。你有 2 种方式来实现这一点:

  1. 在 Data Transfer Process 中设置:数据传送过程(DTP)有一个 Update 标签页,其中包含 Trigger Database Merge 复选框。一旦 DTP 请求成功处理,此设置就会控制增量合并。该复选框默认处于选中状态。

  2. 在例外情况下,由于负载均衡问题,不建议在处理 DTP 请求后执行增量合并。在这些情况下,可以在流程链中使用流程类型 Trigger Delta Merge 来执行增量合并。

确保增量合并由 DTP 或该流程类型触发。否则,数据会留在增量存储表中。随着时间推移,这会导致内存使用和读取性能欠佳。请注意,每个分区 20 亿行的限制同样适用于 SAP HANA 增量存储。

管理大数据量

简介

在 SAP BW/4HANA 中,DataStore Object (advanced) 是管理事务数据的推荐数据模型。当计划的数据量非常大且预期数据增长相当可观时,需要特别考虑。如果你不采取措施管理数据增长,可以预期数据加载和报表的性能会受到负面影响。

SAP 提供了处理大数据量的解决方案,包括:

  • 索引 :BW 开发人员可以在 DataStore Object (advanced) 建模 UI 中创建额外的索引。这当然不会减少数据量。但它是为海量数据提供快速读取访问的有效选项。

  • 数据库分区 :为 DataStore Object (advanced) 以及具有 "high cardinality" 属性的 InfoObject 创建的数据库表,默认在 SAP HANA 数据库上进行分区。对于 DataStore Object (advanced),你可以在 BW Modeling Tools 中维护数据库分区的额外选项。

  • 语义分区 :为解决在 SAP BW/4HANA 系统中处理大数据的一些问题,建议对 DataStore Object (advanced) 进行语义分区,即将其建模为 Semantic Groups。

  • 数据生命周期管理 :SAP BW/4HANA 数据分层优化(DTO)代表了一个新框架,用于按重要性对数据分类,并将不常使用的数据分发到外部源。因此,SAP HANA 中的数据量得以减少。

  • 日常维护 :如果数据不再需要,建议在达到临界限制之前将其删除。一般来说,适用的逻辑和工具与过去 SAP BW 中的相同。

索引

默认情况下会为 DataStore Object (advanced) 创建标准主索引。它们是读取 DataStore Object (advanced) 数据所必需的,对于复合特征(compounded characteristics),则用于在报表期间(例如查询处理)加速主数据表与 DataStore Object (advanced) 表之间的联接。

如有必要(例如对于无法满足性能预期的非常复杂的查找),你可以为 DataStore Object (advanced) 创建额外的二级索引。这些客户索引创建在活动表上;如果找不到活动表,则索引创建在入站表上。请考虑索引在 SAP HANA 内存和索引更新处理方面所需的资源需求;只有在没有索引就无法满足性能预期时才使用索引。

注意

有关更多详细信息,请参阅 SAP Note 2160391(FAQ: SAP HANA Indexes)。

数据库分区

SAP HANA 表最多可存储 20 亿条记录。这对大多数组织来说通常足够了。然而,如果我们对表进行分区,那么 20 亿条记录的限制将适用于每个数据库表分区。这样,你就可以在单个表(例如 DataStore Object (advanced) 活动表)中管理数十亿条数据记录。

你可以使用分区将 DataStore Object (advanced) 的整个数据集划分为若干个独立且无冗余的较小单元。分区可以改善数据分析期间的系统性能。如果你在 DataStore Object (advanced) 中管理非常大量的数据,分区也可能是必要的,因为一个 SAP HANA 表或一个 SAP HANA 表分区最多可以包含二十亿条记录(正好是 2^31 = 2.147.384.648 条记录)。如果你使用数据分层优化(DTO),也可能需要分区。

  • 主级别分区适用于所有 DataStore Object (advanced) 表,并在生成 DataStore Object (advanced) 时可用。这意味着每个数据模型默认有一个哈希分区。其主要重点是将数据分发到 SAP HANA 数据库中的各个横向扩展(scale-out)节点。

注意

此类分区的基本规则是根据 SAP Note 2334091 及其附件中提供的 SAP 建议定义的。

  • 自动二级分区是指在 DataStore Object (advanced) 的入站表和更改日志中对 SAP BW/4HANA Request TSN 进行范围分区。

注意

定制(Customizing)在 SAP Note 2081135 中有所描述。

  • 手动二级分区是指可以为 DataStore Object (advanced) 的活动数据表定义的范围分区。在 DataStore Object (advanced) 的建模 UI(Settings 标签页)中,开发人员可以选择一个关键 InfoObject(或字段)作为分区条件。之后,需要作为元数据的一部分设置手动范围。对分区的更改必须作为元数据更改在系统环境中传输。典型的分区条件对象是时间特征(例如 0CALYEAR 及其时间层级相关的所有 InfoObject)或描述组织单位的字段(例如 0COUNTRY)。请考虑到,在此概念中只有活动数据表在范围内。这意味着,例如 "Data Mart" 类型的 DataStore Object (advanced) 中的数据在你激活(压缩)它之前不会被分区。除了这种对显式分区值的静态定义之外,你也可以以动态方式执行同样的操作。在这种所谓动态分区的情况下,你只指定分区字段,而不指定显式值。随后在激活数据时会动态创建分区。因此,动态分区比静态分区更灵活。 由于激活数据时会为分区字段的每个新值创建一个新分区,因此可能会创建大量分区,从而对性能产生负面影响。根据经验法则,DataStore Object (advanced) 活动表中的分区数不应超过 50(HASH 分区数 x RANGE 分区数)。因此,动态分区只适用于基数较低的特征。你可以利用 SAP 时间特征(0CAL*、0FISC*)作为分区字段,或使用派生特征或数据类型为 DATS 的字段作为分区字段,来减少动态分区的数量。你可以为这些字段定义分区粒度,例如为分区字段日历月(0CALMONTH)定义日历年份(0CALYEAR)粒度。在此示例中,属于某个日历年的所有值都被归入一个范围分区,因此创建的分区比没有粒度时更少。

提示

关于大数据量和分区的更多信息可参阅此文档:https://help.sap.com/docs/SUPPORT_CONTENT/bwplaolap/3361386590.html 此外,请参阅 SAP Note 2374652(Handling Very Large Data Volumes in SAP BW/4HANA)。

本课其余配图

ADSO_ModelingParam_image_LJ

ADSO_Structure2_image_LJ

ADSO_Structure8_image_LJ

ADSO_Structure3_image_LJ

ADSO_Structure4_image_LJ

ADSO_Structure5_image_LJ

ADSO_Structure6_image_LJ

ADSO_Structure7_image_LJ

ADSO_write_image_LJ

ADSO_MDCheck_image_LJ

ADSO_Inventory_LJ

ADSO_Remodeling_image_LJ

ADSO_Managefuntion_LJ

ADSO_RSPM_Housekeeping_image

ADSO_Process_Type_LJ

ADSO_Repair_Feature_LJ

PhasesoftheDeltaMerge_LJ

DeltaMergeMgt_LJ

ADSO_Indices_image_LJ

ADSO_Part_Recomm_image_LJ