在Cassandra中是否有'a.k.a.'date effective'数据检索的内置支持

时间:2011-07-19 10:58:49

标签: cassandra

我想在一行中定义一些数据,这本质上是主/细节。为了说明的目的,让我们说它是一个足球联盟'联盟-A'与一系列球队。团队可以随着时间的推移添加或删除,或者他们的属性可能会改变,或者联盟的属性可能会改变。

在HBase中,我可以像这样定义一个表结构:

Column Family: League
       Column: Name
       Column: Sponsor
Column Family: Team
       Column: team-A
       Column: team-B  etc

现在,如果我添加以下数据(对于非标准符号表示抱歉,我已经简化了时间戳以仅显示日期部分):

Key    Timestamp    League { Name      Sponsor }
LG-A   2011-01-01            League-A  Big-Co

Key    Timestamp      Team
LG-A   2011-01-01       "The Blues": blues-data
LG-A   2011-01-01       "The Greens": greens-data
LG-A   2011-03-01       "The Reds": reds-data
LG-A   2011-03-10       "The Greens": greens-data2

我想查询指定时间2011-03-10的LG-A数据并得到结果:

Key    Timestamp      Team
LG-A   2011-01-01       "The Blues": blues-data
LG-A   2011-03-01       "The Reds": reds-data
LG-A   2011-03-10       "The Greens": greens-data2

同样当我查询LG-A指定时间2011-02-01时,我得到了结果:

Key    Timestamp      Team
LG-A   2011-01-01       "The Blues": blues-data
LG-A   2011-01-01       "The Greens": greens-data

这是通过在放置数据时设置时间戳,然后设置Get操作的时间范围在HBase中完成的。

这可以在Cassandra轻松完成吗?到目前为止,我只是遇到了使用时间戳值来编写列名来存储时间序列数据的建议,但这似乎没有给出上面说明的功能(例如,我只想在我的结果中为“The Greens”输入一个条目,那个是在指定的时间戳有效。

1 个答案:

答案 0 :(得分:1)

  

这是通过在放置数据时设置时间戳,然后设置Get操作的时间范围在HBase中完成的。

我有理由相信这会导致完整的顺序扫描。

您可以在Cassandra中手动seq扫描,或者您可以创建一个包含时间戳的列并将其编入索引。有关示例,请参阅http://www.datastax.com/dev/blog/whats-new-cassandra-07-secondary-indexes(使用非ts数据,但原理相同)。