`
flyingdutchman
  • 浏览: 358397 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《Hbase权威指南》深入学习hbase:表,列族,列标识,版本和cell

阅读更多
         HBase是面向列的分布式的数据库,和传统的关系型数据库有很大的不同:物理模型和逻辑模型。这里我们要首先讲一下HBase数据库相关的区别于关系型数据库的几个基本概念:
         表:HBase将数据组织到自己的HTable表中,这个表是根据列族(colomn family)在物理上保存数据的,每个列族都有自己的文件夹和storefiles,不像关系型数据库那样将一个表保存成一个文件,表明也是文件系统路径的一部分。
         行:HBase中的行是逻辑上的行,物理上模型上行是按列族(colomn family)分别存取的。HBase有Rowkey的概念,rowkwy没有数据类型,总是被认为是byte[],它相当于关系型数据表中的主键。另外Rowkey设计的好坏对读取数据有很长大的关系,可以被认为是设计HBase表是最重要的一个环节。而系型数据表中的行是真正意义上的行,逻辑上和物理上都是按行组织数据。
         列族:HBase表中的行是按一个叫colomn family的列族分组的,也是在磁盘上也是按列族存储数据的,由于这个原因,故当定义一个hbase表时,除了定义表名外,还必须定义列族。传统数据库没有列族的概念。
         列标识:一个列族中的数据是通过一个叫colomn qualifier的具体描述每一列。列标识在标定一种可以动态定义,既可以在表定义时定义,也可以在保存数据时定义。而系型数据库的表没有此概念。
         版本:HBase中的数据有版本的概念,每次生成或修改数据时都保存一个版本信息——这个版本数据就是一个时间戳,可以再定义表时动态设置保存行的版本数量,默认版本数为1,同一行的不同版本的数据是按时间戳倒叙排列的,而其他数据如rowkey和列标识是按字典顺序排列的,这也是读数据操作的一种优化手段。对于某一行,当保存的行的版本数大于设置的值后,最老的版本的数据行就会在执行Major compaction时被删除掉。版本数据是默认添加的,其值时保存数据时的时间戳,long型(长整型)。而系型数据库的表没有此概念。
          Cell:在HBase表中,是由rowkey + (colomn family:colomn qualifier) + version来标识一个cell,用户保存的具体数据是保存在这个cell中的,它的值时byte[]类型的,需要在客户端将之改为需要的类型。

            table、row、rowkey、colomn family、colomn qualifier、version(timestamp)和cell示意图
           对于上图可以看出:
           rowkey ->jacky20130429  jacky20130430
           comlom family -> info events
           version ->t3 t6 t9等
           colomn qualifier -> email sex address type name
          对于表的2个列族info和events,会被分别保存到磁盘上。
          由于【jacky20130429,info,email,t9】 ------> jacky@163.com,故HBase可以被看做是key-value的数据库。另外,HBase也可以被看做有排序的Map的Map:
          SortedMap<
              Rowkey,List<
                  SortedMap<
                      Colomn,List<
                          value,timestamp
                      >
                  >
              >
           >

第一层的SortedMap代表HBase的HTable,包括一个colomn families的集合,每个列族包括又一层的SortedMap,这层的SortedMap里包括列和相关联的数据的集合。
          HBase表中的行是有原子性的,但是一行的不同版本可能分布在不同的storefile文件中,过期失效的数据只能在Major Compaction操作时删除。

        
  • 大小: 39.4 KB
分享到:
评论
1 楼 坏小四 2014-10-14  

相关推荐

    Hbase权威指南(HBase: The Definitive Guide)

    通过上述内容可以看出,《HBase权威指南》全面而深入地介绍了HBase的相关知识和技术要点,无论是对于初次接触HBase的新手还是想要深入了解其内部机制的资深开发者来说,都是一本不可多得的好书。该书不仅详细解释了...

    HBase权威指南_Hadoop权威指南_pdf_

    《HBase权威指南》是Hadoop生态中关于分布式列式数据库HBase的重要参考资料,它深入浅出地介绍了如何利用HBase构建大规模数据存储系统。这本书与《Hadoop权威指南》一起,构成了理解大数据处理和存储的关键知识体系...

    hbase权威指南源代码下载

    每个单元格由行键、列族、列和时间戳唯一标识,可以有多个版本,以追踪数据的历史变化。 HBase的架构基于Bigtable的设计,主要组件包括Master服务器、RegionServer和Zookeeper。Master负责表和Region的管理,包括...

    hbase权威指南源码

    《HBase权威指南》是一本深入探讨Apache HBase这一分布式列式数据库的著作,源码则是作者为了辅助读者理解书中理论知识而提供的实践材料。HBase是构建在Hadoop文件系统(HDFS)之上的开源数据库,专为处理大规模数据...

    hbase权威指南中文完整版pdf

    hbase权威指南中文完整版pdf 12章+6附录

    hbase权威指南 配套源码

    《HBase权威指南》是一本深入探讨分布式列式数据库HBase的专业书籍,其配套源码提供了书中所提及的示例代码和实践案例,方便读者更好地理解和应用HBase。以下将详细解析HBase的相关知识点。 HBase是建立在Apache ...

    HBase权威指南中文版

    3. **数据模型**:HBase的数据模型基于行、列族、列和时间戳。每行由行键(Row Key)唯一标识,列族是数据的逻辑组,列是具体的数据项,时间戳用于存储同一单元格内的多版本数据。 4. **读写流程**:读取操作首先...

    Hbase权威指南高清中文版本.pdf

    HBase的表设计策略是学习的重点之一,书中的内容可能涵盖如何选择合适的行键和列族,以及如何利用时间戳来管理版本化数据。此外,还会有关于数据分布和负载均衡的策略,以确保数据的均匀分布和系统性能。 监控和...

    hbase权威指南.源代码

    《HBase权威指南》是一本深入探讨分布式大数据存储系统HBase的专业书籍,其源代码的提供为读者提供了更直观的学习材料。HBase是基于Apache Hadoop的非关系型数据库(NoSQL),它在大规模数据存储方面表现卓越,尤其...

    Hbase权威指南-完整高清版

    《HBase权威指南》是一本深入探讨分布式大数据存储系统HBase的专业书籍,旨在为读者提供全面、详尽的HBase知识。这本书涵盖了从基础概念到高级应用,包括HBase的架构设计、数据模型、表设计策略、性能优化、监控与...

    HBase权威指南中文版.pdf

    带有详细目录的 HBase权威指南中文版.pdf

    HBase权威指南

    《hbase权威指南》探讨了如何通过使用与hbase高度集成的hadoop将hbase的可伸缩性变得简单;把大型数据集分布到相对廉价的商业服务器集群中;使用本地java客户端,或者通过提供了rest、avro和thrift应用编程接口的...

    《HBase权威指南》示例代码

    《HBase权威指南》是大数据领域的一本经典著作,它深入浅出地介绍了HBase这一分布式列存储系统。HBase是构建在Hadoop生态系统之上的,用于处理大规模数据的NoSQL数据库,尤其适合实时读写操作。这本书的示例代码提供...

    HBase权威指南 中文版

    HBase权威指南中文版

    HBase权威指南中文版+官方文档

    ### HBase权威指南知识点梳理 #### 一、HBase简介与文档版本说明 - **文档来源及版权**:本文档为HBase官方文档中文版,版权所有归2012年Apache Software Foundation所有。 - **文档版本历史**:修订版本0.95-...

    HBase权威指南 带目录 中文版-高清版PDF

    HBase基于Google的Bigtable论文设计,采用列族(Column Family)存储模型,支持动态列和时间戳,这使得它在处理稀疏数据时尤为高效。书中详细阐述了这些特性,以及如何根据业务需求进行表设计。 接着,书中深入讨论...

Global site tag (gtag.js) - Google Analytics