1

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

假设如下表:

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

我想获取当前访问用户 ID 的最新 20 个唯一访问用户 ID,但是

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

我是否正确假设我不能只将访问日期添加到主键,因为我只想为单个用户/用户组合提供最新的访问日期。最好让它们按访问日期降序排序,如“Twitter 克隆”演示文稿中所述......

有什么帮助吗?

4

1 回答 1

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

那应该做你正在寻找的。依靠使用比较器来创建您想要的插入顺序会更有效。

于 2013-06-24T17:12:34.777 回答