Мне нужны подробности как с точки зрения производительности, так и с точки зрения запросов, я узнал на каком-то сайте, что при использовании семейства столбцов может быть указан только ключ, если да, что бы вы предложили для моего пространства ключей, мне нужно использовать group by , порядок, количество, сумма, ifnull, concat, соединения и иногда вложенные запросы.
В чем разница между созданием таблицы и созданием семейства столбцов в Cassandra?
Ответы (6)
Чтобы ответить на исходный вопрос, который вы поставили: семейство столбцов и таблица - это одно и то же.
- Название «семейство столбцов» использовалось в более ранней версии Thrift API.
- Имя "таблица" используется в более новом CQL API.
Дополнительную информацию об API можно найти здесь: http://wiki.apache.org/cassandra/API.
Если вам нужно использовать "группировать по, упорядочивать по, подсчету, сумме, ifnull, concat, соединениям и иногда вложенным запросам", как вы говорите, то, вероятно, вы этого не сделаете. хочу использовать Cassandra, так как она не поддерживает большинство из них.
CQL поддерживает COUNT
, но только до 10000. Он поддерживает ORDER BY
, но только для ключей кластеризации. Другие вещи, которые вы упомянули, вообще не поддерживаются.
group by
не является допустимым CQL. Вы не можете просто запускать случайные операторы SQL и ожидать, что они сработают.
- person Aurand; 17.09.2013
В cassandra нет разницы между таблицей и семейством столбцов. они являются одним понятием.
Обратитесь к документу: https://cassandra.apache.org/doc/old/CQL-3.0.html
Он указывает, что LRM CQL поддерживает ключевое слово TABLE везде, где поддерживается COLUMNFAMILY.
Это доказательство того, что TABLE и COLUMNFAMILY являются синонимами.
Для Cassandra 3+ и cqlsh 5.0.1
Чтобы проверить, введите приглашение cqlsh в пространстве ключей (ksp):
CREATE COLUMNFAMILY myTable (
... id text,
... name int
);
И введите desc myTable.
Вы увидите:
CREATE TABLE ksp.myTable (
... id text,
... name int
);
Это синонимы, и Cassandra по умолчанию использует таблицу.
вот небольшой пример, чтобы понять концепцию. Ключевое пространство — это объект, который содержит семейства столбцов, определяемые пользователем типы.
Создайте университет пространства ключей с replication={'class':SimpleStrategy, 'replication_factor': 3};
создать таблицу University.student (прокрутить первичный ключ, текст отдела, текст имени, целое число семестра)
«Создать таблицу», таблица «Студент» будет создана в пространстве ключей «Университет» со столбцами RollNo, Name и dept. RollNo — первичный ключ. RollNo также является ключом раздела. Все данные будут в одном разделе.
Ключевые аспекты при изменении Keyspace в Cassandra
Имя пространства ключей: имя пространства ключей нельзя изменить в Cassandra.
Имя стратегии: название стратегии можно изменить, указав новое имя стратегии.
Коэффициент репликации. Коэффициент репликации можно изменить, указав новый коэффициент репликации. DURABLE_WRITES: значение DURABLE_WRITES можно изменить, указав значение true/false. По умолчанию это правда. Если установлено значение false, никакие обновления не будут записываться в журнал коммитов и наоборот.
Выполнение: вот снимок выполненной команды Alter Keyspace, которая изменяет стратегию пространства ключей с SimpleStrategy на NetworkTopologyStrategy и коэффициент репликации с 3 на 1 для DataCenter1.
Семейство столбцов несколько связано с таблицей реляционной базы данных, с различиями в распределении и, возможно, даже идеалистическим характером.
Представьте, что у вас есть пользовательский объект, который может содержать 15 столбцов, в реляционной базе данных вы можете разделить столбцы на структуру на основе небольших связанных столбцов, которую мы все знаем как таблицу. В распределенной базе данных, такой как Cassandra, вы сможете объединить все эти записи таблиц в одну длинную строку, поэтому, если вы будете использовать менеджер профилей/базы данных, вы увидите одну таблицу с 15 столбцами вместо 2/3 таблиц. Еще одна интересная вещь заключается в том, что каждое семейство столбцов записывается в разные узлы, возможно, в разные кластеры, и распознается по ключу строки, а это означает, что у вас будет один ключ для всех семейств столбцов, и вам не нужно будет поддерживать PK или FK для каждой таблицы и поддерживать отношения между ними с отношениями 1-1, 1-n, n-n. Легко!