Вторичные индексы в коллекции LIST в Cassandra

Опубликовано: 28 Августа, 2022

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

Предварительное условие –

  • Концепция индексации в Apache Cassandra
  • Тип данных коллекции в Apache Cassandra

Обзор :
Создание вторичных индексов в коллекции LIST в Cassandra очень полезно. Итак, здесь вы увидите реальный вариант использования создания индекса для коллекции, потому что это делает поиск и запрос данных очень эффективным и быстрым. Поэтому, если вы хотите выполнять поиск по ключевому слову, то при поиске и запросе данных вы можете использовать ключевые слова CONTAINS для определенного ключевого слова в типе данных коллекции LIST. Давайте поймем всю концепцию с помощью примеров.

Синтаксис:
Здесь вы увидите синтаксическую часть того, как создать индекс для коллекции. Вы можете использовать приведенную ниже команду следующим образом.

CREATE INDEX ON <table_name>(<collection_column>)

Здесь вы увидите синтаксис части предложения WHERE, где вы будете использовать ключевое слово CONTAINS для поиска определенного значения в коллекции LIST.

WHERE <collection_column> CONTAINS <value>

Пример :
Предположим, что у вас есть существующее пространство ключей, а именно cluster1, а затем сначала мы создадим таблицу user_data с помощью команды CQL следующим образом.

Шаг 1: Создание таблицы -user_data –

use cluster1;
create table user_data
           (
           user_id varchar,
           user_first_name varchar,
           user_last_name varchar,
           company varchar,
           user_tags list<varchar>,
           primary key(user_id)
           );

Шаг 2: Создание индекса для user_tags –

CREATE INDEX ON user_data(user_tags);

Шаг 3: Вставка данных –

insert into user_data(user_id, user_first_name, user_last_name, company, user_tags)
values("Ashish01","Ashish","Rana","abc",["Java","python", "c++"]);

insert into user_data(user_id, user_first_name, user_last_name, company, user_tags)
values("Ashish02","Ayush","NA","abc",["Python","java"]);

insert into user_data(user_id, user_first_name, user_last_name, company, user_tags)  
values("Ashish03","Ayushi","NA","abc",["Python","c++","Java"]);

Шаг 4: Проверка и чтение данных –

select * from user_data;

Шаг 5: Выход –

ID пользователя Компания user_first_name user_last_name user_tags
Ашиш03 азбука Аюши нет данных ['Питон', 'С++', 'Ява']
Ашиш02 азбука Аюш нет данных ['Питон', 'Ява']
Ашиш01 азбука Ашиш Рана ['Ява', 'питон', 'С++']

Шаг 6: Поиск по определенному ключевому слову —

select * from user_data where user_tags CONTAINS "Java";

Шаг 7: Выход –

ID пользователя Компания user_first_name user_last_name user_tags
Ашиш03 азбука Аюши нет данных ['Питон', 'С++', 'Ява']
Ашиш01 азбука Ашиш Рана ['Ява', 'питон', 'С++']