前言

文章翻译自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的架构如下所示:

  1. 数据库层——这一层可以配置大多数流行的数据库,如Oracle, SAP HANA等。但为了得到最好的效果,推荐使用SAP HANA。
  2. 应用层——这一层包含ABAP Backend 和 SAP Gateway,使用RFC调用进行集成。
  3. 表示层——这一层包含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的可用性

  1. SAP NetWeaver 7.50, SP01, or higher.
  2. SAP NetWeaver 7.4 SP05
  3. SAP HANA SPS6
  4. SAP Business Suite EHP7 (Suite on HANA)
  5. S/4HANA
  6. SAP Business Warehouse 7.3

CDS其他的好处

  1. 语义丰富的数据模型:实体关系模型,本质上是声明性的,非常接近概念的概念。领域特定语言(DDL、QL、DCL)。陈述性的,接近概念思维的。
  2. CDS完全基于SQL:任何“标准SQL”特性都可以直接使用,比如连接、内建函数等。
  3. 完全兼容任何数据库:CDS是Open SQL视图中生成到管理的,并集成到SAP HANA层。所有主要数据库都支持这些视图。
  4. 支持注释:CDS语法支持特定领域的注释,可以被其他组件轻松评估,比如UI、analytics和OData服务。
	@AnalyticsDetails.aggregrationBehaviour
SUM()
Substring() [SQL functions]
  1. 关联:视图之上的视图的简化定义。沿着关系导航的路径表达式。
  2. 可扩展性:我们可以使用将自动添加到CDS视图及其使用层次结构中的字段来扩展sap定义的CDS视图。

    在模型级别上扩展

    通过注释在元模型级别上

CDS实体和它们的元数据是可扩展的,并且最佳地集成到ABAP数据字典和ABAP语言中。

后续

参考

ABAP CDS-介绍(ABAP CDS视图)的更多相关文章

  1. HANA CDS与ABAP CDS

    如果你在网络或者SCN上面搜索CDS,即SAP的Core Data Services,你会很容易地找到类似“Core Data Services(CDS)是一个在SAP HANA中用于定义和消费富语义 ...

  2. ABAP on HANA之CDS Association和Path Expression

    本文阐述了ABAP CDS association的概念,并且展示了在CDS视图中和SQL语句中写路径表达式(Path Expression)代码的方法.我也会解释如何在CDS asociation中 ...

  3. ABAP CDS-Part 1(ABAP CDS实体)

    文章翻译自Tushar Sharma的文章,转载请注明原作者和译者! 目录 预备条件 一.概述 二.ABAP CDS实体(CDS Entity) a.定义ABAP CDS Views b.ABAP C ...

  4. 【ABAP系列】ABAP CL_ABAP_CONV_IN_CE

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]ABAP CL_ABAP_CON ...

  5. ABAP CDS ON HANA-(1)CDSビュー作成

    Basic CDS View Creation Open HANA Studio. Goto ABAP perspective. Open the project, Navigate to the p ...

  6. ABAP CDS ON HANA-(7)CDSビューでの集約

    Aggregate expression in CDS View An aggregate expression calculates a single value from an operand o ...

  7. ABAP函数:VIEW_MAINTENANCE_CALL(维护表视图等)

    function:VIEW_MAINTENANCE_CALL 功能:维护表视图等 The function module calls the extended table maintenance (V ...

  8. Dynamics 365新特性介绍:在视图中显示图片和提示

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复242或者20161230可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  9. ABAP关键字和ABAP词汇

    下表为ABAP的词汇概览(包括关键字): ABAP-SOURCE ABBREVIATED ABS ABSTRACT ACCEPT ACCEPTING ACCORDING ACOS ACTIVATION ...

随机推荐

  1. buuoj[ACTF_Junior_2020]Splendid_MineCraft WriteUp

    Splendid_MineCraft 题目标题就已经暗示这题是SMC了(self-modifying code). 工具:exeinfo,x32dbg和IDA7.0 先丢进exeinfo里查看相关信息 ...

  2. OpenCV计算机视觉学习(8)——图像轮廓处理(轮廓绘制,轮廓检索,轮廓填充,轮廓近似)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...

  3. request-promise post请求微信小程序云函数调用http

    微信小程序不支持http调用,但是可以通过服务器或者云函数实现,云函数相当于云服务器中的一段代码,可以使用http协议 首先要云函数安装request-promise,右键云函数,在终端中打开,输入n ...

  4. OpenTelemetry架构介绍

    OpenTelemetry: 经得起考验的工具 摘自:https://blog.newrelic.com/product-news/what-is-opentelemetry/ 目录 OpenTele ...

  5. 你不知道的那些js调试命令

    通常情况下,我们在调试js程序的时候一般都使用console.log()来进行程序的调试,打印自己所需要的内容什么的. 那么js的调试命令可不止一个console.log() 分类输出 console ...

  6. STM32入门系列-介绍STM32型号与功用

    作为STM32初学者,一般会选择购置一块开发板,因为在开发板上有很多已经集成好的模块,如红外模块.按键模块.LED模块.DAC模块.ADC模块.can模块.485模块.以太网模块.WiFi模块.蜂鸣器 ...

  7. FullCalendar v5.3.2版本制作一个航班日历Demo

    今天一个新需求是制作一个航班日历来订舱.然后我就各种找,最后找到FullCalendar,过程非常煎熬,网上例子大部分没用,大部分没有完整版.官网教程又不是很详细.搞了几天才彻底搞好这个航班日历,有需 ...

  8. Inception系列之Batch-Normalization

    训练深度神经网络非常复杂,因为在训练过程中,随着先前各层的参数发生变化,各层输入的分布也会发生变化,图层输入分布的变化带来了一个问题,因为图层需要不断适应新的分布,因此训练变得复杂,随着网络变得更深, ...

  9. 用数组实现队列(顺序队列&循环队列)

    用数组实现队列(顺序队列&循环队列) 顺序队列 ️ 队列(先进先出) 几个问题: 队列方法:入队.出队 队列的存储:即队首队尾两个指针, 扩容:如果队列容量不够了,应该扩容,如果队尾没有位置了 ...

  10. 如何构建高性能服务器(以Nginx为例)

    方法论 软件层面 增大CPU利用率 使用全部CPU, worker进程数等于CPU 进程间不做无用的切换 繁忙时不主动让出CPU worker进程之间不争抢CPU CPU切换需要5us,如果大量进程需 ...