【问题标题】:Cassandra: Range Queries on timestamp of time series dataCassandra:时间序列数据时间戳的范围查询
【发布时间】:2014-05-07 21:59:13
【问题描述】:

我正在尝试评估 Cassandra DB 在存储和检索不同渠道的时间序列数据方面的性能。

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

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

创建表 uhhdata ( ch_idx 整数, 日期时间戳, dt 时间戳, val浮动, 主键((ch_idx,日期),dt) );

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

我有两个问题: 1-将 2,500,000 条记录写入此表并运行查询后 select * from UHHdata limit 10,000,000; 我收到以下超时错误:

请求未在 rpc_timeout 内完成。

C++ 驱动程序只为这个数量的记录返回 NULL: boost::shared_ptr 结果 = future.get().result;

如果(!结果) std::cout

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

2-如果对dt timstamp进行如下范围查询,返回的查询不检查区间指定的区间,与时间上下限无关:

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

cqlsh:uhhkeyspace2> select * from UHHData where ch_idx=1 AND date = '2012-04-04 01:00:00' AND dt

ch_idx |日期 | dt |值

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

  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 行)

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

谢谢, 阿明

【问题讨论】:

    标签: cassandra timestamp


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-06-06
      • 2014-03-04
      • 2017-04-30
      • 2020-05-05
      • 2018-01-15
      • 2013-01-02
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      相关资源
      最近更新 更多