HBase学习笔记——逻辑视图

来源:互联网 发布:华云大数据 编辑:程序博客网 时间:2024/05/16 06:18

本文章将主要讲解HBase的逻辑视图,首先给出逻辑视图的一个例子,之后进行详细的介绍。
HBase以表的形式存储数据,表由行和列组成,列划分为若干个列族,每个列族可以有多个列。
HBase的逻辑视图

一、行健(row key)

与NoSQL数据库一样,行健是用来检索记录的主键,行健就像RDBMS中的主键(主键可有可无,行健天然自带)。

访问hbase table中的行,只有三种方式:1、通过单个row key访问。2、通过row key的range。3、全表扫描。

行键可以是任意字符串(最大长度是 64KB,实际应用中长度一般为10-100bytes),在hbase内部,row key保存为字节数组。

存储时,数据按照Row key的字典序(byte order)排序存储,而不管存入的先后顺序。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起(位置相关性)。要保持整形的自然序,行键必须用0作左填充。

注意:字典序对int排序的结果是1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,…,9,91,92,93,94,95,96,97,98,99。

行的一次读写是原子操作 (不论一次读写多少列),这个设计决策能够使用户很容易的理解程序在对同一个行进行并发更新操作时的行为。

二、列族(row family)

列族是表结构的一部分(而列不是),必须在使用表之前定义。HBase表中的每个列,都归属于某个列族,列名都以列族作为前缀,列是在插入记录时动态增加的。例如courses:history,courses:math,都属于courses 这个列族。

访问控制、磁盘和内存的使用统计都是在列族层 面进行的,每个列族单独存在一个文件中,所以可以将经常访问的列族存放在一个列族。实际应用中,列族上的控制权限能帮助我们管理不同类型的应用:我们允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列 族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。

三、时间戳(time stamp)

HBase中的每个cell都保存着同一份数据的多个版本,版本就是通过时间戳来区分。时间戳的类型是64位整型。时间戳的两种生成方式:1、时间戳可以由HBase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。2、时间戳也可以由显式地赋值。

如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。为了避免数据存在过多版本造成的的管理(包括存贮和索引)负担,HBase提供了两种数据版本回收方式:1、保存数据的最后n个版本。2、保存最近一段时间内的版本(比如最近七天)。

四、cell

HBase中通过row和columns确定的为一个存贮单元称为cell,每个 cell都保存着同一份数据的多个版本。由{row key, column(= +

cell中的数据是没有类型的,全部是字节码形式存贮,省去了很多关于类型的麻烦。获取cell中的数据时,如果没有指定时间戳或者版本,默认取得最新的版本。

0 0
原创粉丝点击