Cassandra数据建模 - 设计概念

时间:2015-10-22 16:03:16

标签: cassandra data-modeling cql

我是Cassandra的新手,试图理解这些概念。请帮我 : 在这里,我有公民的语言和州的数据。

create table citizens_by_state_and_language(
 citizenID BigInt,
 state varchar,
 language varchar
 primary key((language,state), citizenID)
);

我可以像这样查询

Select * from citizens_by_state_and_language where language = 'Spanish' and state = 'Kentucky'

然而,这些查询无效:

Select * from citizens_by_state_and_language where language = 'Spanish';
Select * from citizens_by_state_and_language where state = 'Kentucky';

现在为了使它工作,我可以在这些上创建索引,如下所示:

create index on citizens_by_state_and_language(language);
create index on citizens_by_state_and_language(state);

我不确定这是否是设计它的正确方法,还是我应该为每个查询创建单独的表(每个表一个查询)?请提出一些概念灯。

1 个答案:

答案 0 :(得分:0)

这是因为语言和状态是分区键。

在Cassandra中,您无法查询单个分区键,您必须指定这两个字段才能执行此操作,这就是您的第一个查询有效的原因。

Cassandra键不是那么容易理解,this article解释了所有这些键背后的内容,而this one就是一个很好的例子。