HBase 表设计_4 | 学习笔记

简介: 快速学习 HBase 表设计_4

开发者学堂课程【HBase 入门教程HBase 表设计_4】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/397/detail/5084


HBase 表设计_4


内容介绍

一、组织架构

二、例子


一、组织架构

组织架构 部门-子部门

查询 顶级部门

查询 每个部门的所有子部门

部门 添加、删除子部门

部门 添加、删除


二、例子

1.dept

rowkey      dept 列簇         dept-cid 列簇

0|1_did     dept:name   名称  cid 代表子 id name 为子 id 名称

dept:pid    id dept-cid:cid1=name1

dept-cid:cid2=name2

dept-cid:cid3=name3

以部门 id rowkey ,两个列族,这个部门的基本信息,第二个列族,cid 表示部门 idname 表示部门名称。查询每个部门的子部门,首先第二个列族下边的所有列查询出来,查询顶级部门,如果在第一个列族下边 pid 是为空,它是顶级部门,如果每次要查询,把所有数据全进行变例,查到 pid 为空的,添加一个值的过滤,判断这个 pid 值是空值,过滤器在跑的时候,每一项进行一个筛选,最终查到这个顶级部分,但是这个效率是有点问题,在 rowkey 部门里加,用01标记顶级部门和非顶级部门。

0代表 顶级部门

1代表 非顶级部门

rowkey:按照顺序排序,查询效率更高

did_0|1

0 | 1_did  

所有顶级部门的前面一部分连续的数据,要查询,只要找到这一条,后边连续的数据,所有顶级部门一次性就查完了。如果放在后面,就需要把所有数据进行变例,可能这个部门 id 排在最后,但他是不是顶级部门,效率就低。在设计 HBase 表的时候,常用的业务,主要的业务,要查询的东西,可以设计到 rowkey 里,通过直接进行 rowkey 和对值进行过滤,设计到 rowkey 效率比较高。

2.一个表

rowkey ---------部门名    不是特别好

cf1:子部门1

子部门2

子部门3

组织架构

Dept_no        部门编号

Dept_name      部门名称

Dept_pno       上级部门编号

列族1       列族2

rowkey      cf1: name      cf2: pid

部门 id     部门名称       父部门 id

部门 id 作为列族,是需要修改的。父部门没有体现子部门,

rowkey   CF1               CF2               CF3

org_id   org_info:name     c_org_id1=level   p_org_id=level

org_info:level    c_org_id2=level

写了三个列族。Rowkey 需要改,第一个列族存放部门信息等等,第二个列族存放的子部门,第三个存放的是父部门,也没有体现优先级。不管在 CF2 还是 CF3 存放的都是部门的 id 作为 k level 是一个等级,修改一个下边所有等级都会发生变化,查询顶级部门的时候,也需要对 level 这个值进行过滤,效果也不是很好。

department

rowkey   

   CF1 

      CF2

 

department_ info

sub_ department

department_ id

department info : name

sub_ department:t1= department_ sub_ id1

su2_ department:t2= department_ sub_ id2

 


Department_sub

rowkey

CF1

CF2

 

Department_sub_info

department

Department_sub_id

Department_sub_info:name

Department:t1=department_id1

这种设计就变得很理想,任何部门都存在子部门,第一张表里有数据,子部门里也有,也不是很理想。

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7月前
|
机器学习/深度学习 分布式计算 Hadoop
一种HBase表数据迁移方法的优化
一种HBase表数据迁移方法的优化
96 0
|
7月前
|
SQL Java 分布式数据库
实现HBase表和RDB表的转化(附Java源码资源)
该文介绍了如何将数据从RDB转换为HBase表,主要涉及三个来源:RDB Table、Client API和Files。文章重点讲解了RDB到HBase的转换,通过批处理思想,利用RDB接口批量导出数据并转化为`List<Put>`,然后导入HBase。目录结构包括配置文件、RDB接口及实现类、HBase接口及实现类,以及一个通用转换器接口和实现。代码中,`RDBImpl`负责从RDB读取数据并构造`Put`对象,`HBaseImpl`则负责将`Put`写入HBase表。整个过程通过配置文件`transfer.properties`管理HBase和RDB的映射关系。
62 3
实现HBase表和RDB表的转化(附Java源码资源)
|
7月前
|
SQL 分布式计算 Hadoop
Hadoop学习笔记(HDP)-Part.16 安装HBase
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
148 1
Hadoop学习笔记(HDP)-Part.16 安装HBase
|
存储 前端开发 Cloud Native
基于 HBase 快速构架海量订单存储系统|学习笔记
快速学习基于 HBase 快速构架海量订单存储系统
基于 HBase 快速构架海量订单存储系统|学习笔记
|
存储 Java Shell
分布式数据库HBase的常用操作的基本Shell命令的表操作
HBase是一个分布式数据库系统,支持高性能、可伸缩、实时的数据存储和处理。在HBase中,我们可以使用Shell命令来进行常用的操作,如创建表、插入数据、查询数据、更新数据等。本文将介绍关于分布式数据库HBase的常用操作基本Shell命令的表操作。
266 0
|
存储 搜索推荐 Java
如何基于 HBase 构建图片、视频数据的统一存储检索方案|学习笔记
快速学习如何基于 HBase 构建图片、视频数据的统一存储检索方案
如何基于 HBase 构建图片、视频数据的统一存储检索方案|学习笔记
|
SQL 缓存 分布式计算
HBase查询一张表的数据条数的方法
HBase查询一张表的数据条数的方法
1028 0
HBase查询一张表的数据条数的方法
|
分布式数据库 索引 Hbase
《HBase应用与发展之HBase RowKey与索引设计》电子版地址
HBase应用与发展之HBase RowKey与索引设计
125 0
《HBase应用与发展之HBase RowKey与索引设计》电子版地址
|
分布式数据库 Hbase
|
分布式数据库 Hbase