我正在尝试评估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行)
为什么不应用时间戳限制条件?我该如何解决这个问题?
谢谢, 阿明
答案 0 :(得分:1)
我没有看到任何问题。 dt
列中的所有时间戳都来自2012-04-04
,您的条件为dt < '2014-04-04 01:00:10'
。 2012年是2014年之前,所以一切都是正确的