HANA产品特点和优势
1. 基于内存的高效数据读取和处理
在传统的应用系统中,数据被存储在数据库中。当用户通过前端操作界面发出指令后,应用层从数据库中读取数据在应用层进行逻辑运算,并将结果反馈到前端操作界面进行展现或进行下一步的操作。 在这个过程中,从数据库中读取数据因为磁盘I/O的性能限制而成为瓶颈,而这一瓶颈在海量数据的读取中体现的尤为突出,基于海量数据的报表分析就是一个最明显的例子。
存在这一问题的原因是传统数据库实际上是将数据以文件的形式存储在磁盘上并为应用提供访问数据的接口。从数据库中读取数据的本质是从磁盘上读取文件,而在过去几十年的硬件发展中,内存和CPU的性能始终在飞速的提升,只有磁盘I/O的性能提升并不明显。从磁盘上读取数据的速度是毫秒级。而与之相对应的,从内存中读取数据的速度是纳秒级,这基于内存的数据读取比基于磁盘的数据读取性能要快100万倍。所以当基于数据仓库进行报表分析时,如果从传统数据库中读取海量数据需要数十分钟的时间,那么从SAP HANA中读取同样的数据只需要不到一秒钟的时间。在数据爆炸这一大趋势下,HANA 给用户带来了高效迅捷的数据处理和分析能力。 2. 行存储和列存储的混合模式
传统关系型数据库是按照行的方式存储数据的,能够为交易系统即OLTP应用提供高效的支持。 SAP HANA 是行业中唯一同时支持行存储和列存储的内存数据库,所以能够对OLTP交易系统和OLAP分析系统同时提供高效的支持。
3. 高效的并行处理机制
在近年IT行业硬件的发展中,技术路线发生了明显的变化。以往硬件厂商致力于提供更高主频的处理器,即提升单颗CPU的计算能力,但最近几年,硬件服务器的处理器主频提升并不明显,但是单台服务器配置更多的CPU,并且每个CPU包含更多的内核。这意味着软件系统必须提升并行处理的能力,才能够在新的硬件发展趋势下保证系统的性能能够持续的提升。
SAP HANA 的研发过程中和硬件合作伙伴保存了非常紧密的协作,整体的体系架构基于Intel X处理器平台支持多服务器、多处理器的高效并行处理。首先在底层开发中,Intel为SAP提供专门的开发包,让HANA的应用能够最高效、充分的利用多处理器的并发能力。HANA在应用层的架构设计上也能够将数据处理和运算拆分并部署到多个处理器。例如计算引擎可以将数据模型拆解,将一些SQL脚本拆分成可以并行执行的步骤。这些操作将递交给数据库优化器来决定最佳的访问行存储和列存储的方案。
在系统的部署架构层面,SAP HANA可以部署到多台集群的硬件服务器,保证系统的可扩展性以及健壮性。 4. 高效的数据压缩优化内存利用
SAP HANA的基本机制是将数据全部存储到内存中,以进行高效的数据访问和运算。虽然硬件包括内存的价格日趋低廉,但相比磁盘而言,内存仍是较贵的存储设备。而在企业系统中数据增长迅速,达到数TB甚至数十TB的情况下,将所有数据原封不动的导入内存仍将带来较大的硬件投资。为了帮助企业节省这一部分投资,SAP HANA中采取了基于智能数据字典等高效的数据压缩机制,能够将数据压缩5-20倍,从而充分节约硬件投资。智能数据字典的压缩机制如下图所示。
5. 虚拟建模减少数据冗余
在传统的数据仓库中,数据从应用系统及其他数据源抽取并存储在数据仓库中。然而往往不能直接的基于这些原始数据进行分析。需要在数据仓库中建模,即根据不同的分析需求,将所需要的数据进行计算合并,并建立不同的分析维度,从而形成一个特定的数据模型。每个数据模型中的数据都是从物理上单独存储的。一个数据仓库的应用往往建立数十甚至上百个数据模型,这意味着基于同样的原始数据,需要额外硬件存储来保存建立的数据模型。所以我们往往看到1TB的源数据,在数据仓库中变成了2个TB甚至更多。这给用户带来了额外的硬件和维护成本。
在SAP HANA中,将源数据导入内存后,在HANA中的建模有别于传统数据仓库。 HANA中的数据模型都是虚拟的,系统只保存这些数据模型内表的构际关系以及数据的运算逻辑,但不会把数据另外进行存储,只有当前端提交分析请求时,
HANA才会根据虚拟数据模型进行数据的计算并将结果提交给前段。这意味着HANA中不会存在冗余的数据,从而大大节约的硬件的投资和维护成本。 另外这些虚拟模型可以进行灵活的创建、修改、删除,从而满足业务的需求变化,而无需担心对整体数据仓库数据结构的影响,这比起传统的数据仓库而言能够更加高效的贴合业务的需求。另外,由于HANA没有保存这些数据模型,所以,当源数据系统中的增量数据加载到HANA中时,无需像传统数据仓库中加载增量数据时进行的复杂的数据计算。
6. HANA数据库-保证用户数据的“零”丢失
SAP HANA采用了业界领先的内存计算技术,从而可以保证用户数据的“零”丢失。HANA中的数据都是保存在内存中的,一拉闸停电,数据就没有了,虽然服务器掉电的情况发生很少,但是这里还是解决了这个问题,当然不是专门为停电而解决的,比如由于数据库的正常维护,需要重启的情况。它有以下的功能 记录Log信息,包含last save point和因为停电而没有写入数据库中的那些log信息。
这里可以看到从HANA的内存写到Persistence Layer的数据,包含了2个部分:Data和Log,这个过程是持续不断的过程,当然中间有一定的时间间隔,其实Persistence Layer就是HANA的内存数据库的某个时点的一个完整的镜像拷贝,以及这个拷贝之后所所有发生的数据库更新的Log信息(在停电前成功执行完毕的)
7. 在数据库层面进行数据密集型运算
SAP HANA 除了提供完善的数据库功能外,其内置的计算引擎可以将原本在应用层进行的运算转移到数据库层面进行处理,这在数据密集型运算的场景,能够优
化应用层和数据库层之间的数据交互,从而从整体上提升系统的效率。传统上,数据密集型运算包括计划、预测、模拟等,在HANA中将计划引擎植入计算引擎中,从而使得基于HANA的计划应用的性能得到极大提升。