2015-08-07 3 views
2

В некоторых примерах есть некоторая неоднородная информация о некоторых примерах, когда тип столбца не может быть изменен. Например, на DataStax site есть упоминание:Cassandra alter column type: какие типы совместимы?

  • Изменение типа столбца кластеризации.
  • Изменение столбцов, на которых определен определенный индекс.

Или, к примеру, here упоминается, что вы не можете преобразовать uuid в timeuuid. И из моего личного опыта я не могу изменить text на timestamp (мы сохраняем даты в формате ISO8601 как текст, неудачное решение на ранней стадии проекта).

Однако я не могу найти полное описание того, какие типы могут быть преобразованы в которые, или, по крайней мере, какие типы не могут преобразовываться в. Кто-нибудь знает?

ответ

4

Отличный вопрос! Я должен признать, что я был немного удивлен отсутствием полной документации по этому вопросу. Ваш вопрос вдохновил меня на небольшое исследование и blog about it.

По существу, здесь полный список Cassandra совместимых типов CQL (с использованием Cassandra 2.2.0):

  • ASCii -> блоб, текст, VARCHAR
  • BIGINT -> блоб, метка времени, varint
  • INT -> блоб, varint
  • текст -> блоб, VARCHAR
  • метки времени -> BigInt, BLOB varint
  • timeuuid -> блоб, UUID
  • VARCHAR -> BLOB, текст

Примечания :

  • blob там много, потому что что-нибудь может быть преобразовано в blob.
  • cqlsh позволяет вам конвертировать varint в новый тип даты, но это ошибка (CASSANDRA-10027). На самом деле не пытайтесь это сделать.
+1

Я с удивлением узнал, что нельзя изменять какой-либо тип в коллекцию этого типа. Для e.q сменить текст на полный список . – Amit

+0

bigint -> timestamp вызывает ошибку «Изменение типов не допускается» в CQLSH 5 и Cassandra 3.11 –

Смежные вопросы