HBase 表设计_7 | 学习笔记

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

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

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


HBase 表设计_7


一、微博表

微博表

粉丝关注用户表

rowkey cf1(存放关注列表) cf2(存放粉丝列表)

uid cf1:uid=uname cf2:uid=uname

微博表

rowkey cf1

uid_(long.max-time) cf1:content=

微博内容      

如果想要找到关注过的好友发送过的微博需要做以下步骤:

找到自己 id,找到关注的好友列表,找到所有的微博,找到之后

此时时间不是一个降序:

每一个用户发布的微博,肯定实现一个降序,把这些全部用户的微博放在一起,就不一定是个降序了,所以此时查看首页,单纯靠着两张表是无法解决的,需要再加一张表,这张表叫做收微博表,如下:

收微博表

rowkey cf1

uid cf1:id=uid_(long.max-time) version=1000

rowkey 查看首页的时候,直接查询这张表,可以直接找到首页里面所有的关注的好友发布的微博,

uid_(long.max-time),cf1

里放所有的微博表 id,查询首页的时候,数据在 HBase 里连续存储的,数据本身按照降序的方式排序的,找到对应的微博表,把信息加载出来,这样查看首页的时候,所查看的微博就是降序的方式。

假如 A 用户发布了一些微博,B 用户也发布了一些微博,如果你只关注过 A B,那么在做查询的时候,把 A B 所有的微博进行降序。在做插入的时候,假如A发布一条微博,微博表里添加一条数据,收微博里也添加一条数据,发布微博的时候插入两条数据,收微博的也添加两条数据。

B 发布一条微博,微博表添加一条,收微博表也添加一条。后面不管AB怎么添加,收微博表里发微博的顺序添加了多个数据,数据在 HBase 里存储的时候,都是降序。

在做查询的时候,降序是所有发的微博的整体降序,而不是每一个用户的降序。

之所以将表格分开的原因是:这样操作既可以查看首页,又可以查看自己发布哪些微博,当查看每一个用户,可以通过查询 uid_wid 来做。

设计表的时候降序的方式有两种方式:一种通过版本的方式,另一种是通过时间的方式。

发布微博,在微博表里添加数据,把用户 id,时间最小值,最大值减去之后,然后再把微博内容添加到微博表里,具体发多少条微博,对应的就有多少行数据,按照发布时间做一个降序的排序,发布微博之后有很多粉丝,另起一个线程,根据用户 id 查看粉丝列表,每一个粉丝列表,可以拿到用户 id,找到用户 id 对应的收微博表,添加一个数据存储,id 这个是微博 id,值存刚刚那个用户发布的微博 id。可以单独开一个线程来做,并不影响主业务逻辑,点击提交,就完成了。

后台再开一条线程,把所有粉丝列表里面每一个粉丝,关注的好友里发微博都添加过来了,当粉丝登录之后根据用户id 找到数据,数据代表关注的好友发过哪些微博,这些微博通过版本做了一个降序,查看关注的好友发布过的所有的微博,时间是一个降序的效果,查看首页功能完成了,

查看自己发布的微博,首先知道自己的用户 id,这个微博表来存储数据,发多少行就有多少行数据,加上前缀的过滤,根据 rowkey 拿到跟 uid 相同的,在 HBase 相同的一段连续的存储空间。把这组数据拿出来,发布过的所有微博,uid_(long.max-time) 最大值减去最小值实现降序,所以在查看自己发布微博的时候,拿到列表也是一个降序的,把业务满足了。

相关实践学习
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
相关文章
|
8月前
|
机器学习/深度学习 分布式计算 Hadoop
一种HBase表数据迁移方法的优化
一种HBase表数据迁移方法的优化
98 0
|
8月前
|
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的映射关系。
63 3
实现HBase表和RDB表的转化(附Java源码资源)
|
8月前
|
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
156 1
Hadoop学习笔记(HDP)-Part.16 安装HBase
|
存储 前端开发 Cloud Native
基于 HBase 快速构架海量订单存储系统|学习笔记
快速学习基于 HBase 快速构架海量订单存储系统
基于 HBase 快速构架海量订单存储系统|学习笔记
|
存储 Java Shell
分布式数据库HBase的常用操作的基本Shell命令的表操作
HBase是一个分布式数据库系统,支持高性能、可伸缩、实时的数据存储和处理。在HBase中,我们可以使用Shell命令来进行常用的操作,如创建表、插入数据、查询数据、更新数据等。本文将介绍关于分布式数据库HBase的常用操作基本Shell命令的表操作。
270 0
|
存储 搜索推荐 Java
如何基于 HBase 构建图片、视频数据的统一存储检索方案|学习笔记
快速学习如何基于 HBase 构建图片、视频数据的统一存储检索方案
如何基于 HBase 构建图片、视频数据的统一存储检索方案|学习笔记
|
SQL 缓存 分布式计算
HBase查询一张表的数据条数的方法
HBase查询一张表的数据条数的方法
1031 0
HBase查询一张表的数据条数的方法
|
分布式数据库 索引 Hbase
《HBase应用与发展之HBase RowKey与索引设计》电子版地址
HBase应用与发展之HBase RowKey与索引设计
128 0
《HBase应用与发展之HBase RowKey与索引设计》电子版地址
|
分布式数据库 Hbase
|
分布式数据库 Hbase