【问题标题】:Cassandra add column after particular columnCassandra 在特定列之后添加列
【发布时间】:2018-05-01 14:26:47
【问题描述】:

我需要更改表格以在特定列之后或作为最后一列添加新列,我已经通过文档但没有运气。

【问题讨论】:

  • 向特定列添加新列”是什么意思?
  • 这是一个 Cassandra 概念@PM77-1
  • @PM 77-1 - 我已经编辑了问题,我需要在一些现有列之后添加新列。
  • 你为什么要这个?如果列不是分区或集群键顺序无关紧要......我认为你想要的是不可能的。

标签: cassandra cql alter


【解决方案1】:

假设我从具有以下定义的表开始:

CREATE TABLE mykeyspace.letterstable (
    column_n TEXT,
    column_b TEXT,
    column_c TEXT,
    column_z TEXT,
    PRIMARY KEY (column_n));

1- 添加一列很简单。

ALTER TABLE mykeyspace.letterstable ADD column_j TEXT;

2- 添加新列后,我的表定义将如下所示:

desc table mykeyspace.letterstable;

CREATE TABLE mykeyspace.letterstable (
    column_n TEXT,
    column_b TEXT,
    column_c TEXT,
    column_j TEXT,
    column_z TEXT,
    PRIMARY KEY (column_n));

这是因为 Cassandra 中的列是按 ASCII-betical 顺序存储的,在键之后(所以 column_n 将始终位于第一个,因为它是唯一的键)。我不能告诉 Cassandra 我希望我的新 column_j 去追随 column_z。它将单独放在column_ccolumn_z 之间。

【讨论】:

    【解决方案2】:

    Cassandra 将根据分区和集群键存储表数据。

    用于添加列的标准 CQL:

    ALTER TABLE keyspace.table ADD COLUMN column1 columnType;
    

    通过 CQLSH 为给定表运行 DESC 表并不能描述数据的存储方式。它总是首先列出分区键和集群键;然后是按字母顺序排列的其余列。

    https://docs.datastax.com/en/cql/3.1/cql/cql_reference/alter_table_r.html

    Cassandra create table won't keep column order

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 2013-07-06
      • 2011-12-17
      • 2013-03-07
      • 2021-08-15
      • 2016-09-09
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      相关资源
      最近更新 更多