聊天消息历史记录存储之Hbase篇

1. Hbase介绍

        Hbase是一种分布式的,多版本的,面向列的,半结构化的,稀疏的,多维的,排序的组件.

        Hbase表可以理解为一个3维Map,包括row key, column(family+qualifier),timestamp

        分布式:  将数据切分成多个region

        持久化:  底层为HDFS

        多版本:  同一个rowkey可以根据timestamp存储多个版本

        稀疏:  column没有值时, 不占用存储空间,即不单独存储元数据

        排序: 默认按rowkey排序,同一个rowkey内按timestamp排序                      

 

2. 聊天消息历史记录存储

       背景: 我们使用微信时,经常会查看聊天历史记录, 历史记录的特点是量大,每天都可能有新增,一般按时间排序.

       设计: 将聊天消息存储在Hbase中,消息包含发送人id,接收人id,时间戳, 内容,发送状态等,

                如下图所示:

userId1userId2sendTimemessageStatusmessage
12345678234567891418812276536发送成功你吃饭没
12345678234567891428812276536发送中晚上好

               row key设计规则:   reverse(用户id1)-用户id2-inverse(时间戳)
                           
               目的: reverse(用户id)用于防止热点问题, inverse(时间戳)=long最大值-当前时间戳, 默认时间倒序

3 读需求

           根据userId,按从大到小(先读最新消息)读取timestamp在(startTs, endTs]的n条消息。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值