Cassandra Collections : ensemble, liste et carte en CQL avec exemple
⚡ Résumé intelligent
Cassandra Les collections permettent de stocker plusieurs valeurs dans une seule colonne, en utilisant les types ensemble, liste et map. Cette page explique chaque type, la syntaxe CQL pour les créer et les remplir, comment mettre à jour les éléments et les limites de taille qui déterminent quand une collection n'est pas adaptée.

Quels sont Cassandra Collections ?
Cassandra les collections sont un bon moyen de gérer les tâches. Plusieurs éléments peuvent être stockés dans des collections. Il y a des limites dans Cassandra collections.
- Une colonne de collection ne peut pas stocker plus de 64 Ko de données dans une seule valeur.
- Limitez la taille de votre collection pour éviter la surcharge liée à l'interrogation de celle-ci, car la collection entière est lue même lorsqu'un seul élément est nécessaire.
- Stocker plus de 64 Ko signifie que seuls les 64 premiers Ko peuvent être interrogés, ce qui entraîne une perte de données.
- Une collection dégelée est limitée à environ 65 535 éléments, et chaque élément est lu comme une seule unité.
Ces limites mettent en évidence une règle : les collections conviennent à un nombre restreint d’attributs associés à une ligne, et non à une liste infinie qui s’allonge avec l’utilisation. Tout élément qui continue de croître doit être placé dans les colonnes de regroupement d’une table dédiée.
Types d' Cassandra Collections
Il existe principalement trois types de collections Cassandra les soutiens:
- complet »
- Liste
- Carte
Cassandra Collection de décors
Un ensemble stocke un groupe d'éléments qui renvoie des éléments triés lors de l'interrogation.
Syntaxe
Voici la syntaxe de la collection Set qui stocke plusieurs adresses email pour l'enseignant.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Exemple
Voici l'instantané où la table « Enseignant » est créée avec la colonne « E-mail » en tant que collection.
Voici l'instantané où les données sont insérées dans la collection.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Des éléments individuels peuvent être ajoutés ou supprimés sans réécrire l'ensemble du code, ce qui constitue le principal avantage de laisser une collection non figée.
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 Collection de liste
Lorsque l’ordre des éléments compte, la liste est utilisée.
Exemple
Voici une capture d'écran où la colonne « cours » de type liste a été ajoutée au tableau « Enseignant ».
ALTER TABLE University.Teacher ADD coursenames list<text>;
Voici l'instantané où les données sont insérées dans la colonne « noms de cours ».
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Voici l'instantané qui montre l'état actuel de la base de données après l'insertion.
Les éléments peuvent être ajoutés au début ou à la fin, bien que l'ajout au début et la mise à jour par index nécessitent tous deux une opération. Cassandra lire d'abord la liste, ce qui les rend plus lentes que l'ajout de contenu.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Collection de cartes
La carte est un type de collection utilisé pour stocker des paires clé-valeur. Comme son nom l’indique, il mappe une chose à une autre.
Par exemple, si vous souhaitez enregistrer le nom du cours avec son nom de cours préalable, la collection de cartes peut être utilisée.
Exemple
Voici l'instantané où le type de carte est créé pour le nom du cours et son nom de cours préalable.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Voici l'instantané où les données sont insérées dans le type de collection de cartes.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
Une seule entrée est ajoutée ou supprimée sans affecter le reste de la carte.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Ensemble, liste ou carte : choisir une collection
Les trois types semblent interchangeables, mais diffèrent en termes de garanties de commande et de coût des mises à jour.
| Aspect | complet » | Liste | Carte |
|---|---|---|---|
| Passation de commande | Trié par valeur | Ordre d'insertion préservé | Trié par clé |
| Doublons | Non autorisé | Autorisé | Clés uniques |
| Coût de la mise à jour | Pas cher, aucune lecture requise | L'ajout est peu coûteux ; l'ajout en préfixe et la mise à jour de l'index nécessitent une lecture. | Prix abordable par clé |
| Meilleur pour | Étiquettes, adresses e-mail, étiquettes uniques | Étapes ordonnées où les doublons sont significatifs | Attributs nommés avec des clés imprévisibles |
Privilégiez un ensemble à une liste, sauf si l'ordre a réellement une importance, car les opérations d'indexation sur les listes créent des marqueurs de suppression et peuvent produire des résultats surprenants en cas d'écritures simultanées. gelé L'une des trois méthodes stocke la valeur sous forme d'une valeur immuable, ce qui permet à la collection d'apparaître dans une clé primaire mais supprime les mises à jour au niveau des éléments.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Lorsqu'une collection dépasse quelques dizaines d'éléments, modélisez-la comme une table distincte avec l'élément comme colonne de regroupement, en suivant l'approche décrite dans le Cassandra règles du modèle de donnéesLe filtrage du contenu d'une collection nécessite un index, traité dans la section suivante : créer et supprimer un index tutoriel.






