HBase 入门
本文只涉及最基础的概念,做个记录
基础概念
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)