如何获得最新的20件独特的东西

时间:2013-06-24 10:40:21

标签: time cassandra

我想摆脱在社交媒体应用程序中存储访问者的mysql,并且认为cassandra会很好。

假设以下表格:

CREATE TABLE visitors (
  visiteduserid bigint,
  visitinguserid bigint,
  visitdate timestamp,
  PRIMARY KEY (visiteduserid,visitinguserid)
);

我想为当前的visituserid获取最新的20个唯一visituserid,但是

SELECT visitinguserid FROM visitors WHERE visiteduserid=1 ORDER BY visitdate DESC LIMIT 20

Bad Request: Order by is currently only supported on the clustered columns of the PRIMARY KEY, got visitdate

我是否正确地假设我不能将visitdate添加到主键,因为我只想为单个用户/用户组合使用最新的visitdate。最好的方法是按照访问日期降序排序,如“推特克隆”演示文稿中所述......

有任何帮助吗?

1 个答案:

答案 0 :(得分:2)

你很亲密。试试这个,看看它是如何为你工作的

CREATE TABLE visitors (
  visiteduserid bigint,
  visitdate timestamp,
  visitinguserid bigint,
  PRIMARY KEY (visiteduserid,visitdate)
) WITH CLUSTERING ORDER BY (visitdate DESC);

然后这样做:

SELECT visitinguserid FROM visitors WHERE visiteduserid=1 LIMIT 20

那应该做你想要的。依靠使用比较器来创建插入所需的顺序要高效得多。