HBase数据结构(读书笔记 )


背景:


     最近在做一些跟大数据相关的东西,涉及到数据的存储和分析,考虑各个方面,选择使用HBase进行存储,使用原生Java API进行数据分析,之后会陆续写一系列来说明最近做的东西,给像我这样未曾涉及过这个领域的人一点儿idea。


引言:

     HBase以表的方式组织数据源,这一点跟关系型数据库时一样的,在我们的application里面,通过API/Thrift、或者各种SQL引擎,将数据存入库里面或者进行查询;Hbase的表由行(Row)和列(Column)共同构成,与关系型数据库不同的是,HBase有一个列族(Column Family)的概念,它将一列或者多列组织在一起,HBase的列必须属于某一个列族。


    行和列的交叉点称为单元格(Cell),单元格是版本化的。单元格的内容也就是列的值是不可分割的字节数组,以二进制的形式存储。HBase没有数据类型,任何列值都被转换成字符数组进行存储。HBase表中的行是通过行键(Rowkey)来进行区分的,行健也是用来唯一确定一行的标识,不同的行健嗲表不同的行,行健也是一段字节数组,不论是字符串还是数字,最终都会被转换成自己数组进行存储。HBase表中的行是按照RowKey排序的,排序方式采用字典顺序,所有表中的行都必须有RowKey。


逻辑模型


     HBase是一个类似GoogleBigTable的开源分布式数据库,它最基本的单位是列,一列或者多列组成行,行有行健,每一行的行健都是唯一的,相同的行健的插入操作被认为是对同一行的操作,也就是说如果做了两次写入操作,而行健是同一个,那么后面的操作可以认为是对改行的某些列的更新操作。

    列名是右列族前缀和修饰符连接而成,分隔符是应为冒号。

物理模型

     
    在逻辑模型中,表可以被看成一个稀疏的行的集合。但是在物理上,表是按照列分开存储的。HBase的列是按照列族分组的,HFile是面向列的,存放行的不同的列的物理文件,一个列族的数据存放在多个HFile中,最重要的是一个列族的数据会被同一个Region管理,物理上存放在一起。Region是管理HFile的一种机制。



     




 


    



上一篇:ABP架构学习系列一 整体项目结构及目录


下一篇:.Net IOC框架入门之二 CastleWindsor