name space
HBase命名空间 namespace 是与关系数据库系统中的数据库
类似的表的逻辑分组。为即将出现的多租户相关功能奠定了基础:
- 配额管理(Quota Management)(HBASE-8410)
限制命名空间可占用的资源量(即区域,表)。 - 命名空间安全管理(Namespace Security Administration)(HBASE-9206)- 为租户提供另一级别的安全管理。
- 区域服务器组(Region server groups)(HBASE-6721)命名空间/表可以固定在 RegionServers 的子集上,从而保证粗略的隔离级别
命名空间管理
<table namespace>:<table qualifier>
示例:
#Create a namespace
create_namespace 'my_ns'
#create my_table in my_ns namespace
create 'my_ns:my_table', 'fam'
#drop namespace
drop_namespace 'my_ns'
#alter namespace
alter_namespace 'my_ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
在 HBase 中有两个预定义的特殊命名空间:
hbase:系统命名空间,用于包含 HBase 内部表
default:没有显式指定命名空间的表将自动落入此命名空间
示例:
#namespace=foo and table qualifier=bar
create 'foo:bar', 'fam'
#namespace=default and table qualifier=bar
create 'bar', 'fam'
Region
表的切片(高表的时候横向切分),类似关系型数据库表的概念。不同的是,hbase定义表的时候只需要定义列族即可,不需要声明具体列。这意味hbase写入数据时,字段可以时动态、按需指定的。因此,和关系型数据库相比,hbase能轻松应对字段变更的场景。
Row
HBase 表中的每行数据都由一个 RowKey 和多个 Column(列)
组成,数据是按照 RowKey的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要。
Column
HBase 中的每个列都由 Column Family(列族)和 Column Qualifier(列限定符)进行限
定,例如 info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。
Time Stamp
用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会
自动为其加上该字段,其值为写入 HBase 的时间。
Cell
由{rowkey, column Family:column Qualifier, time Stamp}
(rowkey, column Family:column Qualifier数据多个)
加上time Stamp可唯一确定的单元
。cell 中的数
据是没有类型的,全部是字节码
形式存贮。提供了工具类进行数据类型转化,存储时转化,取时转化。