【IT168 评论】SAP开始了一项客户鼓励引导项目“先驱者”来评估用HANA来设计的ABAP程序模块。关于这个话题Sanjay Khanna 在SCN写了一篇很棒的博客,先驱者项目到底做了些什么?我的同事, SAP的导师Thorsten Franz 跟我一起经历了这次活动,并且使用基于HANA的ABAP系统建立了一个实验模型。之后我与DSAG Jahreskongress(DSAG是SAP在德国的客户小组)谈到我们的这次经历,现在我在这里跟大家一起分享我们的印象,至少是哪些没有被NDA影响的部分。 另外,如果你想得到关于实验模型的一些截图,以及更多的信息,请到我上周在谈论DSAG时所使用的幻灯片。
首先我想感谢全体先驱者项目团队的极其奉献精神,尤其是Chris, Ingo, Jens, Thorsten 以及 Welf,很高兴能看到SAP公司有这么多非常优秀的人才努力的致力于这个项目。
HANA的ABAP应用——衍化还是变革
在我参加CEI先驱者的时候,我发现SAP采用了许多不同的接入方式以期实现 基于HANA的最合适的程序模组 ,所以我们需要学习在Eclipse和许多新的ABAP工具箱架构以及技术。实际上是所有的不同方式的处理方法以及程序范例。一些框架意味着变革因为他们复杂而有效-但是他们能够把发展目标以及品味有效联合起来么?我们测试了许多比较传统的技术,例如使用HANA打开SQL作为主要的内容,效果很好成功率很高,我知道其他的方法也会很适合HANA如OData及过滤还有寻呼技术。
在我看来SAP尝试了许多方法去优化HANA的ABAP,最终SAP做了一系列明智的决定:
·如果你想创立HANA优化的应用,你需要开发一个与HDB工作室相近的的环境,而Eclipse的ABAP无疑是一个很棒的选择。
·如果你想实现HANA应用的ABAP可以移植回SAP的商务套件中,你必须保证代码的兼容性。
也许这个看起来很保守,但是试想实际上这场进化迈向了一个新的业务平台。SAP通过HANA开始了一场变革,而且现在HANA已经出现在SAP的商务套件中了:
·当然ABAP应用可以立刻从HANA获得收益,但是我们需要的是HANA来优化框架结构和技术以期建立起来建立起一个应用程序采取全面利用内存功率的技术。我认为通过ABAP和HANA我们可以建立起带给我们竞争优势的商业应用程序。
·已经有很多的此类代码应用在SAP商务套件和合作解决方案中,所以我们需要寻找一个更保守的方法利用HANA技术解决现有的瓶颈。
SAP知道去评估一项新技术框架或者编程模式的唯一方法就是把他应用到现实情况中去:我们可以用它来建立商务应用程序么?这就是为什么他们与客户特别紧密的合作。我们非常有必要建立一个概念并且同客户讨论来自他们的下述挑战:你们如何分配解决方案的?如何处理存档数据?
让我在这里总结一下,基于HANA的ABAP会带来新的功能,模式工具,并且能让你开发出一鸣惊人的应用。准备好学习很多新的东西,但是请意识到SAP已经开始了一项进化过程,而我下面会提到最重要的方面:
·ABAP根据HANA做的代码优化(NW7.4)是完全符合软件AS ABAP7.31的。
·如果你想利用NW7.4建立一个新的应用,你可以用一个并行脚本作为起点。之后你可以把你的应用程序分配到SAP商务套件上作为主要的部分。因为这也将使用NW7.4 技术。现在SAP商务套件还并不支持HANA作为主要部件,但是SAP已经在向着这方面努力。
·并行的脚本可能会带来一些痛苦,而且并行脚本会受到一些限制而使用成熟的技术,事实上我以前在博客上谈过SAP的比较老的但是很棒的美化转换工具,如果你想了解的更多,我建议你们去读一读。
让我用图片来解释三种脚本,下面的图片表现带加速器的并行方式。
下面的图片展示了一个带额外AS ABAP(7.4)的并行脚本作为新应用的平台。这个应用服务器把HANA作为主要延续部分并且创造了自己的业务目标,并且也开始了融入在SAP 商务套件里。这个AS ABAP有复制商务套件数据的权限(当然也包括其他存储在HANA中的数据)。
未来着长大的图片会看起来更简单:SAP产品会把HANA最为主要延续部分(就像现在SAP BW这样)而且我们不需要任何的回复,也不会再有AS ABAP7.4。我们HANA在AS ABAP下获得了优化的特定应用,并且会分配到SAP商务套件中运行。
我提到关于ABAP的进化会是一个快速的过程,但是不会造成很大的破坏。在开拓者时我们探索了很多破坏性的特征。对他们中的一部分我真的很喜欢,而且也许将来他们都会出现,但是我相信SAP会为他们找到一条温和的引进方式。这次进化是一个非常有前途的战略,因为他为我们现在所痛苦的地方带来了立竿见影的帮助,并且允许反馈周期的存在。也许我可以用几个词概括他:SAP提高了速度但是仍允许Ecosystem能跟随上脚步。
让我介绍一些优势的地方,如果你想用NW7.4去优化一些已经存在的项目,你手上有两个选择,新的HANA优化过的应用和没有被优化过的应用,如果新的项目不想你期望的那么成熟,那么后者会是你的一个备选方案。如果问题发生SAP客户可以依旧使用以前的方式,这很重要,因为你需要去学一些新的内容从行政项目,新的程序模式以及其他,浙江需要一段时间而且你会一直犯错误,所以我做了如下的建议。
开发“简单的”HANA基础应用来解决现在令人苦恼的地方。抓紧学习关于NW7.4的新特征和HANA专有的语言。当然你并不需要应用NW7.4所有的特征,我的建议是开始先学习一些老的好的开放式SQL并且只在需要的时候才是用新特征。
然后开始开发更先进的HANA优化应用程序,并且整合非SAP 数据,然后更深入的关于运营报告的话题也许还要再加上一体化的水晶报表工具。
HANA的ABAP规划图
SAP在SCN上发布了关于HANA的ABAP规划图,下面我会描述一些最重要的特征:
·现有一些产品如BW已经做好以HANA为主要延续的准备了(BW7.3以及更高版本)。SAP基于HANA的商务套件将会使用NW7.4作为平台。
·如果现在HANA还不是你的产品的主要延续,那么你就需要使用并行脚本,运行数据复制到HANA中作为备选延续。根据SAP LT你可以定义一个实时或者定期复制的方案,你可以通过使用第二数据库从任何ABAP系统连接ADBC(或者原生SQL)来查询。
·用SAP HANA应用加速器你可以配置选择HANA作为第二延续而不需要做任何修正。可能会有一些限制如内核释放这种非侵入式的加速器:他只是提供给特殊的客户,你需要一个特殊的内核版本而且你需要检查者是否是可以用的。如果一个SAP标准程序希望数据库更新被写入数据库,那么下一个LUW可以读取到改变量,然后这个脚本就没有用了。因此SAP会帮助你找出这个脚本是不是可行的。
·SAP研发出自己的加速器(请允许我叫他们“纲领”加速器)和SAP CO-PA加速器一样它推动数据库的加速。这些加速器根据快速部署方案(RDS)进行部署。你可以根据客户具体的案例来开发自己的“纲领”加速器。
·利用AS ABAP7.4 你可以创建HANA优化的应用程序运行在一个利用HANA作为主要延续但是从商务套件复制程序的AS ABAP。
那么HANA优化的应用到底好在哪里?开发应用会变得很简单:
·我们有更好的支持工具:你可以直接使用HANA视图作为数据库视图,调用存储过程变得容易。
·同样会有HANA优化的框架结构由一个HANA优化的ALV网格允许传呼,唯一可见的数据就是那些从数据库加载的。
·CTS可以直接把HANA 产品同ABAP代码一起传输。
最主要的事情是我们可以开发HANA优化的应用并且对HANA的投资可以直接转化为价值。这些投资都是很安全的,因为只要他们是使用HANA作为主要延续的,我们可以配置这些应用到SAP商务套件中去,同时并行脚本也不再会是必须的了。
还有另外一个原因关于HANA用一种并行的方式在优化脚本:如果你关于HANA遇到了问题或者SAP LT复制脚本,那些非HANA的代码还在那里并且是可以作为后备方案存在的。诚实得讲我不期望遇到这些问题,但是对客户来说管理这些工具还没有太多经验,这会成为一个优势:我们可以通过管理这些工具来获得经验可以犯一些错误但是系统还是有很高的可用性。
但是为什么我们要建立HANA优化的应用程序的一个最主要的原因是, 他们有非常惊人的性能,因为他们可以直接从技术中获得收益:他们实时的给你接入数据,你可以浏览和实时计算大量数据,同样那你可以把他们实时可视化。
关于优化HANA ABAP代码的规则
我知道SAP现在正在这个话题上快速的发展,所以未来很多东西会发生改变,那么我来告诉你我是怎么看待这个问题的。
·许多发展的方针是不变的,举例来说避免选择太多的数据(太多行,太多列),组获取要好过选择..最后选择等等。
·首先选用开放的SQL并且如果有必要的话使用一些HANA专有的特征。
·学习SQL-和程序集理论化的SQL和UNION并使用JOINs。
·学习HANA专有的SQL特征和SQL代码,
·企业数据以及他们的模型对于一个成功的企业IT来说会是一种战略资产。避免把你的企业数据模型变成过于一般的数据模型。一般数据模型只能被在应用服务层进行评估,并不能从HANA得到收益。读一下我的博客,不要自作聪明,要变得聪明。
·把运算都放到数据库。
·从AJAX相似技术得到灵感,发展Paging-access到数据库图表,避免在主内存运行程序,只在必要的时候加载数据。
·改进你的BI/BO 和数据可视化技能,用仪表板来提高你的应用性能。当使用SAP UI5时,不要害怕去使用开源JAVA代码框架如D3。
最后一个忠告:别以为你一直在做内存中的工作,因为作为ABAP开发员你知道如何运用内部表格。哪里有很多的不同,而且最重要的是HANA是一个有多核处理进程的优化平台。所以我建议你去熟悉HANA最基本的特征和程序语言,下面的链接可以作为一个比较好的起点:
http://scn.sap.com/community/abap-for-hana
http://scn.sap.com/community/abap/eclipse
http://scn.sap.com/community/hana-in-memory
关于BW on HANA的应用可以作为一个专门的话题创建一个博客,所以我就不在这里复述了。如果你想了解我们更多关于BW on HANA的应用,你应该去看一下Udo Patzelt在我们公司DSAG Jahreskongress时关于内存战略的讲话PPT。
开拓者们的经验教训
客户参与能帮我们很好的得到新的能力,但是这需要花费时间和很好的准备,有时你们用实验模型进行工作,所以在面对强大的功能和不稳定的产品时,你们习以为常认为是可以接受的。
即使你认识到你们的原型并不涵盖所有的方面,我真的建议你们去保证你们所面对的方面会是你在真实生活中一直会面对的:用户界面结成尤其是在并行脚本时,部署和整合工具链,尤其在一些高级的脚本中(想想水晶报表的集成)。
在做开拓者时,我开始思考关于商务智能的数据交换,发现关于那个主题有很多很有意思的方法,如数据科学和数据可视化工具是现在正在用的,而因此被叫做数据科学家。这本书从D3 开始显示数据科学家只能做一些JAVA脚本的程序运行,但是数据科学可不仅仅是创造一些简单的图形 。它意味着深入地洞察整个业务并且作为应用程序开发者我们会在未来把这个方面带入到SAP商务套件。
在建立开拓者原型时,我选择D3的一个原因是为了学习更多的关于SAP UI5尤其是他的开放性上,然而实际上我选择用SAP BI工具来代替为运行数据创造一个面板,如果你想知道如何做的,你应该去看看VDL-可视化数据层,当然这个也是另一个博客的一个话题。
挑战
使用AS ABAP7,4创立一个HANA优化的应用是很简单的,但是如果建立一个以上呢?现在这变得有趣了:
·在HANA变为主要延续时,什么是最有效的做法能保证HANA优化应用可以顺利的被移植到SAP商务套件中去?
·我们有重复的代码-我们可以根据它们各自的结果去自动检测对方么?
·我们如何能把新的模式“代码到数据”建立的更有效获得更好的支持?
SAP还在不断地提倡客户建议,我希望许多人能同SAP一起来为这些和其他的挑战找到解决方案。
不过目前最大的挑战还是在知识的转移上,当我谈到DSAG Jahreskongress的问答环节我发现人们有很多很多的问题。我来举一个例子:有人问我,是否必须去使用Eclipse的ABAP还是仍然可以很好地应用老的SE80。答案很简单:你仍然可以使用SE80但是我推荐你去试用ABAP(因为很多新的功能可能只应用于Eclipse)
为什么人们会问这样的问题?实际上它们不知道基于HANA的ABAP是进化或者革命。这是我希望我在这片博客里最希望能够讨论明白的地方。
但是当你看这个网站:http://scn.sap.com/community/abap-for-hana 你会注意到两件事情,还没有太多的内容,已有的做出贡献的人是那些在解释如何使用SAP技术前很严谨的并且很有效的进行知识的传授的人。所以我希望这个能得到很快的改变,这个SCN将会变成关于ABAP和HANA信息交流的最有价值的地方。
更多精彩尽在2013年4月18~4月20日第四届中国数据库技术大会,北京永泰福朋喜来登酒店。
3月31日之前购票享8折优惠。