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
Model 我需要一些关于我的卡桑德拉模型(时间序列)的建议_Model_Cassandra_Time Series_Cql3 - Fatal编程技术网

Model 我需要一些关于我的卡桑德拉模型(时间序列)的建议

Model 我需要一些关于我的卡桑德拉模型(时间序列)的建议,model,cassandra,time-series,cql3,Model,Cassandra,Time Series,Cql3,我正在使用nodejs和Cassandra(helenus模块)开发一个API,我有一个Cassandra模型,如下所示: CREATE TABLE IF NOT EXISTS events ( hour TIMESTAMP, type int, id timeuuid, created_at TIMESTAMP, invoice int, data text, PRIMARY KEY((hour, type), created_at) )WITH CLUSTER

我正在使用nodejs和Cassandra(helenus模块)开发一个API,我有一个Cassandra模型,如下所示:

CREATE TABLE IF NOT EXISTS events (
  hour TIMESTAMP,
  type int,
  id timeuuid,
  created_at TIMESTAMP,
  invoice int,
  data text,
  PRIMARY KEY((hour, type), created_at) 
 )WITH CLUSTERING ORDER BY (created_at DESC);
现在,我有了一个资源来搜索特定发票号的所有事件类型,因此当我执行下面这样的查询时,它将返回与我的条件匹配的行

select * 
from events  
WHERE hour = '2014-01-20 21:00:00' 
AND type IN (0,1,2)
AND invoice = 123456789 
ORDER BY created_at DESC LIMIT 15;
但是,当我想获取与特定发票号码相关的时间开始时的所有行时,我遇到了麻烦,因为我的“小时”字段限制了我很多

Cassandra有一个限制,您可以在分区键(hour,type)的条件语句中使用EQ和IN运算符

什么样的模型最适合我的需要


谢谢。

问题在于,您无法在Cassandra中过滤任意列。您需要提前知道您的查询,并设计您的模式来回答这些查询。假定您声明的查询是唯一需要运行的查询,您可以按如下方式修改主键:

主键((小时,类型),发票,创建时间)

这将把invoice添加到列名中以形成复合名称,并允许您运行查询