【问题标题】:How do I obtain all the row names in a Cassandra table, efficiently?如何有效地获取 Cassandra 表中的所有行名?
【发布时间】:2016-02-17 16:03:00
【问题描述】:

我在 Cassandra 中有一个简单的模式,我根据建议 here 中的模式 1 存储大量金融市场时间序列,即: 大约有 2000 个代码,每个代码都在自己的行中,每个代码点都有 100k 到 1m 个时间序列数据点(“列”)。如何有效地获取代码名称(即 2000 个代码名称?在上面的类比中,蓝色的“WeatherStationID”单元格?)。与上面的唯一区别是我有按时间 DESC 排序的行,所以我的实际表如下所示:

CREATE TABLE ts.mindesc (
    ticker text,
    time timestamp,
    close float,
    high float,
    low float,
    numevents int,
    open float,
    source text,
    value float,
    PRIMARY KEY (ticker, time)
) WITH CLUSTERING ORDER BY (time DESC)

我是否必须从某个时间戳值上方的整个表中选择 * 并对其进行解析?这样做的问题是,并非所有的代码都有最近的数据,所以我可能不得不在时间上回到很远的时间来捕获它们,在这种情况下,对于有大量最近数据的代码,我可能会通过大量的冗余信息来获取.

【问题讨论】:

    标签: cassandra time-series cassandra-2.0


    【解决方案1】:

    其实你应该可以通过DISTINCT快速查询分区键:

    SELECT DISTINCT ticker FROM ts.mindesc;
    

    虽然 CQL 中的 10 万行在未绑定的 WHERE 下可能表现不佳,但 2000 个分区键不应该成为问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 2012-09-04
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 2016-08-22
      • 2012-11-20
      相关资源
      最近更新 更多