我想在一行中定义一些数据,这本质上是主/细节。为了说明的目的,让我们说它是一个足球联盟'联盟-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”输入一个条目,那个是在指定的时间戳有效。
答案 0 :(得分:1)
这是通过在放置数据时设置时间戳,然后设置Get操作的时间范围在HBase中完成的。
我有理由相信这会导致完整的顺序扫描。
您可以在Cassandra中手动seq扫描,或者您可以创建一个包含时间戳的列并将其编入索引。有关示例,请参阅http://www.datastax.com/dev/blog/whats-new-cassandra-07-secondary-indexes(使用非ts数据,但原理相同)。