分布式数据库HBase案例教程
上QQ阅读APP看书,第一时间看更新

1.2.4 为什么选择HBase

当开始学习一门技术的时候,总是习惯于将它们与已有的技术进行对比。当刚接触Python的时候,会发现它的简洁与效率;当刚接触PHP的时候,也会探寻它的优势在哪里。

那么HBase经常也会用来和常见的关系型数据库进行对比。

关系型数据库不擅长的地方有:大量数据的写入处理,读写性能比较差,尤其是海量数据的高效率读写;固定的表结构,灵活度稍欠;高并发读写需求,硬盘I/O是一个很大的瓶颈;当为有数据更新的表做索引或对表结构进行变更时,性能差等。比如Oracle、MySQL等关系型数据库基本存在上面的一些缺陷。

HBase作为一个NoSQL,不支持完整的事务性,而且仅仅支持基于RowKey的索引,在性能上不如memcached和Redis。但是在海量数据、持久化存储方面比内存类型的NoSQL强得多,作为文档型NoSQL在分布式存储上比MongoDB做切分和MapReduce分析也简单方便得多。这一切都源于HBase本身基于Hadoop,可以简单地通过增加廉价节点的方式进行扩展,对于数据本身就可以很好地进行水平切分,同时和HDFS、MapReduce、Spark等结合得很好。不仅可以方便地进行存储,同时还可以更加方便地对数据进行处理和运算,这才是HBase最核心的特性。这些都是常见的关系型数据库所无法比拟的,比其他常见的NoSQL也要强出不少。

当然,HBase并不能解决所有的问题,所以才会有那么多的NoSQL和SQL出现。

HBase典型的应用场景就是不断地插入新的信息。对于持续、大量的插入,可以达到每秒百万的吞吐量,而对于已有的数据修改的频率很小。