HANA CDS与ABAP CDS
如果你在网络或者SCN上面搜索CDS,即SAP的Core Data Services,你会很容易地找到类似“Core Data Services(CDS)是一个在SAP HANA中用于定义和消费富语义数据模型的基础架构”这样的句子。在另一方面,在ABAP字典中似乎也有一种叫做ABAP CDS的东西。它们有什么关系?让我们从ABAP(还有ABAP CDS)文档的作者的视角中看看这个问题。
原文标题:CDS – One Concept, Two Flavors
本文链接:http://www.cnblogs.com/hhelibeb/p/6647324.html
ABAP字典
为了开发应用,你需要有个东西来为数据建模。多年来,在ABAP的世界里,这意味着为了实现这个目的需要在ABAP应用服务器将ABAP字典作为建模工具。ABAP字典曾经是、现在也是一种平台无关的数据库表和视图的元数据存储库,并且可以在ABAP中通过OPEN SQL访问。数据库实体的定义由基于表单的ABAP字典工具处理,该过程发生在应用服务器,而相关的DDL(数据定义语言)经由DBI(数据库接口)被传递到数据库。你可以通过在SE11查看“数据库对象”查看。例如,对于视图,你可以看到相关的“CREATE VIEW”的DDL语句。对于ABAP程序来说,在ABAP字典中定义的实体充当着全局类型的角色,使得在ABAP中声明数据对象作为目标或者作为OPEN SQL中的DML(数据操纵语言)语句源变得简单起来。
HANA CDS
SAP HANA的到来,使得直接在数据库中开发应用成为了可能,这种开发不需使用应用服务器。这样也就产生了一个新需求:直接在数据库创建元数据模型存储库。因为在使用应用服务器上面的ABAP字典的时候,更多的是在UI上操作而不是使用原生SQL的CREATE TABLE和CREATE VIEW,特别是在有关在语义上进行纯技术定义的需求(?)。这就是SAP的Core Data Service存在的主要原因。
Core Data Service提供了一个基于SQL的DDL规范,通常可以在不同的平台上实现更多的可能性,比如注解/关联(association/associations)。在SAP HANA上,CDS提供了“定义数据持久化模型的构件”。CDS的DDL允许你通过包装相关的原生HANA SQL来定义数据库表,数据库视图、数据类型,并且通过语义属性增强它们。如果从ABAP程序员的视角来看,也许会有人说:好吧,这是一个基于源代码HANA数据库的字典工具。不过这样说就太短视了。
ABAP CDS vs. HANA CDS
有了ABAP CDS和HANACDS,我们就有了基于同一规范的两个实现。这两者是十分相似的,但是并不100%等同。如果你知道CDS的DDL,你应当可以理解CDS实体的这两个风格的定义。但是在规则上,你并不能从ABAP不加修改地复制DDL源放到HANA上,反之亦然。HANA CDS的实现和ABAP CDS的实现正在以不同的优先级推进。这就是为什么像“New Core Data Services Features in SAP HANA 1.0 SPS 10”这样的的博客会面向直接在SAP HANA上工作的开发者。ABAP开发者们则不得不在“ABAP News”这样的博客里寻找相关内容。
另一方面,由于HANA CDS只作用在SAP HANA上,ABAP CDS则是开放的,因此,ABAP CDS中存在着某些在HANA CDS中不存在的限制(出于同样的原因,OPEN SQL也比原生SQL的限制更多)。内建函数就是个好例子。ABAP CDS中的像CURRENCY_CONVERSION一样的内建函数必须在任何数据库平台可用,并且——这点非常重要——必须在所有平台有相同的表现。表达式也是这样,比如算术表达式,聚合或者CAST表达式。在ABAP CDS中想要发布这样的一个功能,必须让所有的平台都加进去。这是多么大的一个任务!而且这也是ABAP CDS至今不能提供SAP HANA的所有SQL功能的原因(但是这项工作还在进行...)。另一方面,它是开放的!因此也有某些ABAP特性例如客户端处理、表缓存目前在HANA CDS中不可用,但是在ABAP中可以使用。
结论
SAP的Core Data Services提供了一个单一的数据建模基础架构的概念,它在SAP HANA和ABAP应用服务器中都得到了实现。两个实现的设计原理是相同的,不过由于各自所在的环境不同也有一些不同,它们的风格也自然有所不同。
注意
据我所知,至今还没有一个SAP HANA之外的数据库平台原生实现了CDS。为了在其他数据库中建模,你当然可以在ABAP字典中使用ABAP CDS,然后让它把模型交给你。
HANA CDS与ABAP CDS的更多相关文章
- ABAP CDS Table Function介绍与示例
Core data services(以下简称CDS)可以指两样东西,一个是HANA CDS,一个是ABAP CDS. 如我们所知,HANA CDS只支持HANA数据库,ABAP CDS理论上支持多种 ...
- ABAP CDS-Part 1(ABAP CDS实体)
文章翻译自Tushar Sharma的文章,转载请注明原作者和译者! 目录 预备条件 一.概述 二.ABAP CDS实体(CDS Entity) a.定义ABAP CDS Views b.ABAP C ...
- 教程:基于访问控制的ABAP CDS视图权限
Hi! 对每一个CDS视图,我们都可以通过DCL(Data Control Language)定义访问控制.在这篇文章中,我会介绍ABAP CDS视图中非常重要的一面:权限管理. 本文的阐述基于我正在 ...
- 使用PlanViz进行ABAP CDS性能分析
如管理学学者彼得·德鲁克所说:你无法管理你不能衡量的东西( If you can't measure it, you can't manage it).要对已有程序进行性能优化,首先要对它的运行状况做 ...
- 【ABAP CDS系列】ABAP CDS中的系统信息
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP CDS系列]ABAP CDS中的系统 ...
- 使用ABAP CDS视图创建服务
介绍本文介绍使用ABAP Core Data Services创建OData服务的最快方法. 给出了有关@ OData.publish注释利用率,对数据源CDS实体的引用和从DDIC结构导入的详细信息 ...
- ABAP CDS ON HANA-(5)テーブル結合ビュー
JOINs in CDS View In ABAP CDS, Join between two data sources is allowed. Allowed joins are:- Inner J ...
- ABAP CDS ON HANA-(1)CDSビュー作成
Basic CDS View Creation Open HANA Studio. Goto ABAP perspective. Open the project, Navigate to the p ...
- ABAP CDS-介绍(ABAP CDS视图)
前言 文章翻译自Tushar Sharma的文章,转载请注明原作者和译者! 在SAP发展到SAP HANA版本之后,SAP内部的技术正在快速地变化,SAP开发业务应用程序的方式已经发生了范式转变(根本 ...
随机推荐
- Windows 10 IoT Serials 6 - 如何修改IoTStartupOnBoot.cmd文件
使用Windows 10 IoT Core系统的朋友应该会比较熟悉IoTStartupOnBoot.cmd文件,该文件是系统启动以后加载的批处理文件,一般会包含应用.服务和后台的启动,比如WinRM. ...
- 解决 Windows instance 时间不同步问题 - 每天5分钟玩转 OpenStack(153)
这是 OpenStack 实施经验分享系列的第 3 篇. 问题描述 通过上一节部署出来的 Windows instance 有时候会发现操作系统时间总是慢 8 个小时,即使手工调整好时间和时区,下次 ...
- 浅谈Activiti Modeler 的扩展
为什么要扩展 最近项目打算用activiti工作流中activiti modeler来做模块的可视化订阅,但是原生的activiti任务节点,有一些不符合业务需要,比如 配置项多,属性 ...
- [Usaco2014 Open Gold ]Cow Optics (树状数组+扫描线/函数式线段树)
这道题一上手就知道怎么做了= = 直接求出原光路和从目标点出发的光路,求这些光路的交点就行了 然后用树状数组+扫描线或函数式线段树就能过了= = 大量的离散+模拟+二分什么的特别恶心,考试的时候是想到 ...
- 在 Windows 上测试 Redis Cluster的集群填坑笔记
redis 集群实现的原理请参考http://www.tuicool.com/articles/VvIZje 集群环境至少需要3个节点.推荐使用6个节点配置,即3个主节点,3个从节点. 新 ...
- 【CNMP系列】CNMP之路,系统起步。
简单的来理解,我所说的CNMP,不是CNM+P,而是CentOs+Nginx+MySql+PHP,也可以单纯的理解为LNMP,但是系统是我们自己选的,虽说是Linux的一个分支,但我就喜欢CentOs ...
- Markdown语法收录
引言 Markdown编辑模式的写法在写博客以及生成简单的页面都有一定的使用,这里只收录Markdown的一些语法供以后查阅使用.具体使用手册可详见Markdown 语法说明(简体中文版) 正文 段落 ...
- 一种基于路网图层的GPS轨迹优化方案
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 GPS数据正常情况下有20M左右的偏移,在遇到高楼和桥梁等情况 ...
- Bean复制
有的时候我们需要将一个bean的属性赋值到另一个bean的属性中,比如用户提交过来的表单bean需要将该bean中的属性值赋值到对应的数据库bean,我们通常会以这样的方式做: User user = ...
- (Mac OS平台)升级.NetCore1.0正式版小记
昨天终于发布了.NetCore1.0正式版.昨晚回去就顺手把手里的一个.NetCore项目升级了一下.还是遇到了一些问题,这里记录下吧. 1.Restore问题 这个问题一直都有,一直放那没去解决.主 ...