2012-06-22 14 views
4

Я довольно новичок в Кассандре, только что начал изучать Кассандру неделю назад. Я сначала прочитал, что это был NoSQL, но когда я начал использовать CQL, , я начал задаваться вопросом, является ли Cassandra NoSQL или SQL DB?Cassandra CQL - NoSQL или SQL

Может кто-нибудь объяснить, почему CQL более или менее похож на SQL?

+0

Может ли кто-нибудь помочь с синтаксисом, указав общее количество ключей, семейство столбцов в ... like показывать данные; показать таблицы; – MAHI

+0

дали решение для этого в моем ответе – Tamil

ответ

3

Для всех намерений и целей , CQL is SQL, поэтому в строгом смысле Cassandra - база данных SQL. Тем не менее, большинство людей тесно связывают SQL с relational databases, к которому обычно применяется. В соответствии с этой (неверной) интерпретацией Cassandra не следует рассматривать как «базу данных SQL», поскольку она не является реляционной и не поддерживает свойства ACID.

+0

Да, но только на минимальном минимальном пути; см. мой ответ ниже. –

4

Docs for CQLV3.0

CQL DESCRIBE получить схему keyspace, column family, cluster

CQL Не поддерживает некоторые товары, которых я знал в SQL, как joinsgroup bytriggerscursorsproceduretransactionsstored procedures

CQL3 .0 Поддерживает ORDER BY

CQL Поддерживает все DML и DDL функциональные

CQL Поддержка BATCH

BATCH is not an analogue for SQL ACID transactions. 

Только DOC упоминалось выше, является лучшей рекомендацией :)

+0

спасибо за быстрый ответ :) – MAHI

26

CQL является декларативным, как SQL, а сама базовая структура компонента запроса языка (выберите вещи, где условие) - то же самое. Но есть достаточно различий, которые нельзя использовать с ним так же, как обычный SQL.

Очевидные предметы: 1. Нет объединений или подзапросов. 2. Нет сделки

Менее очевидны, но не менее важно отметить:

  1. для первичного ключа Кроме этого, вы можете применить только WHERE условия на колонке, если вы создали индекс по этому столбцу. В SQL вам не нужно индексировать столбец для фильтрации на нем, но на CQL оператор select будет работать без сбоев.
  2. Нет логических операторов OR или NOT, только AND. Очень важно моделировать ваши данные, чтобы вам не нужны эти два; это очень легко случайно забыть.
  3. Обработка данных существенно отличается. CQL допускает ТОЛЬКО равный оператор для временных меток, поэтому чрезвычайно распространенные и полезные выражения, подобные этому, не работают: where dateField > TO_TIMESTAMP('2013-01-01','YYYY-MM-DD') Кроме того, CQL не позволяет вводить строки с точностью до миллиса (только секунды), но это позволяет вводить миллисеты с эпохи как длинный int - который большинство других БД-модулей НЕ разрешают. Наконец, часовой пояс (как смещение по GMT) невидимо захватывается как для длинного миллисекунда, так и для строковых форматов без часового пояса.Это может привести к путанице для тех систем, которые намеренно не перекрывают местное время + GMT.
  4. Вы можете ТОЛЬКО обновлять таблицу на основе первичного ключа (или списка первичных ключей IN). Вы не можете обновлять данные на основе других данных столбца и не можете выполнять массовое обновление следующим образом: update table set field = value; CQL требует предложения where с первичным ключом.
  5. Грамматика для И не разрешает парсеры. Чтобы быть справедливыми, это не обязательно из-за отсутствие оператора OR, но это означает, что традиционный rewriters SQL, которые добавляют «защитную» скобку вокруг выражения не будет работать с CQL, например: select * from www where (str1 = 'foo2') and (dat1 = 12312442);

В общем, лучше всего использовать Cassandra как большую, устойчивую высоту данных, для которой небольшое количество очень высокого уровня, очень высокопроизводительные запросы могут быть применены для перетаскивания подмножества данных для работы на прикладном уровне. Это подмножество может составлять 1 миллион строк, да. CQL и модель Cassandra не предназначены для операторов SELECT на 2 страницы со встроенными случаями, скоплениями и т. Д.

+1

Обработка данных теперь возможна на CQL3, если у вас есть метка времени как часть составного ключа. Этот пример объясняет это: http://www.datastax.com/dev/blog/whats-new-in-cql-3-0 – odedfos

+0

# 3 теперь возможно в Casandra версии 3 и более – JVK