Cassandra:范围查询时间序列数据的时间戳

时间:2014-03-28 12:27:14

标签: cassandra timestamp

我正在尝试评估Cassandra数据库性能,以便存储和检索不同频道的时间序列数据。

以文件格式记录数据,最大记录速率为8个样本/秒,每个样本的时间戳以毫秒为单位。在给定时间内录制的频道数可能会有所不同。

受到以下链接Getting Started with Time Series Data Modeling的启发,我使用了下表:

CREATE TABLE uhhdata(   ch_idx int,   日期时间戳,   dt时间戳,   val float,   PRIMARY KEY((ch_idx,date),dt) );

其中Partition键由通道号(ch_idx int)和日期时间戳组成,它存储日期而不是时间戳详细信息,dt是记录的时间戳小于第二分辨率。

我有两个问题: 1 - 在将2,500,000条记录写入此表并运行查询之后 从UHHdata限制10,000,000中选择*; 我得到以下时间错误:

请求未在rpc_timeout内完成。

对于此数量的记录,C ++驱动程序只返回此数字的NULL: boost :: shared_ptr result = future.get()。result;

如果(!结果)   std :: cout<< "没有结果记录\ n&#34 ;;

如果这样做为100,000,则会在22秒后返回。 如何检索这样的大查询的所有记录? 我看过一个帖子 cassandra get all records in time range但是,我不知道如何适用于我的情况,因为我需要获取所有记录而不是其中一些记录?

2 - 如果对dt timstamp执行范围查询,如下所示,则返回的查询不会检查该时间间隔指定的时间间隔,并且与时间上限和下限无关:

可以看出,查询返回的记录大于上限时间' 2014-04-04 01:00:10':

cqlsh:uhhkeyspace2>从UHHData中选择*,其中ch_idx = 1 AND date =' 2012-04-04 01:00:00'和dt< ' 2014-04-04 01:00:10'限制20;

ch_idx |日期| dt | VAL

-------- + -------------------------------------- + -------------------------------------- + -----

  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:00GMT Daylight Time |  -5
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:01GMT Daylight Time |  44
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:02GMT Daylight Time |  83
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:03GMT Daylight Time |  99
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:04GMT Daylight Time |  89
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:05GMT Daylight Time |  55
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:06GMT Daylight Time |   5
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:07GMT Daylight Time | -44
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:08GMT Daylight Time | -83
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:09GMT Daylight Time | -99
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:10GMT Daylight Time | -89
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:11GMT Daylight Time | -55
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:12GMT Daylight Time |  -5
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:13GMT Daylight Time |  44
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:14GMT Daylight Time |  83
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:15GMT Daylight Time |  99
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:16GMT Daylight Time |  89
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:17GMT Daylight Time |  55
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:18GMT Daylight Time |   5
  1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:19GMT Daylight Time | -44

(20行)

为什么不应用时间戳限制条件?我该如何解决这个问题?

谢谢, 阿明

1 个答案:

答案 0 :(得分:1)

我没有看到任何问题。 dt列中的所有时间戳都来自2012-04-04,您的条件为dt < '2014-04-04 01:00:10'。 2012年是2014年之前,所以一切都是正确的

相关问题