当你需要对你的大量数据进行随机近实时读写时使用Hbase。HBase的目标是在商用硬件集群上管理非常大的表,数十亿行X数百亿列。HBase是一个模仿Gootable’s Bigtable的,开源的、分布式的、版本化的非关系型数据库。Google’s Bigtable是一个由Chang等人创建的一个结构化的分布式存储系统。正如Bigtable利用谷歌的分布式文件存储系统,Apache HBase 在Hadoop和HDFS上提供类似Bigtable的功能。
1.稀疏数据:最适合使用Hbase存储的数据是非常稀疏的数据(非结构化或者半结构化的数据)。因为Hbase是column-oriented列导向的存储机制。在列导向的存储机制下对于Null值得存储是不占用任何空间的。比如,如果某个表UserTable有10列,但在存储时只有一列有数据,那么其他空值的9列是不占用存储空间的(普通的数据库MySql是如何占用存储空间的呢?)。2.无类型:Hbase适合存储非结构化的稀疏数据的另一原因是他对列集合columnfamilies处理机制。打个比方,ruby和python这样的动态语言和c++、java类的编译语言有什么不同?对于我来说,最显然的不同就是你不需要为变量预先指定一个类型。Ok,现在Hbase为未来的DBA也带来了这个激动人心的特性,你只需要告诉你的数据存储到Hbase的那个columnfamilies就可以了,不需要指定它的具体类型:char,varchar,int,tinyint,text等等。3.Hbase还有很多特性,比如不支持join查询,但你存储时可以用:parent-childtuple的方式来变相解决。