【问题标题】:How to query a simple epoch-based partition column in Cassandra?如何在 Cassandra 中查询一个简单的基于 epoch 的分区列?
【发布时间】:2017-07-19 17:11:08
【问题描述】:

我在 Cassandra 中查询时不知道主键。
我只知道我想要获取数据的时间范围。
所以我一直把我表的分区键作为纪元。

CREATE TABLE tmp2 (
    epoch bigint,
    primary key (epoch)
);

INSERT INTO tmp2 (epoch) values (unixTimestampOf(now()));
INSERT INTO tmp2 (epoch) values (unixTimestampOf(now()));
INSERT INTO tmp2 (epoch) values (unixTimestampOf(now()));
INSERT INTO tmp2 (epoch) values (unixTimestampOf(now()));
INSERT INTO tmp2 (epoch) values (unixTimestampOf(now()));


select * from tmp2;
 epoch
---------------
 9410
 8171
 7595
 8746
 6009

注意:我通过去掉通用前缀 148826477 将历元减少到更易读的数字

我尝试根据纪元范围查询此表:

Select * from tmp2 where epoch >= 6009 and epoch <= 7595;
InvalidRequest: Only EQ and IN relation are supported on the partition key (unless you use the token() function)

所以我使用了 token() 函数,一切都很好:

Select * from tmp2 where token(epoch) <= token(6009) and token(epoch) >= token(7595);
 epoch
---------------
 7595
 8746
 6009

但是,我怀疑使用 token 实际上并没有给我基于时间的查询,因为 token(epoch) 和 token(epoch+100) 可能没有与 epoch 和 epoch+100 相同的线性关系。
示例:

Select * from tmp2 where token(epoch) <= token(7009) and token(epoch) >= token(7595);

 epoch
-------
(0 rows)
  1. 有没有办法以 1 分钟为单位查询基于 epoch 的分区列?或
  2. 有没有办法在存储数据的同时去掉 epoch 的毫秒和秒,让 epoch 的分辨率只有一分钟,我可以很容易地指定分区分钟?

【问题讨论】:

  • 你知道数据插入的时间吗?
  • 我希望在 CQL 本身内将时代转换为分钟。像INSERT INTO tmp2 (epoch) values (setResolutionToLastMinute(now())) 这样的东西。 CQL 有什么东西可以将 now() 的分辨率降低到一分钟吗?

标签: cassandra cql


【解决方案1】:

但是,我怀疑使用令牌实际上并没有给我 基于时间查询,因为 token(epoch) 和 token(epoch+100) 可能 与 epoch 和 epoch+100 的线性关系不同。

你的怀疑是对的。它们确实是两个非常不同的东西。我recently posted explanation关于按数据查询和按token函数查询的区别。

回到你的问题:

  1. 不,没有办法执行这样的任务,除非您的分区键已经在 1 分钟粒度
  2. 不,您必须在客户端代码上四舍五入并将其插入到您的时间戳列中。

如果你只是在your previous question 上关注my advice,你会在一眨眼间解决问题。

我想补充一点,cassandra 中的一个基本内容是查询数据时确实需要知道分区键,这就是错误所说的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-02
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    相关资源
    最近更新 更多