【问题标题】:Cassandra Data Modeling - Design ConceptCassandra 数据建模 - 设计理念
【发布时间】:2015-10-28 21:06:43
【问题描述】:

我是 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);

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

【问题讨论】:

    标签: cassandra data-modeling cql


    【解决方案1】:

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

    在 Cassandra 中,您不能查询单个分区键,您必须指定两个字段才能这样做,这就是您的第一个查询有效的原因。

    Cassandra 密钥并不那么容易理解,this article 解释了所有这些密钥背后的含义,this one 就是一个很好的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-17
      • 2021-08-26
      • 2017-01-24
      • 1970-01-01
      • 2013-05-21
      • 2021-03-20
      • 2018-03-08
      • 1970-01-01
      相关资源
      最近更新 更多