12.5 HBase与RDBMS
HBase就是这样一个基于列模式的映射数据库,它只能表示很简单的键-数据的映射关系,这大大简化了传统的关系数据库。与关系数据库相比,它有如下特点:
数据类型:HBase只有简单的字符串类型,所有的类型都是交由用户自己处理的,它只保存字符串。而关系数据库有丰富的类型选择和存储方式。
数据操作:HBase只有很简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系,所以不能、也没有必要实现表和表之间的关联等操作。而传统的关系数据通常有各种各样的函数、连接操作。
存储模式:HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。传统的关系数据库是基于表格结构和行模式保存的。
数据维护:确切地说,HBase的更新操作不应该叫做更新,虽然一个主键或列对应新的版本,但它的旧版本仍然会保留,所以它实际上是插入了新的数据,而不是传统关系数据库里面的替换修改。
可伸缩性:HBases这类分布式数据库就是为了这个目的而开发出来的,所以它能够轻松地增加或减少(在硬件错误的时候)硬件数量,并且对错误的兼容性比较高。而传统的关系数据库通常需要增加中间层才能实现类似的功能。
当前的关系数据库基本都是从20世纪70年代发展而来的,它们都具有ACID特性,并且拥有丰富的SQL语言,除此之外它们基本都有以下的特点:面向磁盘存储、带有索引结构、多线程访问、基于锁的同步访问机制、基于log记录的恢复机制等。
而Bigtable和HBase这些基于列模式的分布式数据库,更适应海量存储和互联网应用的需求,灵活的分布式架构可以使其利用廉价的硬件设备组建一个大的数据仓库。互联网应用是以字符为基础的,而Bigtable和HBase就是针对这些应用而开发出来的数据库。
由于HBase具有时间戳特性,所以它生来就特别适合开发wiki、archiveorg之类的服务,并且它原本就是作为搜索引擎的一部分开发出来的。