因为工作关系,长期跟SAP打交道,所以去年就对HANA有了一些了解,只是公司目前的应用规模还较小,暂时没有上马HANA的打算,但是提前作一些学习还是很有必要的。正好清华大学出版社最近出版了这本《SAP内存计算——HANA》,便花了两周时间读了一下。

作为一项新兴技术,想要对它有更好的了解,除了通过官方资料以外,最重要的莫过于他人的成功经验。农夫山泉作为国内最早实施HANA的少数SAP大客户之一,他们的经验无疑是非常宝贵的。而本书的作者之一胡健先生正是前农夫山泉HANA项目实施团队的负责人,所以本书的内容可谓是经过实践考验的第一手资料。本书的另一位作者和轶东先生是SAP中国区方案与架构设计部总监,这又为本书提供了来自SAP官方的权威保证。

其实对于HANA来说,最大的困难在于如何让人理解什么是HANA?我曾经以为HANA只是SAP在收购Sybase之后,基于Sybase和SAP自己的MaxDB搞的一个新的数据库系统而已,花了很多时间才搞明白它并不只是把数据库放到内存中去处理这么简单,而是基于一个全新的思路创建的存储计算平台。本书第一章对此作了全面深入的解析。

之后的第二至第六章则从HANA的安装到各方面实施都作了相应的详细介绍,可作为有志于从事HANA的BASIS方面顾问工作的人学习实践。

第七章则是HANA在农夫山泉的实践介绍。这部分内容我曾经有幸在一些技术会议上学习过胡健先生的亲自分享,应该说HANA对于农夫山泉这样的企业来说,的确是作用巨大。

作为目前市面上少有的HANA方面的书籍,本书的主要内容还是比较入门级的,相对比较全面,但并不是很深入。期待以后会有更多更深入的书籍面世。

看完本书我也谈点自己对HANA的看法。

从技术上说,HANA通过列存储和压缩技术,结合大内存硬件,实现了大数据量的全内存处理,真正实现了业务的“实时”计算,对于改进企业决策效率,具有极大的作用。

就一般的企业发展流程来看信息化系统的发展,通常是从简单的财务管理软件开发,到ERP,再到数据仓库/商业智能。

这其中ERP更多的是业务日常数据处理,并不适合在其数据基础上作进一步分析和挖掘,原因就在于业务数据变化大,而分析和挖掘处理的数据量大,二者在同样的硬件基础上运行将会因为资源限制而造成相互的性能影响,所以才有了数据仓库这样的单独的数据分析挖掘平台和商业智能这样的展现平台。

虽然在独立的平台上作分析不会影响到业务流转,但是随着数据量的增加仍然会出现新的问题:

一是随着数据量的增加,分析工作量加大,想要挖掘出更深层次的信息,对于硬件的要求实在太高,于是有了所谓的“大数据”解决方案——将数据和分析工作做成分布式,通过堆硬件来实现。

二是随着数据量的增加,业务上要求的分析方式更多,在现有的硬件条件下,应用运行的时间过长,另外单独的数据库仓库平台由于数据抽取的非实时性,最终会影响业务决策的及时性。HANA就是为了解决这个问题而诞生的。

按农夫山泉的经验,单纯地将数据库换成HANA,可以使性能得到几百甚至上千倍的提升,即使在此基础上加上数据仓库和分析系统,也可能有上十倍的性能提升。这对于管理层及时了解企业的运作性况非常有帮助。

当然说这么多好处,主要还是对于像农夫山泉这样的大型企业来说的,中小企业的数据量还不大的时候,应该不会碰到这样的问题。

另外,除了HANA以外,企业计算还有一些别的高性能解决方案,比如Oracle的ExaData一体机。区别在于Oracle是基于自己的硬件和操作系统,并在此环境下专门优化了Oracle数据库组成的一体化解决方案,其性能之高,有相当部分也是基于超大内存的硬件和专用SSD存储实现。

相比之下,HANA是一种纯软件解决方案,它是运行于其它硬件厂商提供的经过SAP HANA认证的硬件和系统平台,与ExaData算是各有优缺点。

另外,HANA与SAP的其它产品——如ERP,BW数据仓库,BO商业智能产品——应该会有更好的配合度。

