V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Stargate
mikej
V2EX  ›  HBase

关于 hbase 的一个消息中心表的 rowkey 设计

  •  
  •   mikej · 2014-07-03 15:50:35 +08:00 · 6876 次点击
    这是一个创建于 3557 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司准备将消息中心由原先的mysql储存改为hbase,主要需求如下:

    1.消息分为系统公告和个人消息,个人消息有不同的类别,每条消息有已读和未读状态。
    2.查看消息时可以分别查看全部消息、系统公告和个人消息,其中个人消息可以分类别查看。也可以分已读和未读查看(按照时间排序)。

    现在的消息表的设计是这样的:

    rowkey = uid+is_read+msg_type+递减的timestamp,比如:22222222,1,3,8595702279104
    column family只有一个message,用于存储消息内容

    根据hbase的数据存储特性,数据按照rowkey的字典序排列,这样很容易按分类别查看数据,但查看全部消息就不能按照时间排序了,因为不同类别的消息都聚集在一起,如果把timestamp放到is_read前面,所有消息按时间排列,但不同类别的消息又分散了。都不能满足需求。(同一条数据分不同的rowkey存两次可以解决问题,但是增加了一倍的储存空间不太可取啊)

    前端是通过thrift用php访问的,提供的接口真的很不灵活,请问有什么好的解决方案吗?还有就是hbase的存储性能怎么样,希望有使用经验的朋友们能介绍一下 :)
    1 条回复    2015-03-05 10:28:27 +08:00
    chekun
        1
    chekun  
       2015-03-05 10:28:27 +08:00
    你这个最终是如何解决的呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2743 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:45 · PVG 20:45 · LAX 05:45 · JFK 08:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.