SAP公开课笔记:基于HANA的软件开发 - 第二周总结
原文链接:http://www.sapdigger.com/thread-338-1-1.html
第一单元 数据库schema和表
第一节首先介绍了HANA资源库(repository)的好处。因为HANA的开发是逻辑代码与数据库对象紧密结合的,所以一定要有一种不同于传统数据库管理单元的方式来组织HANA开发对象。这就是引入HANA资源库的好处。幻灯片里列出来的,都比较抽象,但是在学习完本单元以后,你就能对其中的一些特性有深刻的认识。比如将HANA数据库对象定义绑定到开发项目中,这样连同代码一起打包进行管理和传输。
对于schema,对HANA有所了解的一定不陌生了。这是一个必须存在的对象并且是所有其它对象会包含在schema之下。
那么对于一个项目,我们一般需要一个专属的schema。在HANA开发项目中,我们不必去按照传统HANA建模的方式用SQLScript CREATE SCHEMA来创建。只需要建立一个.hdbschema文件并利用特定的语法,在激活这个文件时系统就自动为我们创建schema了。
顺便要在这里补充一句。当我们在项目之下建立文件件并且激活以后,会在当初选定的项目package下建立一个sub package。
HANA开发项目里对table的定义与HANA建模略有不同。因为是系统生成的(稍后讲解),系统为我们自动加上了package作为前缀,这样不同的包下面可以有相同的表名存在。其实从HANA的角度,这就是不同的表,因为他们的名字就完全不同。
对于HANA表的定义也是通过文件来完成的,只不过后缀变为.hdbtable。在最开始我提供的链接里有本节所需的所有定义语句供大家使用。
在我的HANA系统里,最终生成的结果如下,你们看到HANA自动生成了表并且用包作为前缀。
第二单元 数据库序列 和视图
本单元继续讲解如何通过文件的方式定义HANA的基本对象,当然这些对象目前为止还没有涉及到HANA特有的,所以只要是接触过数据库的都十分熟悉这些对象。数据库的序列是通过.hdbsequence文件定义的,而视图是通过.hdbview来实现的。对于视图的定义有一些需要说明的。从最开始链接里提供的示例代码可以看到视图定义的SQL语句对引号都进行了转义。因为这些代码要服务器端的JS解析执行,所以在JS的世界里,内容里有引号就需要通过\”进行转义。
第三单元 权限
权限(安全)在SAP HANA是一个很大的话题。这里只是简单地介绍了HANA开发所特有的。HANA的权限也与其它系统类似,具备角色的概念。而角色里面可以赋予的有SQL权限、分析权限(与BW分析权限类似)、系统权限(维护系统基础操作,比如创建用户或者创建schema)以及包的权限。
与数据库对象定义思想一样,HANA开发中角色的定义也是由文件来完成,以便能够一起打包传输,便于维护。不同的是,我们不需要创建.hdbrole文件,而是可以选择创建一个role,只不过本质上是生成了一个.hdbrole文件的模板。这个帮助,其实真的不大。
在对角色的定义里,有一点与传统HANA管理中的权限不同,就是引入了application privileges。目前它只能通过.xspriviledges文本文件来维护,没法通过HANA Studio的其它视图可视化维护。我想,应该是HANA Studio的功能没有跟上HANA开发功能的脚步。文本文件维护权限,这体验太差了。
关于这个特殊的权限的作用,本节还没有涉及。会在后面看到它的作用。关于HANA的权限问题,它本身的复杂是一方面,而HANA本身对权限做排错的不给力也造成了一定的麻烦。在练习时由于粗心的一个小错误,花费了我近15分钟的时间去排错。因为有些错误只能用nasty来形容,冗长但是模糊。.xsprivileges造成的,我写错了里面包的一个名字。另外一个小bug是,xsprivileges文件我激活后再次check系统就会报错,而文件本身是没有错误的,因为引用它的role的定义都已经成功激活了。这些编程的体验,是需要HANA studio改进的。
第四单元 介绍SAP_HANA_EPM_DEMO schema
第五单元 加载CSV文件数据
本节所介绍的功能是HANA应用开发所特有的,而不是告诉大家怎么将CSV文件作为数据源加载到HANA里。这里介绍的功能是将一些数据作为整个HANA开发项目包的一部分,在传输或者激活时,自动将部分数据加载到HANA里。当然这不适合业务数据的加载,而适用于一些元数据,项目配置数据。
要实现这个功能,我们需要三个文件。CSV数据文件,模型导入配置文件,数据导入配置文件。
其中模型导入配置文件以.hdbtim结尾,它定义的是源文件类型以及目标表。
数据导入配置文件以.hdbtid结尾,是将含有数据的源文件与目标表连接起来。这里要注意的是,模型导入配置文件中指定的是源文件类型,而非源文件名。SAP之所以用两个文件实现这样一个简单的功能是为了解耦。.hdbtim可以在某个SAP应用中默认定义,指定了一种导入模型,并且默认加载了自己的.hdbtid文件。而SAP的客户可以自行定义自己的.hdbtid文件,将额外的自己所需的数据加载到目标表中。
值得注意的是,一旦激活这三个文件,目标表中具备数据以后,再更改任意三个文件重新加载数据,也没法更改已经存在于HANA中的数据,也就是说如果新加入的数据与已有数据的主键是重复的,则HANA会略过这些数据。
在实际操作过程中,我一次性激活.hdbtim .hdbtib文件,我的系统(revision 56)会报错,错误指出.hdbtib引用的.hdbtim文件并不存在。可是当你忽略这些错误,.hdbtb文件又是成功激活的,并且数据也成功加载到HANA。因为一次性激活两个文件是视频演示中的方法,所以可能这又是HANA studio或者HANA自己的某个小bug。
第6-9单元 attribute view/Analytic View/Calculation View/Analytical privileges
此部分没有与HANA应用开发相关特别的内容,是对HANA建模的基础介绍。
第二周的内容结束了。基本这周还是在介绍SAP HANA的数据库和建模的一些基本概念。对于对HANA已经有所了解但是想学习XS开发的人来说并不是太难。
有用的链接:https://open.sap.com/courses/2/discussion_topics/249 下载第二周需要的示例代码