我想在Cassandra中存储大约10亿条数据.数据项按时间排序,我要做的一个主要查询是按顺序查找两个时间范围之间的项目.如果可能的话,我真的更喜欢使用RandomParititioner.在Cassandra有办法做到这一点吗?
起初,因为我来自SQL,我假设我应该将每个事件创建为一行,但后来我发现我正在考虑错误的方式而且我应该使用列.Cassandra中的列似乎是有序的,但我对它们的有序性感到困惑.如果我使用时间作为列名,有没有办法让我按顺序将所有列从一次到另一次?
我看到的另一件事是二级索引的0.7特性,但是我找不到文档是否可以使用这些来按顺序查看一系列内容.
我想要的只是这个SQL的Cassandra等价物:"选择*来自Stuff,其中日期> X和日期 分区程序仅影响环周围密钥的分布,而不影响密钥中列的顺序.始终根据为列族定义的列比较器对列进行排序. 您可以使用SlicePredicate 调用get_slice,该SlicePredicate指定SliceRange以获取范围内的键的所有列. 要为数据建模,您可以为每天创建1行(或适当的时间分片),并为每个数据块创建一列.就像是, 列名应该是二进制的,使用二进制比较器.前8个字节是时间戳,而其余字节是数据的id. 假设X和Y在同一天,为了找到X和Y之间的所有项目,在日键上做一个get_slice,使用SlicePredicate和SliceRange指定X的开始和Y + 1的结束.开始和结束都是8字节的字节数组. 要查找多天的数据,请从多个键中读取.
1> sbridges..:"yyyy-mm-dd" : { #key, one for each day
timeStampMillis1:dataid1 : "value1" # one column for each piece of data
timeStampMillis2:dataid2 : "value2"
timeStampMillis3:dataid3 : "value3"
}