HANA,英文翻译是High-PerformanceAnalytic Appliance,即高性能分析分析设备。
对于HANA这个内存式数据库虽然已经发布五年左右,但是IT界对于HANA数据库的了解知之间甚少,甚至很多人没有听过。想必大家都熟知的数据库如MySQL和Oracle,HANA和这两种数据库一样都是数据关系型数据库。
因为大家想必都对mysql比较熟悉,我在这里就拿mysql为例,以mysql为代表对比着讲解一下HANA。
想必大家都知道现今数据库分为两种,关系型数据库和非关系型数据库。常见的关系型数据库就是Mysql、Oracle等,非关系型数据库如HBase、Redis。其中HBase和传统的关系型数据库不同之处并不仅仅是是否为关系型数据库,还有一点和关系型数据库例如MySQL不一样,那就是HBase是列式存储,而MySQL是行式存储。
那么现在大家就有疑问了,为什么要用列式存储?有什么优势相比较行式存储?现在我们来看一下行式存储和列式存储不同之处。如图所示为行式存储和列式存储在内存地址实际
的存储情况,如图可以看出行式存储是以行为单位在数据库里面存储,而列式存储是以列为单位进行存储的。当我们向数据库一行行插数据的时候行式存储很明显会有优势,而当我们一行行从数据库里面读数据的时候也是行式存储占优势。假如当我们并不想取出一个完整行的时候,假如select一列那么列式存储就占优势,而且在我们作聚合运算的时候也是以列为单位的。在现在的大型企业里面,曾经有人统计过数据库里面的列将近35%是用不到的,所以当我们进行数据分析的时候用行式存储效率比之列式存储低。
为什么列式存储在数据分析方面效率较高?原因之一是在进行查询的时候不必要的列可以不查询出来,减少了数据的传输;原因之二是既然是数据分析那么必然要进行聚合操作,如max,min等,而进行聚合操作时在列上进行的,列式存储是以列为单位存储的,所以在进行数据分析时效率较行式存储高。