2013-08-07 3 views

ответ

23

Я не верю, что вы можете переименовать таблицы или пространства ключей, для этого нет операции CQL3, и ничто в старых интерфейсах Thirft, если я правильно помню.

Одна из причин, почему вы не можете сделать это, было бы чрезвычайно трудным для Кассандры сделать из-за ее распределенного характера, изменение не может быть выполнено атомарно, поэтому кластер будет находиться в противоречивом состоянии, и большинство вероятные обновления будут потеряны. Это похоже на создание и удаление таблиц, но в тех случаях ожидается, что обновления будут потеряны, если они будут выпущены до создания таблицы или после ее удаления.

Единственный способ, которым я знаю сделать то, что вы просите, - создать новую таблицу и перенести все данные из старого в новое, а затем отбросить старую таблицу. Возможно, есть способ сделать это, не перемещая данные, но, вероятно, вам потребуется остановить кластер и изменить имя всех каталогов и файлов, принадлежащих этой таблице, а также изменить метаданные в таблице system.schema_columnfamilies (но я ' не уверен, что вы даже можете это сделать).

+0

vkroz: Вы попробовали вышеуказанное решение? – Ztyx

+1

Как насчет способа копирования одной таблицы в другую? –

+0

Я знаю, что это удержание, но на случай, если следующий человек наткнется на него ... Лучший способ вставить данные из одной таблицы в другую - это экспортировать данные, а затем импортировать их в следующую таблицу. Если вы переименовываете таблицу, вы должны выполнить экспорт, создать новую таблицу и затем импортировать данные. Вы можете удалить старую таблицу в любое время после экспорта. https://docs.datastax.com/ru/cql/3.1/cql/cql_reference/copy_r.html – ammills01