【发布时间】:2013-08-09 08:39:26
【问题描述】:
我正在尝试重命名通过 CQLSH 创建的表。 例如。将表“AAA”重命名为“BBB”。找不到任何命令来执行此操作。有什么想法吗?
使用 [cqlsh 3.1.6 |卡桑德拉 1.2.8 | CQL 规范 3.0.0 | Thrift 协议 19.36.0]
【问题讨论】:
我正在尝试重命名通过 CQLSH 创建的表。 例如。将表“AAA”重命名为“BBB”。找不到任何命令来执行此操作。有什么想法吗?
使用 [cqlsh 3.1.6 |卡桑德拉 1.2.8 | CQL 规范 3.0.0 | Thrift 协议 19.36.0]
【问题讨论】:
如果我没记错的话,我不相信您可以重命名表或键空间,没有 CQL3 操作可以这样做,而且旧的 Thirft 接口中也没有。
您不能这样做的一个原因是,由于 Cassandra 的分布式特性,这将是一件极其困难的事情,更改不能以原子方式完成,因此集群将处于不一致状态,并且很可能更新将丢失。它类似于创建和删除表,但在这些情况下,如果在创建表之前或删除表之后发布更新,则预计会丢失。
据我所知,按照您的要求进行操作的唯一方法是创建新表并将所有数据从旧表移至新表,然后删除旧表。可能有一种方法可以在不移动数据的情况下执行此操作,但它可能需要您停止集群并更改属于该表的所有目录和文件的名称,并更改 system.schema_columnfamilies 表中的元数据(但我不确定你是否能做到这一点)。
【讨论】: