2013-09-16 2 views
21

Мне нужны детали как с точки зрения производительности, так и с запросами, я узнал от сайт, что только ключ может быть задан при использовании columnfamily, если да, что бы вы предложили для моего ключевого пространства, мне нужно использовать группу by, order by , count, sum, ifnull, concat, join и несколько раз вложенные запросы.В чем разница между созданием таблицы и созданием columnfamily в Cassandra?

ответ

37

Чтобы ответить на исходный вопрос, который вы задали: семейство столбцов и стол - одно и то же.

  • Название "column family" использовано в старших Thrift API.
  • Название «таблица» используется в новее CQL API.

Более подробную информацию о API, можно найти здесь: http://wiki.apache.org/cassandra/API

Если нужно использовать «группу по, порядке, граф, сумма, IFNULL, CONCAT, присоединяется и несколько раз вложенных запросов ", как вы заявляете, то вы, вероятно, не хотите использовать Cassandra, поскольку она не поддерживает большинство из них.

CQL поддерживает COUNT, но только до 10000. Он поддерживает ORDER BY, но только при кластеризации ключей. Остальные вещи, о которых вы упоминаете, вообще не поддерживаются.

+0

Не совсем верно, что подсчет поддерживается только до 10 000. Он работает до предела запроса (который по умолчанию равен 10 000, но может быть явно определен). При этом вы, вероятно, не должны использовать его по соображениям производительности. – Aurand

+0

Привет, я ссылался на эту ссылку http://maxgrinev.com/2010/07/12/do-you-really-need-sql-to-do-it-all-in-cassandra/, но группа по ошибке получает ошибку для меня в cqlsh> выберите count (*) из группы event_log по дате, я узнал, что вставка данных в cassandra намного быстрее, чем mysql - это так? – kumar

+1

Это потому, что 'group by' недействителен CQL. Вы не можете запускать произвольные SQL-запросы и ожидать, что они будут работать. – Aurand

-1

Семейство колонок несколько связано с таблицей реляционной базы данных с различиями в распределении и, возможно, даже идеалистическим характером.

У вас есть пользовательский объект, который может содержать 15 столбцов, в реляционной базе данных вы можете разделить столбцы на структуру с небольшим родством на основе столбца, которую все мы знаем как Table. В распределенной db, такой как Cassandra, вы сможете объединить все эти записи таблиц в одну длинную строку, поэтому, если вы будете использовать менеджер профилировщика/db, вы увидите одну таблицу с 15 столбцами вместо 2/3 таблиц. Еще одна интересная вещь заключается в том, что каждое семейство столбцов записывается в разные узлы, возможно, на разных кластерах и распознается ключом строки, что означает, что у вас будет один ключ для всех семейств столбцов и не потребуется поддерживать ПК или FK для каждой таблицы и поддерживать отношения между ними с отношениями 1-1, 1-n, nn. Легко!

1

Направить документ: https://cassandra.apache.org/doc/old/CQL-3.0.html

Он указывает, что LRM в CQL поддерживает ключевое слово TABLE, где ColumnFamily поддерживается.

Это доказательство того, что TABLE и COLUMNFAMILY являются синонимами.

0

В кассандре нет разницы между таблицей и columnfamily. они - одна концепция.

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