Cassandra Coleções: Definir, listar e mapear em CQL com exemplo
⚡ Resumo Inteligente
Cassandra As coleções armazenam diversos valores em uma única coluna usando os tipos conjunto, lista e mapa. Esta página explica cada tipo, a sintaxe CQL para criá-las e preenchê-las, como atualizar elementos e os limites de tamanho que determinam quando uma coleção é a escolha errada.

Quais são Cassandra Coleções?
Cassandra coleções são uma boa maneira de lidar com tarefas. Vários elementos podem ser armazenados em coleções. Existem limitações em Cassandra coleções.
- Uma coluna de coleção não pode armazenar mais de 64 KB de dados em um único valor.
- Mantenha a coleção pequena para evitar a sobrecarga de consultas, pois a coleção inteira é lida mesmo quando apenas um elemento é necessário.
- Armazenar mais de 64 KB significa que apenas os primeiros 64 KB podem ser consultados, o que resulta em perda de dados.
- Uma coleção descongelada é limitada a aproximadamente 65,535 elementos, e cada elemento é lido em conjunto como uma unidade.
Esses limites apontam para uma regra: coleções são adequadas para um pequeno número de atributos associados a uma linha, e não para uma lista infinita que cresce com o uso. Qualquer coisa que continue crescendo deve ser agrupada em colunas de sua própria tabela.
Tipos de Cassandra Coleções
Existem basicamente três tipos de coleções que Cassandra apoia:
- Conjunto
- Lista
- Mapa
Cassandra Conjunto de coleção
Um conjunto armazena um grupo de elementos que retorna elementos classificados durante a consulta.
Sintaxe
Aqui está a sintaxe da coleção Set que armazena vários endereços de e-mail do professor.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Exemplo
Aqui está o instantâneo onde a tabela “Professor” é criada com a coluna “E-mail” como uma coleção.
Aqui está o instantâneo onde os dados estão sendo inseridos na coleção.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Elementos individuais são adicionados ou removidos sem a necessidade de reescrever todo o conjunto, o que é a principal vantagem de deixar uma coleção não congelada.
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 Coleção List
Quando a ordem dos elementos é importante, a lista é usada.
Exemplo
Aqui está um instantâneo onde a coluna "cursos" do tipo lista foi adicionada à tabela "Professor".
ALTER TABLE University.Teacher ADD coursenames list<text>;
Aqui está o instantâneo onde os dados estão sendo inseridos na coluna “nomes dos cursos”.
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Aqui está o instantâneo que mostra o estado atual do banco de dados após a inserção.
Os elementos podem ser adicionados ao início ou ao fim, embora a adição ao início e a atualização por índice exijam Cassandra primeiro é preciso ler a lista, o que torna o processo mais lento do que adicionar elementos.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Coleção de mapas
O mapa é um tipo de coleção usado para armazenar pares de valores-chave. Como o próprio nome indica, ele mapeia uma coisa para outra.
Por exemplo, se você quiser salvar o nome do curso com o nome do curso pré-requisito, a coleção de mapas poderá ser usada.
Exemplo
Aqui está o instantâneo onde o tipo de mapa é criado para o nome do curso e seu nome de curso pré-requisito.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Aqui está o instantâneo onde os dados estão sendo inseridos no tipo de coleção de mapas.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
Uma única entrada é adicionada ou removida sem afetar o restante do mapa.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Conjunto vs. Lista vs. Mapa: Como Escolher uma Coleção
Os três tipos parecem intercambiáveis, mas diferem nas garantias de encomenda e no custo de atualização.
| Aspecto | Conjunto | Lista | Mapa |
|---|---|---|---|
| Encomendar | Ordenado por valor | Ordem de inserção preservada | Ordenado por chave |
| Duplicatas | Não permitido | Permitido | Chaves únicas |
| Custo da atualização | Barato, sem necessidade de leitura | Acrescentar é barato; adicionar no início e atualizar o índice exigem leitura. | Barato por chave |
| Melhor para | Etiquetas, endereços de e-mail, rótulos exclusivos | Etapas ordenadas onde as duplicatas são significativas | Atributos nomeados com chaves imprevisíveis |
Prefira um conjunto a uma lista, a menos que a ordem seja realmente importante, pois as operações de índice em listas criam marcadores de exclusão (tombstones) e podem produzir resultados inesperados em gravações simultâneas. congelado Em qualquer uma das três opções, o valor é armazenado como um valor imutável, o que permite que a coleção apareça em uma chave primária, mas elimina as atualizações em nível de elemento.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Quando uma coleção ultrapassar algumas dezenas de elementos, modele-a como uma tabela separada com o elemento como uma coluna de agrupamento, seguindo a abordagem descrita em Cassandra regras do modelo de dadosA filtragem com base no conteúdo da coleção requer um índice, abordado em [link para o documento/artigo]. criar e excluir índice tutorial.






