前言
文章翻译自Tushar Sharma的文章,转载请注明原作者和译者!
在SAP发展到SAP HANA版本之后,SAP内部的技术正在快速地变化,SAP开发业务应用程序的方式已经发生了范式转变(根本性改变)。 但经久不变的法则是:尽你可能的去获取数据库操作的最优性能。 几个月前,当我开始了解学习ABAP CDS视图时,我不得不搜索大量来自不同作者的博客和页面,驳杂且费时费力。现在,我想为像我这样开始学习ABAP CDS视图的初学者发布一个博客系列,帮助他们入门。
Let's Start !!
介绍
数据模型是应用程序开发的基石。它们为跨系统定义和格式化数据库内容提供了一种标准化方法,使不同的应用程序能够共享相同的数据——降低开发成本,加快上线时间,并提高质量和性能。
那些熟悉ABAP领域应用程序开发的人对SAP NetWeaver Application Server AS ABAP中包含的传统数据建模工具应该并不陌生——特别是存储了对象定义的ABAP数据字典(DDIC),例如abap程序中用到的数据库表和视图。而随后出现了SAP HANA和将数据密集型逻辑下推到数据库层的新范式。
虚拟数据模型(VDM)的概念是几年前在HANA Live中引入的,SAP HANA Live是一个在套件表之上的虚拟数据模型,它使用被称为计算视图的本地SAP HANA SQL视图进行实时操作报告。
这带来了一些挑战:
- 它没有正确地支持层次结构。层次结构帮助企业通过不同的层以树形结构分析数据,并具有向下钻取的功能。例如,时间层次结构由诸如财政年度、财政季度、财政月份等级别组成。
- 一个高质量的数据模型应该为数据提供单一的定义和格式。它应该是清晰的、明确的、可重用的、灵活的,甚至是可扩展的数据模型。
- 由于HANA Live虚拟数据模型是在HANA数据库层定义的,这导致用于事务处理的业务套件和用于操作报告的HANA数据库之间存在安全角色的重复。
现在我们有一些问题要思考:
1、如何捕获数据库中数据模型的语义,以便模型可以被不同的用户轻松重用,例如OData客户端和OLAP工具?
2、你如何扩展元模型来服务你的应用程序?
3、你说的这些不可能。
也许吧,如果我们没有核心数据服务(CDS)的话。
''Core Data Services to build design-time data-persistence models''
“构建设计阶段数据持久性模型的核心数据服务(CDS)”
它是一个基础结构,数据库开发人员可以使用它来创建应用程序服务向UI客户端公开的底层(持久)数据模型。[链接]
为了利用SAP HANA进行应用程序开发,SAP引入了一个新的基础数据建模,称为核心数据服务(CDS)。使用CDS,数据模型是在数据库服务器上定义和使用的,而不是在应用程序服务器上。CDS还提供了超越传统数据建模工具的功能,包括对概念建模和关系定义、内置功能和扩展的支持。最初,CDS仅在SAP HANA的设计时和运行时环境中可用。现在,CDS概念在SAP NetWeaver中作为ABAP也得到了充分的实现,使开发人员能够在将代码执行下推到数据库的同时,使用ABAP开发工具在ABAP层工作。
CDS简化和统一了定义和使用数据模型的方式,不管你用的是那种消费技术。从技术上讲,它是对SQL的增强,为您提供了一种数据定义语言(DDL),用于定义语义丰富的数据库表/视图(CDS实体)和数据库中的用户定义类型。包括:
- 用于数据模型中的计算和查询的表达式
- 概念层次上的关联,在查询中使用简单的路径表达式代替连接
- 使用附加的(domain specific特殊域)元数据来丰富数据模型的注释。[元数据是“描述数据的数据”。元数据可以为数据说明其元素或属性(名称、大小、数据类型等),或结构(长度、字段、数据列),或其相关数据(位于何处、如何联系、拥有者)。]
ABAP和HANA平台都支持CDS !
事实上,在我看来CDS是SAP近年来在数据建模领域最野心勃勃,最令人兴奋的发展。你终于可以以相同的方式(语法、行为等)定义和使用数据模型,不管是在ABAP平台还是在HANA平台。当我想到CDS时,脑海中总会出现这样一句话:“一个数据模型可以统治所有的数据”。
除此之外,Horst Keller的博客描述了两种不同风格的CDS。
Core Data Services – One Concept, Two Flavors
在浏览了上述博客之后,我们了解到CDS可以以两种不同的方式编写,并使用SAP 在NetWeaver AS ABAP 7.4 SP5版本中为了使ABAP开发人员能够利用HANA功能而引入的“代码下推”(Code Pushdown)技术。在代码下推技术中,所有的计算都在数据库层而不是应用层执行,这使得数据能够快速地检索,减少应用程序的执行量。
架构概述
CDS的架构如下所示:
- 数据库层——这一层可以配置大多数流行的数据库,如Oracle, SAP HANA等。但为了得到最好的效果,推荐使用SAP HANA。
- 应用层——这一层包含ABAP Backend 和 SAP Gateway,使用RFC调用进行集成。
- 表示层——这一层包含SAP Fiori用户界面,用于向最终用户公开应用程序。
CDS版本
下面是关于ABAP特定版本的CDS功能变更的概述。
详细可参考-Feature Matrix
序号 | 版本 | 变化 |
---|---|---|
1 | In ABAP 7.40, SP05 | 引入CDS视图 |
2 | In ABAP 7.40, SP08 | CDS注释 |
带有参数的CDS视图 | ||
CDS视图增强 | ||
表达式和函数 | ||
关联的连接类型 | ||
带有筛选条件的路径表达式 | ||
根据固定的域值进行检查 | ||
3 | In ABAP 7.40, SP10 | CDS的访问控制 |
4 | In ABAP 7.50, SP00 | CDS表函数 |
会话变量 | ||
带有输入参数的CDS视图 | ||
输入参数注释 | ||
关键字段 | ||
评估注释 | ||
关联发布 | ||
扩展 | ||
5 | In ABAP 7.51, SP00 | 集团处理 |
交叉连接 | ||
更全面的注释 |
更多的变化可以自行查阅官方文档
SAP平台CDS的可用性
- SAP NetWeaver 7.50, SP01, or higher.
- SAP NetWeaver 7.4 SP05
- SAP HANA SPS6
- SAP Business Suite EHP7 (Suite on HANA)
- S/4HANA
- SAP Business Warehouse 7.3
CDS其他的好处
- 语义丰富的数据模型:实体关系模型,本质上是声明性的,非常接近概念的概念。领域特定语言(DDL、QL、DCL)。陈述性的,接近概念思维的。
- CDS完全基于SQL:任何“标准SQL”特性都可以直接使用,比如连接、内建函数等。
- 完全兼容任何数据库:CDS是Open SQL视图中生成到管理的,并集成到SAP HANA层。所有主要数据库都支持这些视图。
- 支持注释:CDS语法支持特定领域的注释,可以被其他组件轻松评估,比如UI、analytics和OData服务。
@AnalyticsDetails.aggregrationBehaviour
SUM()
Substring() [SQL functions]
- 关联:视图之上的视图的简化定义。沿着关系导航的路径表达式。
- 可扩展性:我们可以使用将自动添加到CDS视图及其使用层次结构中的字段来扩展sap定义的CDS视图。
在模型级别上扩展
通过注释在元模型级别上
CDS实体和它们的元数据是可扩展的,并且最佳地集成到ABAP数据字典和ABAP语言中。