Cassandra数据库
似乎除了主键之外没有办法订购任何东西。
我有两列:ID和时间戳。
我只需要每个ID一行(!),但我想基于时间戳过滤(基本上与排序相同?)我的结果。
我想运行此命令:
SELECT id, timestamp FROM " + TableName + " WHERE timestamp < ? ALLOW FILTERING;
如何确保每个ID只有一行(如果我的主键包含两者(ID和时间戳),则无法执行此操作
答案 0 :(得分:0)
我还没有彻底测试这种方法。但我认为我找到了解决方法。
我将允许时间戳成为主键的一部分
CREATE TABLE IF NOT EXISTS " + TableName + " ( key blob, timestamp bigint, PRIMARY KEY( key, timestamp )
但在调用UPDATE / PUT之前,我将删除所有行
WHERE id = ?
这样它将替换该ID的当前时间戳。通过这种方式,我仍然可以对时间戳进行排序,同时为每个ID保留一行。