1. 简介
HBase是大数据组件中No-SQL数据库的典型代表,提供了高可靠、可伸缩、高性能、面向列的分布式存储。HBase逻辑上引入了Row-ColumnFamily-Qualifier(限定符)-Value-TimeStamp(Version)的概念,Value在数据库中以Byte[]数组存在,且Vaule允许为空。与关系型数据库相比,HBase相当于一个巨大的松散嵌套Map,因此对HBase进行横向扩展是极其方便的,可在廉价物理机上搭建并根据数据量的增多而横向扩展,为海量数据提供高性能的可靠存储。
HBase的数据写入首先将数据缓存在内存中,达到阈值后再顺序刷写磁盘的方式(所有的Write/Update均为Append磁盘文件的方式),避免了随机写入造成的性能低下,同时HBase以HDFS为最终的存储层,利用HDFS的特性保证了数据的容灾性。HBase的数据读取提供了服务端缓存、BloomFilter(布隆过滤)等机制,保证了随机读取的性能。
2. HBase与RDBMS的对比
HBase作为NoSql数据库,采用分布式存储在读写速度方面比RDBMS数据库快,且横向扩展能力强,当存储空间和读写速度遇到瓶颈时,通过增添机器横向扩建,存储空间和读写速度都能够得到很大提升。同时HBase采用列式存储,且结构松散,允许某列为空,可以存储半结构化数据。但这些都是有代价的,是以牺牲事务为代价的,且RDBMS支持多种数据类型,可以对任意列建立索引,支持事务,支持SQL语言,可以在多个表之间进行Join等操作,只需要一条SQL语句即可,同时支持表锁、页锁与行锁等。与之相比,HBase仅支持字节数组数据结构,仅支持RowKey索引,不支持多表Join,原生不支持SQL语言,需要通过外部插件才能实现对SQL语言的支持。
因此在选择时,需要根据具体的业务需要,从多方面综合考虑来选取最终的存储方案。
more >>