Model 我需要一些关于我的卡桑德拉模型(时间序列)的建议
我正在使用nodejs和Cassandra(helenus模块)开发一个API,我有一个Cassandra模型,如下所示: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
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添加到列名中以形成复合名称,并允许您运行查询