「书评」SAP内存计算——HANA的更多相关文章

  1. <<SAP内存计算——HANA>> 书评

    <SAP内存计算——HANA>又是一本在地铁里读完的书,最近阅读量大增,都是托了地铁的福了. 一年多以前就在ITPUB里发过帖子问“SAP HANA归根揭底到底是什么?”,那时通过一些网络 ...

  2. loj #2044. 「CQOI2016」手机号码

    #2044. 「CQOI2016」手机号码 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

  3. 一本通1648【例 1】「NOIP2011」计算系数

    1648: [例 1]「NOIP2011」计算系数 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 给定一个多项式 (ax+by)k ,请求出多项式展开后 x ...

  4. JavaScript 引擎「V8」发布 8.0 版本,内存占用量大幅下降

    上周,JavaScript 引擎「V8」的开发团队在该项目官方网站上正式宣布推出最新的 8.0 版本.这次更新的重点主要集中在错误修复及性能改善上,正式的版本将在数周后随着谷歌 Chrome 80 稳 ...

  5. 「SAP技术」SAP 如何看序列号被包在哪些HU里?

    「SAP技术」SAP 如何看序列号被包在哪些HU里? 事务代码SE16 ,表名OBJK, 输入物料号,序列号,HeadTable 输入值SER06, 查询结果如下, 根据objlist, 去表ser0 ...

  6. 「SAP技术」 SAP MM MPN物料的采购初探

    「SAP技术」 SAP MM MPN物料的采购初探 1, MPN物料号与我方正常使用料号物料主数据之间的LINK关系维护 MPN料号 14000005 , 我方料号11000250 , 2,采购信息记 ...

  7. 一个只需要点 「下一步」就完成监控 Windows

    Cloud Insight 此前已然支持 Linux 操作系统,支持20多中数据库中间件等组件,多种操作,多种搭配,服务器监控玩的其乐无穷啊!但想想还有许多 Windows 的小伙伴没有体验过,所以在 ...

  8. jvm系列(十):如何优化Java GC「译」

    本文由CrowHawk翻译,是Java GC调优的经典佳作. 本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三 ...

  9. LibreOJ 2003. 「SDOI2017」新生舞会 基础01分数规划 最大权匹配

    #2003. 「SDOI2017」新生舞会 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

随机推荐

  1. 【转】 UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout

    原文:http://blog.sina.com.cn/s/blog_923fdd9b0101b2b4.html 1.在Mac OS中NSWindow的父类是NSResponder,而在iOS 中UIW ...

  2. C++中 _itoa_s方法简介

    _itoa_s 函数原型如下: _itoa_s ( int value, char *buffer, size_t sizeInCharacters, //存放结果的字符数组长度 int radix ...

  3. Codeforces 543C Remembering Strings(DP)

    题意比较麻烦 见题目链接 Solution: 非常值得注意的一点是题目给出的范围只有20,而众所周知字母表里有26个字母.于是显然对一个字母进行变换后是不影响到其它字符串的. 20的范围恰好又是常见状 ...

  4. 执行*.sh脚本时提示Permission denied

    使用chmod修改.sh的权限 chmod u+x *.sh 再次执行

  5. 基于jQuery查找dom的多种方式性能问题

    这个问题的产生由于我们前端组每个人的编码习惯的差异,最主要的还是因为代码的维护性问题.在此基础上,我对jQuery源码(1.11.3)查找dom节点相关的内容进行了仔细的查阅,虽然并不能理解的很深入 ...

  6. c# winfrom 委托实现窗体相互传值

    利用委托轻松实现,子窗体向父窗体传值. 子窗体实现代码: //声明委托 public delegate void MyDelMsg(string msg); //定义一个委托变量 public MyD ...

  7. Jquery中index()问题

    对于Jquery中的index()问题,很多人会说这个很简单的,并不是一个非常困难的方法.笔者开始的时候也是这样子认为的,但是今天遇到一个index的问题,让我忙了一个晚上都没有解决,最后还是使用co ...

  8. sys.argv[]用法

    #-*- coding: utf-8 -*- """ sys.argv 用来获取命令行参数 sys.argv[0] 表示当前执行文件 "-k".sta ...

  9. jQuery在on绑定事件时,使用Function.prototype.bind上下文,只能用off(event)解绑函数,否则可能导致事件叠加

    因为一个bind函数,未解绑成功导致事件叠加,搞了一下午. keyup事件绑定: this.$document.on('keyup', this.keyUp.bind(this)); 原解绑函数: t ...

  10. Python模块解析之SocketServer(三)——模块思想

            SocketServer 体系 由两个部分构成 BaseServer 和 BaseRequestHandler.思想很简单 BaseServer接受请求,将请求交给BaseReques ...