如何对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)
);
下面是一些关于二级索引用法的有用讨论:
非常感谢,请查看链接