Cassandra Пример создания, изменения и очистки таблицы CQL.

⚡ Умное резюме

Cassandra Операции с таблицами включают создание, изменение и удаление.pingа также обрезка семейств столбцов с помощью CQL. На этой странице объясняется каждая команда, три формы первичного ключа, определяющие распределение данных, и различия между удалением строк и удалением таблицы.

  • ???? ️ Создать таблицу: Для работы таблицы необходимы пространство ключей, определения столбцов и условие первичного ключа, определяющее порядок распределения и сортировки.
  • 🔑 Единый первичный ключ: Один столбец выступает в качестве ключа раздела, поэтому каждая строка с этим значением попадает на один и тот же узел.
  • 🧩 Составной первичный ключ: Первый столбец служит для разделения данных, а остальные столбцы группируют и сортируют строки внутри раздела.
  • 🧮 Составной ключ разделов: Установка двух колонн в скобках позволяет разделить слишком большую перегородку на множество меньших.
  • 🇧🇷 Изменить ограничения: Столбцы можно добавлять или удалять, но столбцы первичного ключа изменить нельзя.
  • 🇧🇷 Drop vs Trunate: Команда `drop` удаляет схему и данные; команда `truncate` очищает все строки, но сохраняет определение таблицы.

Cassandra Создать таблицу Изменить Удалить

Синтаксис Cassandra Язык запросов (CQL) похож на SQL язык.

Как создать таблицу в Cassandra

Семейство колонн в Cassandra аналогична таблице РСУБД. Семейство столбцов используется для хранения данных.

Команда «Создать таблицу» используется для создания семейства столбцов в Cassandra.

Синтаксис

CREATE TABLE KeyspaceName.TableName (
    ColumnName DataType,
    ColumnName DataType,
    ColumnName DataType,
    PRIMARY KEY (ColumnName)
) WITH PropertyName = PropertyValue;

1. Первичный ключ: Есть два типа первичный ключ.

  • Единый первичный ключ: Одиночный первичный ключ определяется следующим синтаксисом.

Синтаксис

PRIMARY KEY (ColumnName)

В единственном первичном ключе имеется только один столбец. Этот столбец также называется ключом разделения. Данные секционируются на основе этого столбца. Данные распределяются по разным узлам на основе ключа раздела.

2. Составной первичный ключ: Составной первичный ключ задается следующим синтаксисом.

Синтаксис

PRIMARY KEY (ColumnName1, ColumnName2, ...)

В приведенном выше синтаксисе ColumnName1 — это ключ разделения, а ColumnName2 — это Clustering key. Данные будут разделены на основе ColumnName1, а данные будут кластеризованы на основе ColumnName2. Clustering — это процесс сортировки данных в разделе.

3. Ключ составного разделения: Составной ключ разделения определяется следующим синтаксисом.

Синтаксис

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

В приведенном выше синтаксисе ColumnName1 и ColumnName2 являются составными ключами секционирования. Данные будут секционированы на основе обоих столбцов ColumnName1 и ColumnName2, а кластеризация данных будет производиться на основе ColumnName3. Если данных в одной секции слишком много, используется составной ключ секционирования. Составной ключ секционирования используется для создания нескольких секций для данных.

  • С пунктом

«Предложение With» используется для указания любого свойства и его значения для определенной таблицы. Например, если вы хотите сжать Cassandra Данные таблицы. Вы можете задать свойство сжатия, указав значение свойства алгоритма сжатия в предложении «With». Это же предложение также задает параметр CLUSTERING ORDER BY, который изменяет направление сортировки столбца кластеризации на обратное, и параметр default_time_to_live, который автоматически удаляет каждую строку.

Пример

Вот выполнение команды «Создать таблицу», которая создаст таблицу с именем «Студент» в пространстве ключей «Университет».

Cassandra Создать таблицу

CREATE TABLE University.Student (
    RollNo int,
    Name text,
    dept text,
    PRIMARY KEY (RollNo)
);

После успешного выполнения команды «Создать таблицу» в пространстве ключей «Университет» будет создана таблица «Студент» со столбцами RollNo, Name и dept. RollNo является первичным ключом. RollNo также является ключом раздела, поэтому каждый студент занимает отдельный раздел, состоящий из одной строки.

Cassandra Изменить таблицу

Команда «Изменить таблицу» используется для удаления столбца, добавления нового столбца, изменения имени столбца, изменения типа столбца и изменения свойства таблицы.

Синтаксис

Ниже приведен синтаксис команды «Изменить таблицу».

ALTER TABLE KeyspaceName.TableName
    ADD ColumnName ColumnDataType;

ALTER TABLE KeyspaceName.TableName
    DROP ColumnName;

ALTER TABLE KeyspaceName.TableName
    RENAME ColumnName TO NewColumnName;

