如何在Cassandra CQL3中重命名表

时间:2013-08-07 19:41:46

标签: cassandra cql3

我正在尝试重命名通过CQLSH创建的表。 例如。将表“AAA”重命名为“BBB”。找不到任何命令。有什么想法吗?

使用[cqlsh 3.1.6 | Cassandra 1.2.8 | CQL规范3.0.0 |节俭协议19.36.0]

1 个答案:

答案 0 :(得分:27)

我不相信你可以重命名表或键空间,没有CQL3操作来执行它,如果我没记错的话,旧的Thirft接口也没有。

你不能这样做的一个原因是,由于Cassandra的分布式特性,这对于Cassandra来说是一件非常困难的事情,这种改变不能原子地进行,因此集群将处于不一致的状态,并且很有可能更新将丢失。它类似于创建和删除表,但在这些情况下,如果在创建表之前或删除表之后发布更新,则预计会丢失更新。

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