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