Cassandra在Java中实现了有效负载效率

时间:2016-01-29 22:40:57

标签: cassandra

如果我定义一个Cassandra表来存储时间序列

CREATE TABLE series (
   ... series_id INT,
   ... time TIMESTAMP,
   ... value DOUBLE,
   ... PRIMARY KEY (series_id, time)
   ... ) WITH CLUSTERING ORDER BY (time DESC);

在Java中,我使用驱动程序查询一些时间序列

com.datastax.driver.core.ResultSet results =
    session.execute(
        "SELECT * FROM series WHERE seriesid IN (1, 2)";

它会给我一个行列表,其中每一行都是这两个系列之一的数据点。但是,对于这些行,系列ID都是相同的(1或2)。是否有可能通过返回两行来实现有效载荷,一个用于1系列,一个用于2个系列,每个行都有一组可变列,每个数据点有一列?

1 个答案:

答案 0 :(得分:1)

使用CQL3无法实现您的目标。 Cassandra转换结果视图以保护用户不必处理底层存储格式。

但是使用Datastax驱动程序和映射API,您可以使用以下代码实现所需的效果:

BAZ

另外,请注意使用“IN”被认为是cassandra中的反模式,应该避免,因此我使用循环执行异步执行来获得相同的效果。您可以阅读有关此here

的更多信息