Вторичные индексы коллекции MAP в Cassandra
В этой статье мы обсудим обзор вторичных индексов в коллекции MAP в Cassandra, а затем выполним упражнение и посмотрим, как оно работает на самом деле, а затем, наконец, придем к выводу о важности вторичных индексов в коллекции MAP. Давайте обсудим это один за другим.
Предварительное условие –
- Концепция индексации в Apache Cassandra
- Тип данных коллекции в Apache Cassandra
Обзор :
Создание вторичных индексов в коллекции MAP в Cassandra очень полезно. Итак, здесь вы увидите реальный вариант использования создания индекса для коллекции, потому что это делает поиск и запрос данных очень эффективным и быстрым. Поэтому, если вы хотите выполнять поиск по ключевому слову, то при поиске и запросе данных вы можете использовать ключевые слова CONTAINS KEY для определенного ключевого слова в типе данных коллекции MAP. В данных коллекции MAP будут храниться пары ключ-значение, и мы будем использовать KEY для поиска данных. Давайте поймем всю концепцию с помощью примеров.
Синтаксис:
Здесь вы увидите синтаксическую часть того, как создать индекс для коллекции. Вы можете использовать приведенную ниже команду следующим образом.
CREATE INDEX ON <table_name>(KEYS<map_column>)
Здесь вы увидите синтаксис части предложения WHERE, где вы будете использовать ключевое слово CONTAINS для поиска определенного значения в коллекции MAP.
WHERE <map_column> CONTAINS KEY <key>
Пример :
Предположим, что у вас есть существующее пространство ключей, а именно 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 map<varchar,varchar>, primary key(user_id) );
Шаг 2: Создание индекса для user_tags —
CREATE INDEX ON user_data (KEYS(user_tags))
Шаг 3: Вставка данных –
insert into user_data(user_id, user_first_name, user_last_name, company, user_tags) values("Ashish01","Ashish","Rana","abc",{"GFG":"Geeks for Geeks","HTML":"HyperText Markup Language"}); insert into user_data(user_id, user_first_name, user_last_name, company, user_tags) values("Ashish02","Ayush","NA","abc",{"GFG":"Geeks for Geeks","IDK":"I Do not Know"}); insert into user_data(user_id, user_first_name, user_last_name, company, user_tags) values("Ashish03","Ayushi","NA","abc",{"FYI":"For Your Information","IDK":"I Do not Know"});
Шаг 4: Проверка и чтение данных –
select * from user_data;
Шаг 5: Выход –
ID пользователя | Компания | user_first_name | user_last_name | user_tags |
---|---|---|---|---|
Ашиш03 | азбука | Аюши | нет данных | {'FYI': 'Для вашего сведения', 'IDK': 'Не знаю'} |
Ашиш02 | азбука | Аюш | нет данных | {'GFG': "Гики для гиков", "IDK": "Не знаю"} |
Ашиш01 | азбука | Ашиш | Рана | {'GFG': «Гики для гиков», «HTML»: «Язык гипертекстовой разметки»} |
Шаг 6: Поиск по определенному ключевому слову –
select * from user_data where user_tags CONTAINS KEY "GFG";
Шаг 7: Выход –
ID пользователя | Компания | user_first_name | user_last_name | user_tags |
---|---|---|---|---|
Ашиш02 | азбука | Аюш | нет данных | {' GFG ': "Гики для гиков", "ИДК": "Не знаю"} |
Ашиш01 | азбука | Ашиш | Рана | {' GFG ': "Гики для гиков", "HTML": "Язык гипертекстовой разметки"} |