我对 Hbase 很陌生。
我需要使用 hbase 实现讨论线程。
每个讨论都有一个新的行键。
从 hbase 获取讨论是按照创建的 rowkey 的顺序(带有时间戳)
但是,每当向讨论中添加新评论时,我都想向用户展示出现在列表顶部的讨论。
但根据我目前的情况,当我评论列表中的一个线程时,它不会出现,因为讨论线程的行键是基于时间戳的。
我想过使用过滤器来实现这一点。但这将是一项昂贵的操作。
有没有其他更好的方法来实现这一目标?
提前致谢。
我对 Hbase 很陌生。
我需要使用 hbase 实现讨论线程。
每个讨论都有一个新的行键。
从 hbase 获取讨论是按照创建的 rowkey 的顺序(带有时间戳)
但是,每当向讨论中添加新评论时,我都想向用户展示出现在列表顶部的讨论。
但根据我目前的情况,当我评论列表中的一个线程时,它不会出现,因为讨论线程的行键是基于时间戳的。
我想过使用过滤器来实现这一点。但这将是一项昂贵的操作。
有没有其他更好的方法来实现这一目标?
提前致谢。
您可以同时写入第二个“索引”表(用引号括起来,因为与 RDBMS 不同,HBase 没有自动声明性索引,您必须自己做)。该表可以基于行键中的修改日期,并包含足够的信息来查找主表中的记录(例如,它可以在行键中包含修改日期,然后在列值中包含创建日期) . 然后,您的操作是在这个“索引”表中进行线性扫描以查找最近修改的记录,然后对主表执行 N 次 GET 操作,每个要显示的记录一个。
另一种设计完全是,您可以为每个用户在 HBase 中存储一行,其中包含两个列族:一个用于用户的消息(每列是一个消息,以类似于您上面描述的方式存储,除了代替一行用于每个讨论,每个讨论都有一个专栏);然后,在另一个列族中,您可以存储用户的“收件箱”,它只是按修改日期排序的前 N 条消息的缓存,用于显示收件箱。将这些作为列而不是行来执行的好处是,在这种情况下,整个行都受到每个用户的事务保护,因此您可以执行更复杂的操作,例如检查和设置,并且可以保证收件箱视图始终保持一致最新消息。