2013-07-08 2 views
43

Кто-нибудь знает разницу между двумя типами данных CQL text и varchar в Кассандре? Документация Cassandra описывает оба типа как «кодированная строка UTF-8» и не более того.Кассандра: текст vs varchar

+0

Вы можете указать ссылку на документацию? Я никогда не слышал об этом. Однако я слышал об AsciiType и UTF8Type, различия между которыми должны быть очевидны. –

+0

@baba Это имена, используемые CQL3. – Raedwald

+0

да, мне потребовалось некоторое время, но я понял :) –

ответ

49

text - это просто псевдоним для varchar!

Документация:

EDIT
Вот ссылка на C* 1.2 docs. Текст vs varchar info все тот же, однако этот документ содержит некоторые дополнительные типы данных.

+2

Можете ли вы указать, где вы обнаружили, что ТЕКСТ является псевдонимом VARCHAR?Не удается найти его ни в одной из указанных ссылок. – analogue

+0

Ctrl + F для «псевдонима» не даст желаемого ответа. Найдите «информацию о родных типах данных» в документации CQL3 Documentation - Apache, и вы увидите описание как varchar, так и текста, они идентичны. Также [это] (http://www.thefreedictionary.com/Aliases) –

+0

@analogue [О типах данных] (http://docs.datastax.com/en/cassandra/1.2/cassandra/tools/use_about_data_types_c.html) говорит, что внутренний 'UTF8Type' соответствует CQL-названию' text, varchar', который я бы назвал псевдонимами. – karmakaze

9

Возможно, вы имели в виду типы хранения CQL, если нет, игнорируйте мой ответ.

В CQL наблюдается постоянная тенденция к удалению от внутренних частей кассандры. Хорошо ли это, или плохое, открыто для интерпретации. Однако актуальность заключается в том, что в последних версиях разработчики CQL пытались придумать синтаксис, который более известен тем, кто не настолько углублен в внутренности cassandra.

Если бы вы посмотрите в этот СЦ вопрос, вы получите хорошую иллюстрацию ситуации: Creating column family or table in Cassandra while working Datastax API(which uses new Binary protocol)

В последних версиях CQL некоторые псевдонимы, чуждые Кассандрой, но очень хорошо известно, что АБД начали появляться. Например, родной для cassandra ColumnFamily был псевдоним с таблицей, а текст - просто псевдоним для varchar и наоборот. Опять же, это мнение, если это хорошо или нет.

Итак, в заключение вы можете использовать varchar и текст взаимозаменяемо.

3

Это тоже бросило меня, когда я начал с Кассандры.

Оба текста и varchar являются закодированными строками UTF8 и являются синонимами друг для друга, то есть они являются точно такими же.

В качестве дополнительной заметки, если речь идет о реляционном мире, таком как MS SQL, можно было бы также не решаться использовать эти типы (особенно ТЕКСТ) в качестве основного поля для объекта. TEXT особенно обычно ассоциируется с большими блоками текстового контента, которые не кричат ​​первичным ключом на 3-й нормальный реляционный разум. Но так как все типы Cassandra по существу хранятся как шестнадцатеричные байт-массивы на диске, при использовании их в качестве первичного ключа нет реальной значимой производительности.

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