我想摆脱在社交媒体应用程序中存储访问者的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。最好的方法是按照访问日期降序排序,如“推特克隆”演示文稿中所述......
有任何帮助吗?
答案 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
那应该做你想要的。依靠使用比较器来创建插入所需的顺序要高效得多。