Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有对'的内置支持;截至';a、 k.a.&x27;生效日期';Cassandra中的数据检索_Cassandra - Fatal编程技术网

是否有对'的内置支持;截至';a、 k.a.&x27;生效日期';Cassandra中的数据检索

是否有对'的内置支持;截至';a、 k.a.&x27;生效日期';Cassandra中的数据检索,cassandra,Cassandra,我想在一行中定义一些数据,本质上是master/detail。为了便于说明,让我们假设它是一个足球联盟,由一组球队组成。球队可以随着时间的推移而增减,或者他们的属性可能会改变,或者联盟的属性可能会改变 在HBase中,我可以定义如下表结构: Column Family: League Column: Name Column: Sponsor Column Family: Team Column: team-A Column: team-B

我想在一行中定义一些数据,本质上是master/detail。为了便于说明,让我们假设它是一个足球联盟,由一组球队组成。球队可以随着时间的推移而增减,或者他们的属性可能会改变,或者联盟的属性可能会改变

在HBase中,我可以定义如下表结构:

Column Family: League
       Column: Name
       Column: Sponsor
Column Family: Team
       Column: team-A
       Column: team-B  etc
现在,如果我添加以下数据(很抱歉使用非标准符号,我已经简化了时间戳以仅显示日期部分):

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

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
Key    Timestamp      Team
LG-A   2011-01-01       "The Blues": blues-data
LG-A   2011-01-01       "The Greens": greens-data
同样,当我查询LG-A指定时间2011-02-01时,我得到的结果是:

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
Key    Timestamp      Team
LG-A   2011-01-01       "The Blues": blues-data
LG-A   2011-01-01       "The Greens": greens-data
这是在HBase中完成的,方法是在放置数据时设置时间戳,然后设置Get操作的时间范围

在卡桑德拉能轻松做到这一点吗?到目前为止,我只遇到过使用时间戳值编写列名以存储timeseries数据的建议,但这似乎没有提供上述功能(例如,我只希望结果中的“绿色”有一个条目,即在指定的时间戳有效的条目)

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

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


您可以在Cassandra中手动seq scan,也可以创建一个包含时间戳的列并对其进行索引。请参阅示例(使用非ts数据,但原理相同).

谢谢你提供的信息。如果我创建了一个索引,我想我需要编写一些代码来为请求的时间戳选择有效数据,因为索引搜索不支持“在这个时间点获取最新定义”(我从HBase免费获得的位)?有点。如果这是您关心的查询,那么您可以在Cassandra中对其进行不同的建模——您可以将定义放在一行中,时间戳作为列名。然后“给我最新的定义”变成“为一列获取切片、反转”。谢谢您的帮助。这给了我一种尝试的方法。