web-dev-qa-db-ja.com

Cassandra CQL3でテーブルの名前を変更する方法

CQLSHで作成したテーブルの名前を変更しようとしています。例えば。テーブル「AAA」の名前を「BBB」に変更します。そのためのコマンドが見つかりません。何か案は?

[cqlsh 3.1.6 | Cassandra 1.2.8 | CQL仕様3.0.0 | Thriftプロトコル19.36.0]

22
Vladimir Kroz

私が正しく覚えていれば、テーブルやキースペースの名前を変更できるとは思えません。それを行うためのCQL3操作はなく、古いThirftインターフェースにも何もありません。

これができない理由の1つは、Cassandraはその分散された性質のために行うのが非常に難しいことです。変更をアトミックに行うことができないため、クラスターは一貫性のない状態であり、更新が失われる可能性が最も高いです。これは、テーブルの作成と削除に似ていますが、そのような場合、テーブルが作成される前または削除された後に更新が発行されると、更新が失われることが予想されます。

私が知っている唯一の方法は、新しいテーブルを作成し、すべてのデータを古いテーブルから新しいテーブルに移動して、古いテーブルを削除することです。データを移動せずにそれを行う方法があるかもしれませんが、おそらくクラスターを停止し、テーブルに属するすべてのディレクトリとファイルの名前を変更し、system.schema_columnfamiliesテーブルのメタデータも変更する必要があります(しかし、それができるかどうかはわかりません)。

29
Theo