Cassandra Коллекции: набор, список и отображение в CQL с примером
⚡ Умное резюме
Cassandra Коллекции хранят несколько значений в одном столбце, используя типы данных set, list и map. На этой странице объясняется каждый тип, синтаксис CQL для их создания и заполнения, как обновлять элементы, а также ограничения по размеру, определяющие, когда коллекция является неподходящим вариантом.

Каковы Cassandra Коллекции?
Cassandra коллекции — хороший способ решения задач. В коллекциях можно хранить несколько элементов. Существуют ограничения в Cassandra коллекции.
- В столбце коллекции не может храниться более 64 КБ данных в одном значении.
- Чтобы избежать накладных расходов на запросы к коллекции, следует использовать небольшой размер коллекции. Ведь даже если нужен всего один элемент, считывается вся коллекция целиком.
- Хранение более 64 КБ данных означает, что запросу подлежат только первые 64 КБ, что приводит к потере данных.
- Незамороженная коллекция ограничена примерно 65 535 элементами, и каждый элемент воспринимается как единое целое.
Эти ограничения указывают на одно правило: коллекции подходят для небольшого количества атрибутов, прикрепленных к строке, а не для неограниченного списка, который растет по мере использования. Все, что постоянно растет, должно быть помещено в кластерные столбцы собственной таблицы.
Виды Cassandra Коллекции
В основном существуют три типа коллекций, которые Cassandra поддерживает:
- Поставьте
- Список
- Карта
Cassandra Установить коллекцию
Set хранит группу элементов, которая возвращает отсортированные элементы при запросе.
Синтаксис
Вот синтаксис коллекции Set, в которой хранятся несколько адресов электронной почты учителя.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Пример
Вот снимок, где создается таблица «Учитель» со столбцом «Электронная почта» в качестве коллекции.
Вот снимок, на котором данные вставляются в коллекцию.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Добавление или удаление отдельных элементов происходит без перезаписи всего набора, что является главным преимуществом сохранения коллекции в незамороженном виде.
UPDATE University.Teacher SET Email = Email + {'new@guru99.com'} WHERE id = 1; UPDATE University.Teacher SET Email = Email - {'xyz@hotmail.com'} WHERE id = 1;
Cassandra Список Коллекция
Когда порядок элементов имеет значение, используется список.
Пример
Вот снимок экрана, на котором в таблицу «Учитель» добавлен столбец «Курсы» в виде списка.
ALTER TABLE University.Teacher ADD coursenames list<text>;
Вот снимок, где данные вставляются в столбец «названия курсов».
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Вот снимок, показывающий текущее состояние базы данных после вставки.
Элементы могут быть добавлены или добавлены в начало, хотя добавление в начало и обновление по индексу требуют Cassandra Сначала нужно прочитать список, что делает этот процесс медленнее, чем добавление элементов.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Коллекция карт
Карта — это тип коллекции, который используется для хранения пар ключ-значение. Как следует из названия, он сопоставляет одно с другим.
Например, если вы хотите сохранить название курса с обязательным названием курса, можно использовать коллекцию карт.
Пример
Вот снимок, на котором создается тип карты для имени курса и имени обязательного курса.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Вот снимок, на котором данные вставляются в тип коллекции карт.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
Отдельная запись устанавливается или удаляется без изменения остальной части карты.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Набор, список или карта: выбор коллекции
Эти три типа кажутся взаимозаменяемыми, но различаются гарантиями заказа и стоимостью обновления.
| Аспект | Поставьте | Список | Карта |
|---|---|---|---|
| Заказать | Отсортировано по значению | Порядок вставки сохранен. | Отсортировано по ключу |
| Дубликаты | Не положено | Разрешено | Уникальные ключи |
| Стоимость обновления | Недорого, читать не нужно | Добавление данных обходится недорого; добавление данных в начало и обновление индекса требуют чтения. | Дешево за ключ |
| лучше всего для | Теги, адреса электронной почты, уникальные метки | Упорядоченные шаги, где дубликаты имеют смысл. | Именованные атрибуты с непредсказуемыми ключами |
Предпочтительнее использовать множество, а не список, если порядок действительно не имеет значения, поскольку операции с индексами в списках создают «надгробные камни» и могут давать неожиданные результаты при одновременной записи. Добавление замороженные В любое из трех хранилищ оно отображается как одно неизменяемое значение, что позволяет коллекции отображаться в качестве первичного ключа, но исключает обновления на уровне элементов.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Если коллекция содержит более нескольких десятков элементов, смоделируйте её как отдельную таблицу, используя элемент в качестве столбца для кластеризации, следуя подходу, описанному в [ссылка на описание]. Cassandra правила модели данныхДля фильтрации по содержимому коллекции необходим индекс, описание которого приведено в соответствующем разделе. создать и удалить индекс учебное пособие.






