聊天消息历史记录存储之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条消息。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部