HBase漫谈 | HBase技术选型准则

栏目: 数据库 · 发布时间: 6年前

内容简介:NoSQL(Not only SQL)数据库,可以理解为区别于关系型数据库如mysql、oracle等的非关系型数据库。聊到NoSQL不得不提著名的CAP理论,全称 Consistency Available and Partition tolerance,即一致性、可用性与分区容错性,这是Eric Brewer教授提出的分布式系统设计理念,并给出了定论:任何分布式系统只能同时满足其中二点,无法做到三者兼顾。这可以说是NoSQL数据库的理论基石,至今NoSQL领域也称得上是百花齐放了,一直也没有哪一款NoS

聊一聊 NoSQL

NoSQL(Not only SQL)数据库,可以理解为区别于关系型数据库如 mysql 、oracle等的非关系型数据库。聊到NoSQL不得不提著名的CAP理论,全称 Consistency Available and Partition tolerance,即一致性、可用性与分区容错性,这是Eric Brewer教授提出的分布式系统设计理念,并给出了定论:任何分布式系统只能同时满足其中二点,无法做到三者兼顾。这可以说是NoSQL数据库的理论基石,至今NoSQL领域也称得上是百花齐放了,一直也没有哪一款NoSQL同时兼顾着这三点特性。

NoSQL必须要在一致性、可用性与分区容错性之间做出取舍,目前而言,几乎所有的NoSQL都是在保有分区容错性的基础上选择一致性或可用性,例如HBase就是牺牲了部分可用性换取了完全的一致性,与HBase类似的Cassandra则是牺牲了强一致性换来了可用性的保证。

NoSQL能做哪些事情、不能做哪些事情?NoSQL作为分布式系统的实现,海量数据永久性存储、非结构化数据存储、超大规模数据高效读写、超强水平扩展能力等这些特征让NoSQL得到了广泛应用。然而,事务支持、关联特性,甚至于 SQL 查询,这些却是NoSQL的短板,也决定了NoSQL尚且取代不了关系型数据库。

HBase漫谈 | HBase技术选型准则

HBase 简单介绍

HBase(Hadoop database)是一个分布式、可扩展、面向列的NoSQL数据库,本质上是一个Key-Value系统,底层存储基于HDFS,原生支持MapReduce计算框架,具有高吞吐、低延时的读写特点。

HBase 的主要特性

HBase包含很多特性,这里列举了HBase的一些关键特性:

  • 强一致性读写:HBase并不是最终一致性,而是强一致性的系统,这使得HBase非常适合做高速的聚合操作。

  • 自动sharding:HBase的表在水平方向上以region为单位分布式存储在各个节点上,当region达到一定大小时,就会自动split重新分布数据。

  • 自动故障转移:这是HBase高可用的体现,当某一个节点故障下线时,节点上的region也会下线并会自动转移到状态良好的节点上线。

  • 面向列的存储:HBase是面向列的存储系统,相同特征(列族相同)的数据会被尽量放到一起,这有利于提高数据读取的效率。

  • 无缝结合Hadoop:HBase被定义为Hadoop database,就是基于HDFS做的数据存储,同时原生的支持MapReduce计算引擎。

  • 非常友好的API操作:HBase提供了简单易用的Java API,并且提供了Thrift与REST的API供非 Java 环境使用。

  • Block Cache与Bloom Filter:查询优化方面HBase支持Block Cache与Bloom Filter,使得HBase能够对海量数据做高效查询。

什么时候使用 HBase

HBase作为一款NoSQL数据库,前面也提及了并不能解决所有问题。关于我们在实际生产过程中满足哪些条件的时候可以选择HBase作为底层存储,这里给出几点建议:

1、数据量规模非常庞大

一般而言,单表数据量如果只有百万级或者更少,不是非常建议使用HBase而应该考虑关系型数据库是否能够满足需求;单表数据量超过千万或者十亿百亿的时候,并且伴有较高并发,可以考虑使用HBase。这主要是充分利用分布式存储系统的优势,如果数据量比较小,单个节点就能有效存储的话则其他节点的资源就会存在浪费。

2、要求是实时的点查询

HBase是一个Key-Value数据库,默认对Rowkey即行键做了索引优化,所以即使数据量非常庞大,根据行键的查询效率依然会很高,这使得HBase非常适合根据行键做单条记录的查询。值得说明的是,允许根据行键的一部分做范围查询,这里涉及到Rowkey的设计问题,不再赘言。

3、能够容忍NoSQL短板

前面提及了NoSQL并不能解决所有问题,HBase也是一样,如果业务场景是需要事务支持、表与表的关联查询等,不建议使用HBase。HBase有它适合的业务场景,我们不能苛求它能够帮我们解决所有问题。

4、数据分析需求并不多

虽然说HBase是一个面向列的数据库,但它有别于真正的列式存储系统比如Parquet、Kudu等,再加上自身存储架构的设计,使得HBase并不擅长做数据分析,或者说数据分析是HBase的弱项,所以如果主要的业务需求就是为了做数据分析,比如做报表,那么不建议直接使用HBase。

如果能够满足上诉的几点,硬件条件也满足的情况下,强烈建议考虑使用HBase作为底层存储解决你的问题。

HBase 的使用场景

由于HBase丰富的特性,加上自身的海量数据存储能力与超大规模并发访问能力,使得HBase应用非常广泛。目前已经在金融、交通、医疗、车联网、IoT等众多领域有了最佳实践,涉及到订单/账单存储、用户画像、时空/时序数据、对象存储、Cube分析等各个使用场景。

更多的应用场景、最佳实践请关注公众号,持续讨论HBase相关话题。

喜欢本文 那就点个在看吧


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Designer's Idea Book, Vol. 2

The Web Designer's Idea Book, Vol. 2

Patrick McNeil / How / 2010-9-19 / USD 30.00

Web Design Inspiration at a Glance Volume 2 of The Web Designer's Idea Book includes more than 650 new websites arranged thematically, so you can easily find inspiration for your work. Auth......一起来看看 《The Web Designer's Idea Book, Vol. 2》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具