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.

  • 📦 Trois types: Un ensemble contient des valeurs uniques non ordonnées, une liste préserve l'ordre d'insertion et une carte stocke des paires clé-valeur.
  • 🔤 Définir le comportement : Les éléments sont stockés triés et les doublons sont automatiquement supprimés.
  • (I.e. Avertissement concernant la liste : L'ordre est préservé, mais les opérations d'ajout en début de ligne et d'indexation nécessitent une lecture avant l'écriture.
  • Utilisation de la carte : Une carte convient aux attributs dont les clés ne sont pas connues lors de la conception du schéma.
  • (I.e. Limite de taille : Limitez la taille des collections ; la collection entière est lue même lorsqu’un seul élément est nécessaire.
  • 🧊 Option congelée : Une collection gelée est stockée comme une seule valeur et doit être remplacée intégralement.

Cassandra Carte des ensembles de collections

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:

  1. complet »
  2. Liste
  3. 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.

Exemple de Cassandra Collection de décors

Voici l'instantané où les données sont insérées dans la collection.

Exemple de Cassandra Collection de décors

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 ».

Exemple de Cassandra Collection de liste

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 ».

Exemple de Cassandra Collection de liste

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.

Cassandra Exemple de collection de listes

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.

Exemple de Cassandra Collection de cartes

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.

Exemple de Cassandra 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.

FAQ

Oui, une fois l'index créé. Utilisez CONTAINS pour les valeurs d'ensembles et de listes, et CONTAINS KEY pour les clés de cartes, après avoir créé l'index VALUES, KEYS ou ENTRIES correspondant.

Uniquement si la collection interne est figée, par exemple une association de texte à une liste de texte figée. Une collection non figée ne peut pas contenir une autre collection.

L'affectation d'une nouvelle collection supprime d'abord tous les éléments existants, créant ainsi une trace de suppression. L'ajout et la suppression d'éléments individuels évitent ce problème et constituent la méthode recommandée.

Compte tenu du nombre d'éléments attendu et du modèle de mise à jour, l'IA applique bien la règle : les données limitées et de petite taille privilégient une collection, les données non limitées ou fréquemment interrogées privilégient une colonne de regroupement.

Le plus souvent, il confond les accolades d'ensemble avec les crochets de liste et omet les valeurs figées là où une clé primaire l'exige. Testez d'abord les instructions générées sur un espace de clés de test.

Résumez cet article avec :