CGFT《大数据技术原理与应用》中HBase与传统关系数据库的对比分析,今天小编带大家一起学习。

数据库从20世纪70年代发展到今天,已经是一种*成熟稳定的数据库管理系统,通常具备的功能包括面向磁盘的存储和索引结构、多线程访问、基于锁的同步访间机制、基于日志记录的恢复机制和事务机制等。

但是,随着Web2.0应用的不断发展,传统的关系数据库已经无法满足Web2.0的需求,无论在数据高并发方面,还是在高可扩展性和高可用性方面,传统的关系数据库都显得力不从心,关系数据库的关键特性——完善的事务机制和高效的查询机制,在eb2.0时代也成为“鸡肋”。包括HBase在内的非关系型数据库的出现,有效弥补了传统关系数据库的缺陷,在Web2.0应用中得到了大量使用。

CGFT

HBase与传统的关系数据库的区别主要体现在以下几个方面。

数据类型。关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串,用户可以把不同格式的结构化数据和非结构化数据都序列化成字符率,保存到HBase中,用户需要自己编写程序把字将半解析成不同的数据类型。

数据操作、关系数假库中包含了丰富的操作,如插入、删除、更新、查询等、其中会涉及复杂的多表连接,通常是借助于多个表之间的主外键关联来实现的。HBase操作则不存在复杂的表与表之间的关系、只有简单的辅入、查询、删除、清空等、因为HBase在设计上就避免了复杂的表和表之间的关系,通常只采用单表的主键查询,所以,它无法实现像关系数据库中那样的表和表之间的连接操作。

存储模式。关系数据库是基于行模式存储的,元组或行会被连续地存储在磁盘页中。在读取数据时、需要顺序扫描每个元组、然后、从中筛选出查询所需要的属性。如果每个元组只有少量属性的值对于查询是有用的、那么基于行模式存储就会浪费许多做做空间和内存管宽。

HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的,它的优点是:

可以降低10开销、支持大量并发用户查询、因为仅需要处理可以回答这些查询的列,而不需要处理与查询无关的大量数据行;同一个列族中的数据会被一起进行压缩,由于同一列族内的数据相似度较高,因此,可以获得较高的数据压缩比。

数据索引。关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能与关系数据库不同的是,HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有请问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来,由于HBase位于Hadoop框架之上,因此,可以使用Hadoop MapReduce来快速,高效地生成索引表。

数据维护。在关系数据库中,更新操作会用*的当前值去替换记录中原来的旧值,旧信被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留。

可伸缩性。关系数据库很难实现横向扩展,纵向扩展的空间电比较有限,相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展面开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。

但是,相对于关系数据库来说,HBase也有自身的局限性,如HBase不支持事务,因此,无法实现跨行的原子性。