Учебники

8) Создать и удалить ИНДЕКС

Кассандра Создать Индекс

Команда «Создать индекс» создает индекс для столбца, указанного пользователем. Если данные для столбца, который вы хотите проиндексировать, уже существуют, Cassandra создает индексы для данных во время выполнения оператора ‘create index’.

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

Вот почему для фильтрации столбцов в Cassandra необходимо создавать индексы.

Синтаксис

Create index IndexName on KeyspaceName.TableName(ColumnName);

пример

Вот снимок, на котором пытались отфильтровать столбец «dept» без создания индекса. В ответ ошибка была возвращена.

Создание и удаление ИНДЕКС в Кассандре: полное руководство

Вот снимок, где создается индекс для столбца dept.

Создание и удаление ИНДЕКС в Кассандре: полное руководство

Create index DeptIndex on University.Student(dept);

Вот снимок, где будет успешно отфильтрован столбец «dept».

Создание и удаление ИНДЕКС в Кассандре: полное руководство

select * from University.Student where dept='CS';

Cassandra Drop Index

Команда «Удалить индекс» удаляет указанный индекс. Если имя индекса не было задано при создании индекса, то имя индекса — TableName_ColumnName_idx.

  • Если индекс не существует, он вернет ошибку, если не используется IF EXISTS, которая вернет no-op.
  • Во время создания индекса вы должны указать имя пространства ключей вместе с именем индекса, иначе индекс будет удален из текущего пространства ключей.

Синтаксис

Drop index IF EXISTS KeyspaceName.IndexName 

пример

Вот снимок выполненной команды «Удалить индекс», которая удаляет индекс DeptIndex.

Создание и удаление ИНДЕКС в Кассандре: полное руководство

drop index IF EXISTS University.DeptIndex;

После успешного выполнения команды DeptIndex будет удален из пространства ключей. Теперь данные не могут быть отфильтрованы по столбцу Dept.