上QQ阅读APP看书,第一时间看更新
1.3 为什么要用HBase
HBase的存储是基于Hadoop的。Hadoop是这些年崛起的拥有着高性能,高稳定,可管理的大数据应用平台。Hadoop已经快要变为大数据的代名词了,基于Hadoop衍生出了大量优秀的开源项目。
Hadoop实现了一个分布式文件系统(HDFS)。HDFS有高容错性的特点,被设计用来部署在低廉的硬件上,而且它提供高吞吐量以访问应用程序的数据,适合那些有着超大数据集的应用程序。基于Hadoop意味着HBase与生俱来的超强的扩展性和吞吐量。
HBase采用的是Key/Value的存储方式,这意味着,即使随着数据量增大,也几乎不会导致查询的性能下降。HBase又是一个列式数据库(对比于传统的行式数据库而言),当你的表字段很多的时候,你甚至可以把其中几个字段放在集群的一部分机器上,而另外几个字段放到另外一部分机器上,充分分散了负载压力。然而,如此复杂的存储结构和分布式的存储方式带来的代价就是:哪怕只是存储少量数据,它也不会很快。所以我常常跟人说:
HBase并不快,只是当数据量很大的时候它慢的不明显
凡事都不可能只有优点而没有缺点。数据分析是HBase的弱项,因为对于HBase乃至整个NoSQL生态圈来说,基本上都是不支持表关联的。当你想实现group by或者order by的时候,你会发现,你需要写很多的代码来实现MapReduce。
因此,请不要盲目地使用HBase。
当你的情况大体上符合以下任意一种的时候:
- 主要需求是数据分析,比如做报表。
- 单表数据量不超过千万。
请不要使用HBase,使用MySQL或者Oracle之类的产品可以让你的脑细胞免受折磨。
当你的情况是:
- 单表数据量超千万,而且并发还挺高。
- 数据分析需求较弱,或者不需要那么灵活或者实时。
请使用HBase,它不会让你失望的。