允许Cassandra中的过滤功能(哪个选择正确?)

时间:2017-11-09 08:42:21

标签: time-series cassandra-3.0

我目前正在尝试在Cassandra的基础上建模一些时间序列数据。 例如,我有一个表bigint_table,它是通过以下查询

创建的

**

  

CREATE TABLE bigint_table(name_id int,tuuid timeuuid,timestamp   时间戳,值文本,PRIMARY KEY((name_id),tuuid,timestamp))WITH   CLUSTERING ORDER BY(tuuid asc,timestamp asc)

** 添加了 tuuid 列,因为没有它我遇到了问题,并且在将它们插入数据库时​​丢失了一些数据。 name_id 表示来自from.tuuid列的频道ID数据,因为没有它我遇到了问题,我在将数据插入数据库时​​丢失了一些数据。在一个表中,有许多具有相同ID的数据,但它们是唯一的时间戳 tuuid 有时也可能相同)。 我一直执行2个不同的查询来获取值和时间戳

  1.   

    从bigint_table中选择值,其中name_id = 6,时间戳>'   2017-11-01 8:26:47.970 + 0000'和时间戳<' 2017-11-30   8:26:52.048 + 0000'按tuuid asc排序,timestamp asc允许过滤

  2. 2

      

    从bigint_table中选择时间戳,其中name_id = 6,时间戳>'   2017-11-01 8:26:47.970 + 0000'和时间戳<' 2017-11-30   8:26:52.048 + 0000'按tuuid asc排序,timestamp asc允许过滤

    In this post作者说,人们需要抵制只是添加允许过滤的冲动,人们应该考虑数据,模型和人们想要做的事情。

    我对使用允许过滤功能有很多想法,我发现在我的情况下我别无选择,我需要使用它。但是我在上面提到的帖子中的那些话让我有疑问。我想知道你的建议,你对我的问题有什么看法。是否有另一种方法来建模我的数据表,查询不需要允许过滤?我非常感谢你的建议。

1 个答案:

答案 0 :(得分:0)

您需要允许过滤的原因是因为您的群集列(tuuid,timestamp)的顺序错误。在这种情况下,数据首先由tuuid存储,然后由时间戳存储。但是您实际上是通过时间戳选择数据然后按tuuid排序,因此Cassandra无法使用您指定的索引。定义主键时的顺序很重要。