28

我正在尝试重命名通过 CQLSH 创建的表。例如,将表“AAA”重命名为“BBB”。找不到任何命令来执行此操作。有任何想法吗?

使用 [cqlsh 3.1.6 | 卡桑德拉 1.2.8 | CQL 规范 3.0.0 | 节俭协议 19.36.0]

4

1 回答 1

36

如果我没记错的话,我不相信您可以重命名表或键空间,没有 CQL3 操作可以做到这一点,旧的 Thirft 接口中也没有任何内容。

您不能这样做的一个原因是,由于 Cassandra 的分布式特性,这将是一件极其困难的事情,更改不能以原子方式完成,因此集群将处于不一致状态,并且很可能更新将是丢失的。它类似于创建和删除表,但在这些情况下,如果在创建表之前或删除表之后发出更新,则预计会丢失更新。

我知道按照您的要求做的唯一方法是创建新表并将所有数据从旧表移动到新表,然后删除旧表。可能有一种方法可以在不移动数据的情况下做到这一点,但它可能需要您停止集群并更改属于该表的所有目录和文件的名称,并更改表中的元数据system.schema_columnfamilies(但我不确定你甚至可以做到这一点)。

于 2013-08-07T20:21:18.093 回答