HBase的数据结构(HTable)

HBase的数据结构

     CSDN这个哥们共享的博客讲得很清晰并且附案例,站在巨人肩膀上,也可以为自己节约很多时间,同时自己也得去实践,结合理解自己再进行分析得出自己认识,学习效率才会提高,非常感谢共享:

               http://blog.csdn.net/lifuxiangcaohui/article/details/39894265

               http://blog.csdn.net/cnbird2008/article/details/9151585

 

Hbase适合场景

     HBase是松散型面向列的key/value存储模式,数据存储访问都在列族(Column Family),对于空的列并不占用存储空间,列名支持动态增减,非常稀疏的数据结构,提高读写并发。缺点是不支持条件查询,只支持row key来查询,所以row key的设计需要根据业务、存储排序性提高性能

 

与传统RDBMS数据对比

    1.RDMBS固定列,null浪费大量存储空间;

    2.关联关系比较复杂;

 

应用场景

    当数据量越来越大,RDBMS数据库撑不住了,就出现了读写分离策略,通过一个Master专门负责写操作,多个Slave负责读操作,服务器成本倍增。随着压力增加,Master撑不住了,这时就要分库了,把关联不大的数据分开部署,一些join查询不能用了,需要借助中间层。随着数据量的进一步增加,一个表的记录越来越大,查询就变得很慢,于是又得搞分表,比如按ID取模分成多个表以减少单个表的记录数。经历过这些事的人都知道过程是多么的折腾。采用HBase就简单了,只需要加机器即可,HBase会自动水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce)。

 

摘录:HBase在产品中还包含了Jetty,在HBase启动时采用嵌入式的方式来启动Jetty,因此可以通过web界面对HBase进行管理和查看当前运行的一些状态,非常轻巧。为什么采用HBase?HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.所谓非结构化数据存储就是说HBase是基于列的而不是基于行的模式,这样方面读写你的大数据内容。

HBase是介于Map Entry(key & value)和DB Row之间的一种数据存储方式。就点有点类似于现在流行的Memcache,但不仅仅是简单的一个key对应一个 value,你很可能需要存储多个属性的数据结构,但没有传统数据库表中那么多的关联关系,这就是所谓的松散数据。
简单来说,你在HBase中的表创建的可以看做是一张很大的表,而这个表的属性可以根据需求去动态增加,在HBase中没有表与表之间关联查询。你只需要 告诉你的数据存储到Hbase的那个column families 就可以了,不需要指定它的具体类型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事务此类的功 能。
Apache HBase 和Google Bigtable 有非常相似的地方,一个数据行拥有一个可选择的键和任意数量的列。表是疏松的存储的,因此用户可以给行定义各种不同的列,对于这样的功能在大项目中非常实用,可以简化设计和升级的成本。

你可能感兴趣的:(hbase)