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
如何对cassandra表建模以允许非主键上的where子句_Cassandra_Data Modeling_Spring Data Cassandra - Fatal编程技术网

如何对cassandra表建模以允许非主键上的where子句

如何对cassandra表建模以允许非主键上的where子句,cassandra,data-modeling,spring-data-cassandra,Cassandra,Data Modeling,Spring Data Cassandra,我正在一个实验项目中使用cassandra。我的模型很简单,我有下表: create table message( id varchar, msgId varchar, tId varchar, gtName varchar, status varchar, text text, PRIMARY KEY (id, tId) ); 在第一次插入时,我只有id和tId可插入。将有一个即时更新,我可以从被调用方法的返回类型中获取msgId来持久化。将有另一个对我的应用程序的调用,其中包含状态,它只

我正在一个实验项目中使用
cassandra
。我的模型很简单,我有下表:

create table message(
id varchar,
msgId varchar,
tId varchar,
gtName varchar,
status varchar,
text text,
PRIMARY KEY (id, tId)

);
在第一次插入时,我只有id和tId可插入。将有一个即时更新,我可以从被调用方法的返回类型中获取msgId来持久化。将有另一个对我的应用程序的调用,其中包含
状态
,它只知道msgId。在这种情况下,我需要进行查找,以便使用msgId上的
where子句更新消息表

我怎样才能使它在
cassandra 2.1.0
上正常工作呢?我也在使用
spring数据cassandra:1.1.0.RELEASE


感谢您的建议

第一个简单的步骤是在该键上创建一个:

create index on message(msgId);
select * from message where msgId='foo';
二级索引确实存在一些性能问题,并不总是很适合,这取决于您的数据模型。另一个选项是创建第二个表,将
msgId
映射回
id
tId

create table msgid (
     msgId varchar,
     id varchar,
     tId varchar,
     primary key (msgId)
);
下面是一些关于二级索引用法的有用讨论:


非常感谢,请查看链接