Cassandra Sammlungen: Set, List & Map in CQL mit Beispiel
⚡ Intelligente Zusammenfassung
Cassandra Sammlungen speichern mehrere Werte in einer einzigen Spalte mithilfe der Datentypen Set, Liste und Map. Diese Seite erläutert die einzelnen Datentypen, die CQL-Syntax zum Erstellen und Befüllen, das Aktualisieren von Elementen sowie die Größenbeschränkungen, die darüber entscheiden, wann eine Sammlung nicht die richtige Wahl ist.

Was sind Cassandra Sammlungen?
Cassandra Sammlungen sind eine gute Möglichkeit, Aufgaben zu erledigen. In Sammlungen können mehrere Elemente gespeichert werden. Es gibt Einschränkungen in Cassandra Sammlungen.
- Eine Sammlungsspalte kann nicht mehr als 64 KB Daten in einem einzelnen Wert speichern.
- Um den Aufwand für Abfragen der gesamten Sammlung zu vermeiden, sollte diese klein gehalten werden, da die gesamte Sammlung gelesen wird, selbst wenn nur ein einziges Element benötigt wird.
- Wenn mehr als 64 KB gespeichert werden, können nur die ersten 64 KB abgefragt werden, was zu Datenverlusten führt.
- Eine nicht eingefrorene Sammlung ist auf etwa 65,535 Elemente begrenzt, und jedes Element wird als eine Einheit gelesen.
Diese Einschränkungen verdeutlichen eine Regel: Sammlungen eignen sich für wenige Attribute, die einer Zeile zugeordnet sind, nicht aber für offene Listen, die mit der Nutzung wachsen. Alles, was stetig wächst, gehört in separate Clusterspalten einer eigenen Tabelle.
Arten von Cassandra Kollektionen
Es gibt hauptsächlich drei Arten von Sammlungen Cassandra unterstützt:
- Stelle den
- Liste
- Karte
Cassandra Set-Kollektion
Ein Set speichert eine Gruppe von Elementen, die bei der Abfrage sortierte Elemente zurückgeben.
Syntax
Hier ist die Syntax der Set-Sammlung, die mehrere E-Mail-Adressen für den Lehrer speichert.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Beispiel
Hier ist der Schnappschuss, in dem die Tabelle „Lehrer“ mit der Spalte „E-Mail“ als Sammlung erstellt wird.
Hier ist der Schnappschuss, in dem Daten in die Sammlung eingefügt werden.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Einzelne Elemente können hinzugefügt oder entfernt werden, ohne dass das gesamte Set neu geschrieben werden muss. Dies ist der Hauptvorteil, wenn eine Sammlung nicht eingefroren wird.
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 Auflistung der Listen
Wenn die Reihenfolge der Elemente wichtig ist, wird die Liste verwendet.
Beispiel
Hier sehen Sie eine Momentaufnahme, in der die Spalte „Kurse“ vom Typ „Liste“ in die Tabelle „Lehrer“ eingefügt wurde.
ALTER TABLE University.Teacher ADD coursenames list<text>;
Hier ist der Schnappschuss, in dem Daten in die Spalte „Kursnamen“ eingefügt werden.
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Hier ist der Snapshot, der den aktuellen Datenbankstatus nach dem Einfügen zeigt.
Elemente können angehängt oder vorangestellt werden, wobei sowohl das Voranstellen als auch das Aktualisieren per Index eine Operation erfordern. Cassandra Die Liste muss zuerst gelesen werden, was langsamer ist als das Anhängen.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Kartensammlung
Die Karte ist ein Sammlungstyp, der zum Speichern von Schlüssel-Wert-Paaren verwendet wird. Wie der Name schon sagt, ordnet es eine Sache einer anderen zu.
Wenn Sie beispielsweise den Namen des Kurses zusammen mit dem Namen des erforderlichen Kurses speichern möchten, kann die Kartensammlung verwendet werden.
Beispiel
Hier ist der Schnappschuss, in dem der Kartentyp für den Kursnamen und den Namen des erforderlichen Kurses erstellt wird.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Hier ist der Schnappschuss, in dem Daten in den Kartensammlungstyp eingefügt werden.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
Ein einzelner Eintrag wird gesetzt oder entfernt, ohne den Rest der Karte zu verändern.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Menge vs. Liste vs. Karte: Die Wahl einer Sammlung
Die drei Typen sehen austauschbar aus, unterscheiden sich aber in den Bestellgarantien und den Aktualisierungskosten.
| Aspekt | Stelle den | Liste | Karte |
|---|---|---|---|
| Bestellung | Sortiert nach Wert | Einfügereihenfolge beibehalten | Sortiert nach Schlüssel |
| Duplikate | Nicht erlaubt | Erlaubt | Schlüssel einzigartig |
| Aktualisierungskosten | Günstig, kein Lesen erforderlich | Anhängen ist günstig; Voranstellen und Indexaktualisierung erfordern einen Lesevorgang. | Günstig pro Schlüssel |
| am besten für | Tags, E-Mail-Adressen, eindeutige Etiketten | Geordnete Schritte, bei denen Duplikate sinnvoll sind | Benannte Attribute mit unvorhersehbaren Schlüsseln |
Verwenden Sie ein Set anstelle einer Liste, es sei denn, die Reihenfolge ist wirklich wichtig, da Indexoperationen auf Listen zu Tombstone-Operationen führen und bei gleichzeitigen Schreibvorgängen unerwartete Ergebnisse liefern können. eingefroren Bei allen drei Speichertypen wird die Sammlung als ein einziger unveränderlicher Wert gespeichert, wodurch die Sammlung zwar als Primärschlüssel erscheinen kann, Aktualisierungen auf Elementebene jedoch entfernt werden.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Wenn eine Sammlung mehr als einige Dutzend Elemente umfasst, modellieren Sie sie als separate Tabelle, wobei das Element als Clusterspalte verwendet wird, gemäß dem Ansatz in [Referenz einfügen]. Cassandra DatenmodellregelnDas Filtern von Sammlungsinhalten erfordert einen Index, der im Folgenden beschrieben wird. Index erstellen und löschen Tutorial.






