本文只涉及最基础的概念,做个记录
基础概念
Namespace
namespace
类似mysql
的database
,一个namespace
含有多个table
。
Table
Hbase
表包含许多的行(Row
)
Row
HBase
的一行包含一个row key
和一或多个其它列。HBase
中Row
会根据Row Key
按照字典序排序。Row Key
在表中会被作为索引。
Column
在HBase
中,一列由column family
和column qualifier
组成,以 cf:cq
形式展示。
Column Family (cf)
Column Family
包含若干Column
。例如列cf1:a
,cf1:b
,它们都属于cf1
。
Column Qualifier (cq)
cq
用来精确到某个列,cf
描述了列族,cf:cq
表示具体的一个列。
Cell
cell
由{row
, column
, version
} 组成,timestamp
用来表示version
。HBase
支持保留历史版本数据,可以根据version
查询数据。
在HBase
中,只有有数据的cell
会被存储,所以它和常见的RDBMS
不同,在mysql
中,即使某一行的某一列的数据为空,这一列还是存在于mysql
,只是它的值是空。
Timestamp
HBase
存储的每个值都带有时间戳,用来表示版本号。
基础的数据库操作
- Get; 返回一行数据;
- Put; 插入或更新,类似
upsert
操作; - Scans; 可以指定需要的列,获取多行数据;
- Delete;
HBase
的删除不会直接移除数据,而是对数据添加标签tombstones
(墓碑标签),在compactions
时,对于墓碑标签的数据,会对其进行清理。(感觉类似kafka tombstones message
)