【问题标题】:PRIMARY KEY definition in Cassandra 1.2 using CQL 3Cassandra 1.2 中使用 CQL 3 的主键定义
【发布时间】:2013-08-28 09:00:54
【问题描述】:

我是 Cassandra 的新手,在 youtube 上关注 this Cassandra 教程。在本教程中,作者创建了两个表,如下所示:

create table children(childid varchar, firstname varchar, lastname varchar, country varchar, state varchar, zip varchar, primary key(child)) with compact storage;

create table naughtyornicelist(standingbycountry varchar, state varchar, zip varchar, childid varchar, primary key(standingbycountry, state, zip, childid));

我现在面临两个问题。

第一个问题是 children 表只有在我删除 with compact storage 时才会创建。

第二个问题是在创建naughtyornicelist 表时,Cassandra 抛出以下错误:Bad Request: No definition found that is not part of the PRIMARY KEY

我给出了以下命令

cqlsh:northpole> create table naughtyornicelist(standingbycountry varchar, state varchar, zip varchar, childid varchar, primary key(standingbycountry, state, zip, childid));
Bad Request: No definition found that is not part of the PRIMARY KEY
cqlsh:northpole>

我无法找到此错误出现的原因以及如何解决此错误。请求 Cassandra 人员提供帮助。

【问题讨论】:

    标签: cassandra primary-key composite-primary-key cql3


    【解决方案1】:

    子级应该在创建过程中失败,无论是否压缩存储,您的主键都没有定义:

    create table northpole.children(
      childid varchar,         <---- column name = childid
      firstname varchar, 
      lastname varchar, 
      country varchar, 
      state varchar, 
      zip varchar, 
      primary key(child)       <---- column name = child != childid
    ) with compact storage;
    

    没有找到不属于主键的定义

    您正在创建一个列族(cql 表),它使用主键中的每一列(cql talk)。你不能那样做。如果您希望能够在WHERE 子句中使用列,请考虑secondary indexed

    create table northpole.naughtyornicelist (
      standingbycountry varchar, 
      state varchar, 
      zip varchar, 
      childid varchar, 
      PRIMARY KEY(childid, standingbycountry)
    );
    
    CREATE INDEX inex_name ON northpole.naughtyornicelist (zip);
    CREATE INDEX inex_name ON northpole.naughtyornicelist (state);
    

    主键非常重要,因为它决定了数据的分布和聚类。键的第一部分(在本例中为 childid)称为分区键,用于在不同节点之间分配数据,因此您希望分区键尽可能随机。其余字段构成集群键用于排序,以便查询具有相同聚类键的列可以更有效。 注意这是一个粗略的指南,我不知道你将如何查询,但你必须相应地调整你的架构。

    【讨论】:

      猜你喜欢
      • 2013-07-16
      • 2013-08-27
      • 2014-03-27
      • 2014-04-04
      • 1970-01-01
      • 2013-07-16
      • 2012-08-31
      • 1970-01-01
      • 2013-06-21
      相关资源
      最近更新 更多