Cassandra Raccolte: set, elenco e mappa in CQL con esempio
⚡ Riepilogo intelligente
Cassandra Le collezioni memorizzano più valori all'interno di una singola colonna utilizzando i tipi set, list e map. Questa pagina spiega ciascun tipo, la sintassi CQL per crearli e popolarli, come aggiornare gli elementi e i limiti di dimensione che determinano quando una collezione non è la scelta appropriata.

Che cosa sono Cassandra Collezioni?
Cassandra le raccolte sono un buon modo per gestire le attività. È possibile archiviare più elementi in raccolte. Ci sono limitazioni in Cassandra collezioni.
- Una colonna di tipo collezione non può memorizzare più di 64 KB di dati in un singolo valore.
- È importante mantenere le collezioni di dimensioni ridotte per evitare il sovraccarico derivante dalle query, poiché l'intera collezione viene letta anche quando è necessario un solo elemento.
- Memorizzare più di 64 KB significa che è possibile interrogare solo i primi 64 KB, con conseguente perdita di dati.
- Una collezione non congelata è limitata a circa 65,535 elementi, e ogni elemento viene letto insieme come un'unica unità.
Questi limiti indicano una regola: le raccolte sono adatte a pochi attributi associati a una riga, non a un elenco illimitato che cresce con l'utilizzo. Tutto ciò che continua a crescere appartiene alle colonne di clustering di una tabella separata.
Tipi di Cassandra Collezioni
Esistono principalmente tre tipologie di collezioni Cassandra supporta:
- Impostato
- Lista
- Mappa
Cassandra Set collezione
Un Set memorizza un gruppo di elementi che restituisce elementi ordinati durante l'esecuzione di una query.
Sintassi
Ecco la sintassi della raccolta Set che memorizza più indirizzi email dell'insegnante.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Esempio
Ecco l'istantanea in cui la tabella "Insegnante" è creata con la colonna "Email" come raccolta.
Ecco l'istantanea in cui i dati vengono inseriti nella raccolta.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
È possibile aggiungere o rimuovere singoli elementi senza riscrivere l'intero set, e questo è il principale vantaggio di non congelare una collezione.
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 Lista raccolta
Quando l'ordine degli elementi è importante, viene utilizzato l'elenco.
Esempio
Ecco un'istantanea in cui la colonna "corsi" di tipo elenco viene aggiunta alla tabella "Insegnante".
ALTER TABLE University.Teacher ADD coursenames list<text>;
Ecco l'istantanea in cui i dati vengono inseriti nella colonna "coursenames".
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Ecco lo snapshot che mostra lo stato corrente del database dopo l'inserimento.
Gli elementi possono essere aggiunti o anteposti, sebbene l'aggiunta all'inizio e l'aggiornamento tramite indice richiedano entrambi Cassandra prima leggono l'elenco, il che li rende più lenti rispetto all'aggiunta in coda.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Raccolta di mappe
La mappa è un tipo di raccolta utilizzato per archiviare coppie chiave-valore. Come suggerisce il nome, associa una cosa all'altra.
Ad esempio, se si desidera salvare il nome del corso con il nome del corso prerequisito, è possibile utilizzare la raccolta di mappe.
Esempio
Ecco l'istantanea in cui viene creato il tipo di mappa per il nome del corso e il nome del corso prerequisito.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Ecco l'istantanea in cui i dati vengono inseriti nel tipo di raccolta mappe.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
È possibile aggiungere o rimuovere una singola voce senza modificare il resto della mappa.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Set vs Elenco vs Mappa: Scegliere una Collezione
Le tre tipologie sembrano intercambiabili, ma differiscono per le garanzie di ordinazione e i costi di aggiornamento.
| Aspetto | Impostato | Lista | Mappa |
|---|---|---|---|
| Ordinamento | Ordinato per valore | Ordine di inserimento mantenuto | Ordinato per chiave |
| duplicati | Non è permesso | Permesso | Chiavi uniche |
| Costo di aggiornamento | Economico, non è richiesta alcuna lettura | Aggiungi a basso costo; l'aggiornamento dell'anteposto e dell'indice richiede una lettura | Economico per chiave |
| migliori per | Tag, indirizzi email, etichette univoche | Passaggi ordinati in cui i duplicati sono significativi | Attributi denominati con chiavi imprevedibili |
Preferisci un set a una lista a meno che l'ordine non sia davvero importante, perché le operazioni di indice delle liste creano lapidi e possono produrre risultati sorprendenti in caso di scritture concorrenti. congelati in uno qualsiasi dei tre archivia il valore come un unico valore immutabile, il che consente alla collezione di apparire in una chiave primaria ma rimuove gli aggiornamenti a livello di elemento.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Quando una collezione supererebbe alcune dozzine di elementi, modellala come una tabella separata con l'elemento come colonna di clustering, seguendo l'approccio in Cassandra regole del modello dati. Il filtraggio sul contenuto della collezione richiede un indice, trattato in crea e elimina indice tutorial.