ALTER TABLE KeyspaceName.TableName
    WITH PropertyName = PropertyValue;

Каждая форма выдается в виде отдельного заявления. В настоящее время действуют два ограничения. Cassandra В новых версиях: тип данных существующего столбца больше нельзя изменить, а команда RENAME работает только со столбцом кластеризации первичного ключа.

Пример

Вот снимок команды «Изменить таблицу», которая добавит новый столбец в таблицу «Студент».

Cassandra Изменить таблицу

ALTER TABLE University.Student ADD Semester int;

После успешного выполнения команды «Изменить таблицу» в таблицу «Студент» будет добавлен новый столбец «Семестр» с типом данных «int».

Вот снимок экрана, на котором показана обновленная таблица учеников.

Cassandra Изменить таблицу

Cassandra Удалить таблицу

Команда 'Drop table' удаляет указанную таблицу, включая все данные из пространства ключей. Перед удалением...ping стол, Cassandra в качестве резервной копии делает снимок данных, а не схемы.

Синтаксис

DROP TABLE IF EXISTS KeyspaceName.TableName;

Пример

Вот снимок выполненной команды «Удалить таблицу», которая удаляет таблицу «Студент» из пространства ключей «Университет».

Cassandra Удалить таблицу

DROP TABLE University.Student;

После успешного выполнения команды «Drop Table» таблица Student будет удалена из пространства ключей University.

Вот снимок, на котором показана ошибка, возвращаемая Cassandra при попытке доступа к несуществующей таблице учеников.

Cassandra Удалить таблицу

Cassandra Усечь таблицу

Команда «Обрезать таблицу» удаляет все данные из указанной таблицы. Прежде чем сокращать данные, Cassandra принимает снимок данных в качестве резервной копии.

Синтаксис

TRUNCATE KeyspaceName.TableName;

Пример

В таблице Student есть три записи. Это записи в таблице.

Cassandra Усечь таблицу

Вот снимок выполненной команды «Обрезать таблицу», которая удалит все данные из таблицы Student.

Cassandra Усечь таблицу

После успешного выполнения команды «Обрезать таблицу» все данные из таблицы Student будут удалены.

Вот снимок состояния базы данных, где в таблице Student нет записей.

Cassandra Усечь таблицу

Для выполнения команды Truncate необходимо, чтобы все узлы были доступны, поскольку она выполняется одновременно по всему кластеру. Если какой-либо узел недоступен, выполнение команды завершается с ошибкой, что является преднамеренной мерой предосторожности, предотвращающей оставление неполных данных.

Drop vs Trunate vs Delete в Cassandra

Три команды удаляют данные, а выбор неправильной команды либо разрушает схему, либо приводит к проблемам с производительностью.

Command Что оно удаляет Сохраненная схема Стоимость
ТАБЛИЦА ПАРАМЕТРОВ Все строки и определение таблицы Нет Недорого. SSTable-файлы создаются в виде снимков, а затем удаляются.
ОБРЕЗАТЬ Все строки Да Дешево, но требует запуска всех узлов. Надгробия не создаются.
УДАЛИТЬ Выбранные строки или столбцы Да В больших масштабах это дорого. Каждое удаление записывает надгробный камень с надписью «необходимо пропускать до уплотнения».

На практике следует отдавать предпочтение команде TRUNCATE перед пакетным удалением DELETE при очистке всей таблицы, поскольку тысячи удаленных записей замедлят каждое последующее чтение этого раздела. Удаление на уровне строк рассматривается в разделе... Вставка, обновление и удаление с помощью CQL-запросов учебное пособие.

Часто задаваемые вопросы (FAQ)

Нет. Первичный ключ определяет физическое размещение данных, поэтому он фиксируется при создании таблицы. Изменение его означает создание новой таблицы с желаемым ключом и перенос строк из неё.

Добавьте параметр WITH CLUSTERING ORDER BY (ColumnName DESC) при создании таблицы. Установка этого параметра в схеме обходится гораздо дешевле, чем сортировка при каждом чтении запроса.

Нет. Столбец сразу скрывается от запросов, но его данные остаются внутри существующих SSTable-таблиц до тех пор, пока процесс сжатия не перезапишет их. Пространство освобождается постепенно.

Список столбцов корректно преобразуется, но ИИ часто использует суррогатный идентификатор в качестве ключа раздела, что приводит к созданию разделов по одной строке. Переформулируйте запрос так, чтобы для чтения выбирался именно этот ключ.

Да, это применимо к проблемам на уровне шаблонов, таким как отсутствие столбцов кластеризации, неограниченные разделы или столбцы коллекций, которые, вероятно, превысят лимиты. Перед принятием мер необходимо подтвердить соответствие реальной мощности множества.

Подведем итог этой публикации следующим образом: