cassandra按非主键解决方法排序

时间:2016-05-31 14:04:15

标签: sorting cassandra key

Cassandra数据库

似乎除了主键之外没有办法订购任何东西。

我有两列:ID和时间戳。

我只需要每个ID一行(!),但我想基于时间戳过滤(基本上与排序相同?)我的结果。

我想运行此命令:

SELECT id, timestamp FROM " + TableName + " WHERE timestamp < ? ALLOW FILTERING;

如何确保每个ID只有一行(如果我的主键包含两者(ID和时间戳),则无法执行此操作

1 个答案:

答案 0 :(得分:0)

我还没有彻底测试这种方法。但我认为我找到了解决方法。

我将允许时间戳成为主键的一部分

CREATE TABLE IF NOT EXISTS " + TableName + " ( key blob, timestamp bigint, PRIMARY KEY( key, timestamp )

但在调用UPDATE / PUT之前,我将删除所有行

WHERE id = ?

这样它将替换该ID的当前时间戳。通过这种方式,我仍然可以对时间戳进行排序,同时为每个ID保留一行。