三、 数据模型概念

1 逻辑模型 
HBase 中最基本的单位是列,一列或者多列构成了行,行有行键(Rowkey),并且是唯一的。
HBase 中的一个表有若干行,每行有很多列,列中的值有多个版本,每个版本的值称为一个单元格,每个单元存储的是不同时刻该列的值。
 
HBase 可以理解为 Map 这种结构的无限嵌套版本。
 
 
2 物理模型
 
虽然在逻辑模型中,表可以被看成一个稀疏的行的集合。但在物理上,表示按列族分开存储的。
 
HBase 的列是按列族分组的,HFile是面向列的,存放行的不同列的物理文件,一个列族的数据存放在多个 HFile 中,最重要的是一个列族的数据会被同一个Regioin管理,物理上存放在一起。
 
Region 是管理 HFile 的一种机制。
 
HBase 的表被设计成可以不禁用表而随时加入新的列,因此可以将新列直接加入一个列族而无需声明。

 
 
 
3 数据模型的重要概念
 
表 
        在Hbase中数据以表的形式存储。表名作为HDFS存储路径的一部分来使用,因此必须要符合文件名规范,所以构成表名的字符是有限制的。可以直接查看底层存储系统,在HDFS中可以看到每个表的表名都作为独立的目录结构,在某些情况下,用户可能需要查看这部分信息。
因为一个列族将会单独产生一个HFile, 所以多列族其实是不可取的。  因为每次存/删数据时候  需要刷新两个HFile  远不如将列族定义在不同的表中。 尽可能靠相关联的列来扩大HBase表中的列。展现其性能。因此HBase中的表远远少于RDBMS的表。
 
    HBase创建表只需要指定 表名 和 至少一个列族列族影响标的物理存储结构, 创建表后列族还可以更改,但是比较麻烦。 
HBase的表没有列定义,没有类型,这就是 HBase 被称为无模式数据库的原因。
    访问 HBase 不需要用户名和密码,没有 Schema将hbase-site.xml 配置文件复制一份到自己的工程中,HBaseAPI会读取配置文件完成对 HBase 的连接。 创建连接是一项非常消耗资源的工作,HBase为我们提供一个连接池,可以更好的管理资源重用。
 
 
行键
        行键,即 Rowkey。 行键是按字典排序由低到高存储在表中的,以一个空的数组来标识表空间的起始或结尾。 
行键排序规则如下图, 数据按照二进制字节从左至右逐一对比形成最终的次序。
 
 
        在 HBase 中行键是唯一的索引,不过在新版本的 HBase 中考虑了对辅助索引的支持。 
        为了高效检索数据,应该仔细设计 Rowkey 以获得最高的查询性能: 首先 Rowkey 被冗余存储,所以长度不宜过长,过长的 Rowkey 将会占用大量的空间同事会降低检索效率;其次 Rowkey 应该是分布均匀,这样不会产生热点现象最后是 Rowkey 唯一原则,必须在设计上保证其唯一性
 
 列族
    HBase 中的列族是一些列的集合。一个列族成员都有相同的 前缀 : 限定符 组成。  前缀(列族名必须由可打印的字符, 限定符则可以乱搞。可以由任意字节数组组成。
    修改列族时候需要先停用表。应该讲经常一起查询的列放在一个列族中,合理划分列族将减少查询时加载到缓存的数据。
 
单元格
    HBase 中的单元格由行键、列族、列、时间戳唯一确定单元格的内容是不可分割的字节数组每个单元格都保存着一份数据的多个版本,不同时间版本的数据按照时间倒序排序,最新时间的数据排在最前面,时间戳是 64 位的整数, 可以由客户端在写入数据时赋值, 也可以由 RegionServer 自动赋值。
 
 
 
 
                                                                                                                                                                                rocky_24
 
 
 
 
 
 
 
 
 
 





posted @ 2015-08-27 11:03  rocky_24  阅读(497)  评论(0编辑  收藏  举报
希望祖国繁荣,富强! God has given me a gift. Only one. I am the most complete fighter in the world. My whole life, I have trained. I must prove I am worthy of someting. rocky_24