HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面就了解一下数据是如何存放在HBase表中的
为了更好的理解HBase表的思路,先回顾一下关系数据库中表的处理方式
例如有一个用户表user_info,有字段:id、name、tel,表名和字段需要在建表时指定
create table user_info (
id 类型,
name 类型,
tel 类型
)
然后插入两条数据
insert into user_info values(...)
表结构
id | name | tel |
---|---|---|
1 | 小明 | 123 |
2 | 小王 | 456 |
后来字段不够用了,新用户需要记录地址,就要新增一个字段
id | name | tel | addr |
---|---|---|---|
1 | 小明 | 123 | |
2 | 小王 | 456 | |
以后再增加需求时,就继续新增字段,或者添加一个扩展表
上面的内容主要说明的是:
下面看一下HBase的处理方式
建表时要指定的是:表名、列族
建表语句
create 'user_info', 'base_info', 'ext_info'
意思是新建一个表,名称是user_info,包含两个列族base_info和ext_info
列族 是列的集合,一个列族中包含多个列
这时的表结构:
row key | base_info | ext_info |
---|---|---|
... | ... | ... |
row key 是行键,每一行的ID,这个字段是自动创建的,建表时不需要指定
插入一条用户数据:name为‘a’,tel为‘123’
插入语句
put 'user_info', 'row1', 'base_info:name', 'a'
put 'user_info', 'row1', 'base_info:tel', '123'
意思是向user_info表中行健为row1的base_info列族中添加一项数据 name:a,接着又添加一项数据tel:123
name和tel就是具体字段,属于base_info这个列族
这时的表结构:
row key | base_info | ext_info |
---|---|---|
row1 | name:a, tel:123 | |
再插入一条数据:name为‘b’,addr为‘beijing’
put 'user_info', 'row2', 'base_info:name', 'b'
put 'user_info', 'row2', 'ext_info:addr', 'bj'
这时的表结构:
row key | base_info | ext_info |
---|---|---|
row1 | name:a, tel:123 | |
row2 | name:b | addr:bj |
HBase表中还有一个重要概念:版本,每个字段的值都有版本信息(通过时间戳指定)
例如 base_info:name,每次修改时都会保留之前的值,就是说可以取到他的旧值
row key | base_info | ext_info |
---|---|---|
row1 | name:a, tel:123 | |
row2 | name:c(v2)[name:b(v1)] | addr:bj |
从上面建表、插入数据的过程可以看出 HBase 存储数据的特点了
原文来自:性能与架构
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。
IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。
结合权威身份认证的精准人脸风险查询服务,提升人脸应用及身份认证生态的安全性。人脸风险情报库,覆盖范围广、准确性高,数据权威可靠。
全国城市和站点空气质量查询,污染物浓度及空气质量分指数、空气质量指数、首要污染物及空气质量级别、健康指引及建议采取的措施等。
输入手机号和拦截等级,查看是否是风险号码