【问题标题】:Discussion thread using HBASE使用 HBASE 的讨论线程
【发布时间】:2012-05-18 05:47:43
【问题描述】:

我对 Hbase 还是很陌生。

我有一个使用 hbase 实现讨论线程的需求。

每个讨论都有一个新的行键。

从 hbase 获取讨论是按照创建的 rowkey 的顺序(带有时间戳)

但每当有新评论添加到讨论中时, 我想向用户展示出现在列表顶部的讨论。

但根据我目前的情况,当我对列表中的某个线程发表评论时,它不会出现,因为讨论线程的行键是基于时间戳的。

我想过使用过滤器来实现这一点。但这将是一项昂贵的操作。

还有其他更好的方法来实现这一点吗?

提前致谢。

【问题讨论】:

    标签: hbase


    【解决方案1】:

    您可以同时写入第二个“索引”表(用引号括起来,因为与 RDBMS 不同,HBase 不维护自动声明性索引,您必须自己做)。该表可以基于行键中的修改日期,并包含足够的信息来查找主表中的记录(例如,它可以在行键中包含修改日期,然后在列值中包含创建日期) .然后,您的操作是在这个“索引”表中进行线性扫描以查找最近修改的记录,然后对主表执行 N 次 GET 操作,针对您要显示的每条记录执行一次。

    另一种设计完全是,您可以在 HBase 中为每个用户存储一行,其中包含两个列族:一个用于用户的消息(每列是一条消息,存储方式类似于您上面描述的方式,除了而不是每个讨论有一行,每个讨论有一个列);然后,在另一个列族中,您可以存储用户的“收件箱”,它只是按修改日期排序的前 N ​​条消息的缓存,用于显示收件箱。将这些作为列而不是行来执行的好处是,在这种情况下,整个行都受到每个用户的事务保护,因此您可以执行更复杂的操作,例如检查和设置,并且可以保证收件箱视图始终保持一致最新消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2019-09-16
      • 2021-09-20
      • 1970-01-01
      • 2014-07-05
      • 2021-08-10
      相关资源
      最近更新 更多