在cassandra排序评论分页

时间:2014-01-28 09:19:31

标签: sorting cassandra comments review

我有一个CF评论,其中项目ID为行键,评论ID为列,Review对象json为列值。

CF Reviews{
1234:
 234:{[1:"this is a review"],[2:23/12/14],[3:4]}
 567:{[1:"this is a review"],[2:24/12/14],[3:3]}

4567:
 345:{[1:"this is a review"],[2:23/12/14],[3:4]}
 876:{[1:"this is a review"],[2:24/12/14],[3:3]}
}

我想对每个商品ID实施分页,但由于列数可能很大,我不想一次获取它们。 所以,我想设计一个API,可以采用200到250之间的数字范围,并根据日期或评级给我排序的评论。 我发现这个帖子很少,但遗憾的是没有一个有用。

1 个答案:

答案 0 :(得分:1)

在Cassandra中对列进行分页并不是为了弱者。如果你想要向前和向后翻页,你需要做一些技巧,比如总是在你之前阅读专栏和你感兴趣的切片之后的专栏,以便你可以确定你何时# 39;在开始或结束时。

几年前我写了一篇博客文章,概述了如何做到这一点:http://architecturalatrocities.com/post/13918146722/implementing-column-pagination-in-cassandra

不幸的是,真的不可能做传统的"展示项目40到60"分页的类型,因为Cassandra的行没有这样索引。你不能向Cassandra询问第40栏。

相反,你需要做什么(这是我的博客文章的高级概述,这里很长时间才能重新发布)从头开始并要求第一个N + 1列。如果你有N + 1列你不在最后,那么你要求以第(N + 1)个开头的N列(例如,如果你在第一列中得到a,b,f,h,g)结果你要求以g开头的列。重复,直到你没有得到N + 1列,因为这意味着你最后。

支持向后翻页有点复杂。您需要再请一列,并进行更多边界检查。