Cassandra CQL-Tabelle: Beispiel zum Erstellen, Ändern und Kürzen

⚡ Intelligente Zusammenfassung

Cassandra Tabellenoperationen umfassen Erstellen, Ändern und Löschen.pingund das Kürzen von Spaltenfamilien mit CQL. Diese Seite erläutert jeden Befehl, die drei Primärschlüsselformen, die die Datenverteilung bestimmen, und die Unterschiede zwischen dem Entfernen von Zeilen und dem Entfernen einer Tabelle.

  • ???? ️ Tabelle erstellen: Eine Tabelle benötigt einen Keyspace, Spaltendefinitionen und eine Primärschlüsselklausel, die die Verteilung und Sortierreihenfolge festlegt.
  • 🔑 Einzelner Primärschlüssel: Eine Spalte dient als Partitionsschlüssel, sodass jede Zeile mit diesem Wert auf demselben Knoten landet.
  • 🧩 Zusammengesetzter Primärschlüssel: Die erste Spalte partitioniert die Zeilen, die übrigen Spalten gruppieren und sortieren die Zeilen innerhalb der Partition.
  • 🧮 Zusammengesetzter Partitionsschlüssel: Durch das Einschließen zweier Spalten wird eine zu große Partition in viele kleinere aufgeteilt.
  • Grenzen ändern: Spalten können hinzugefügt oder entfernt werden, Primärschlüsselspalten hingegen können niemals verändert werden.
  • 🗑️ Verwerfen vs. Abschneiden: Drop entfernt Schema und Daten; Truncate leert jede Zeile, behält aber die Tabellendefinition bei.

Cassandra Tabelle erstellen Ändern Löschen

Die Syntax von Cassandra Die Abfragesprache (CQL) ähnelt SQL Sprache.

So erstellen Sie eine Tabelle in Cassandra

Spaltenfamilie in Cassandra ähnelt der RDBMS-Tabelle. Die Spaltenfamilie wird zum Speichern von Daten verwendet.

Der Befehl „Tabelle erstellen“ wird zum Erstellen einer Spaltenfamilie verwendet Cassandra.

Syntax

CREATE TABLE KeyspaceName.TableName (
    ColumnName DataType,
    ColumnName DataType,
    ColumnName DataType,
    PRIMARY KEY (ColumnName)
) WITH PropertyName = PropertyValue;

1. Primärschlüssel: Es gibt zwei Arten von Primärschlüssel.

  • Einzelner Primärschlüssel: Ein einzelner Primärschlüssel wird durch die folgende Syntax angegeben.

Syntax

PRIMARY KEY (ColumnName)

Im einzelnen Primärschlüssel gibt es nur eine einzige Spalte. Diese Spalte wird auch Partitionierungsschlüssel genannt. Die Daten werden auf Grundlage dieser Spalte partitioniert. Die Daten werden anhand des Partitionsschlüssels auf verschiedene Knoten verteilt.

2. Zusammengesetzter Primärschlüssel: Der zusammengesetzte Primärschlüssel wird durch die folgende Syntax angegeben.

Syntax

PRIMARY KEY (ColumnName1, ColumnName2, ...)

In der obigen Syntax ist ColumnName1 der Partitionierungsschlüssel und ColumnName2 der Clustering-Schlüssel. Daten werden auf der Grundlage von ColumnName1 partitioniert und Daten werden auf der Grundlage von ColumnName2 gruppiert. Clustering ist der Prozess, der Daten in der Partition sortiert.

3. Zusammengesetzter Partitionierungsschlüssel: Der zusammengesetzte Partitionierungsschlüssel wird durch die folgende Syntax angegeben.

Syntax

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

In der obigen Syntax sind ColumnName1 und ColumnName2 der zusammengesetzte Partitionsschlüssel. Die Daten werden anhand der Spalten ColumnName1 und ColumnName2 partitioniert und anhand von ColumnName3 gruppiert. Bei einer großen Datenmenge in einer einzelnen Partition wird ein zusammengesetzter Partitionsschlüssel verwendet. Dieser dient dazu, mehrere Partitionen für die Daten zu erstellen.

  • Mit Klausel

„With-Klausel“ wird verwendet, um eine beliebige Eigenschaft und ihren Wert für die definierte Tabelle anzugeben. Zum Beispiel, wenn Sie komprimieren möchten Cassandra Tabellendaten. Sie können die Komprimierungseigenschaften festlegen, indem Sie den Wert der Eigenschaft „Komprimierungsalgorithmus“ in der „With“-Klausel angeben. Dieselbe Klausel legt auch „CLUSTERING ORDER BY“ fest, um die Sortierrichtung einer Clusterspalte umzukehren, und „default_time_to_live“, um den Wert für jede Zeile automatisch ablaufen zu lassen.

Beispiel

Hier ist die Ausführung des Befehls „Tabelle erstellen“, der den Tabellennamen „Student“ im Schlüsselraum „Universität“ erstellt.

Cassandra Tabelle erstellen

CREATE TABLE University.Student (
    RollNo int,
    Name text,
    dept text,
    PRIMARY KEY (RollNo)
);

Nach erfolgreicher Ausführung des Befehls „Tabelle erstellen“ wird die Tabelle „Student“ im Keyspace „University“ mit den Spalten „RollNo“, „Name“ und „dept.“ erstellt. „RollNo“ ist der Primärschlüssel und gleichzeitig Partitionsschlüssel, sodass jeder Student eine separate Partition mit einer einzigen Zeile belegt.

Cassandra Tabelle ändern

Der Befehl „Tabelle ändern“ wird verwendet, um eine Spalte zu löschen, eine neue Spalte hinzuzufügen, den Spaltennamen zu ändern, den Spaltentyp zu ändern und die Eigenschaften der Tabelle zu ändern.

Syntax

Nachfolgend sehen Sie die Syntax des Befehls „Alter Table“.

ALTER TABLE KeyspaceName.TableName
    ADD ColumnName ColumnDataType;

ALTER TABLE KeyspaceName.TableName
    DROP ColumnName;

ALTER TABLE KeyspaceName.TableName
    RENAME ColumnName TO NewColumnName;

ALTER TABLE KeyspaceName.TableName
    WITH PropertyName = PropertyValue;

Jedes Formular wird als separate Erklärung ausgestellt. Aktuell gelten zwei Einschränkungen. Cassandra Releases: Der Datentyp einer bestehenden Spalte kann nicht mehr geändert werden, und RENAME funktioniert nur noch bei einer Clusterspalte des Primärschlüssels.

Beispiel

Hier ist der Schnappschuss des Befehls „Alter Table“, der eine neue Spalte in der Tabelle „Student“ hinzufügt.

Cassandra Tabelle ändern

ALTER TABLE University.Student ADD Semester int;

Nach erfolgreicher Ausführung des Befehls „Alter Table“ wird der Tabelle Student eine neue Spalte „Semester“ mit dem Datentyp „int“ hinzugefügt.

Hier ist der Screenshot, der die aktualisierte Student-Tabelle zeigt.

Cassandra Tabelle ändern

Cassandra Tisch fallen lassen

Der Befehl „DROP TABLE“ löscht die angegebene Tabelle einschließlich aller Daten aus dem Keyspace. Vor dem Löschenping der Tisch, Cassandra Erstellt als Backup einen Snapshot der Daten und nicht des Schemas.

Syntax

DROP TABLE IF EXISTS KeyspaceName.TableName;

Beispiel

Hier ist der Schnappschuss des ausgeführten Befehls „Drop Table“, der die Tabelle „Student“ aus dem Schlüsselraum „University“ löscht.

Cassandra Tisch fallen lassen

DROP TABLE University.Student;

Nach erfolgreicher Ausführung des Befehls „Drop Table“ wird die Tabelle Student aus dem Keyspace University gelöscht.

Hier ist der Schnappschuss, der den von zurückgegebenen Fehler zeigt Cassandra beim Versuch, auf die nicht vorhandene Student-Tabelle zuzugreifen.

Cassandra Tisch fallen lassen

Cassandra Tabelle abschneiden

Der Befehl „Tabelle abschneiden“ entfernt alle Daten aus der angegebenen Tabelle. Bevor Sie die Daten kürzen, Cassandra erstellt den Snapshot der Daten als Backup.

Syntax

TRUNCATE KeyspaceName.TableName;

Beispiel

Es gibt drei Datensätze in der Tabelle Student. Dies sind die Datensätze in der Tabelle.

Cassandra Tabelle abschneiden

Hier ist der Schnappschuss des ausgeführten Befehls „Truncate table“, der alle Daten aus der Tabelle „Student“ entfernt.

Cassandra Tabelle abschneiden

Nach erfolgreicher Ausführung des Befehls „Truncate Table“ werden alle Daten aus der Tabelle Student entfernt.

Hier ist die Momentaufnahme des Datenbankstatus, in der in der Tabelle „Student“ keine Datensätze vorhanden sind.

Cassandra Tabelle abschneiden

Die Anweisung „Truncate“ erfordert, dass jeder Knoten erreichbar ist, da sie gleichzeitig im gesamten Cluster ausgeführt wird. Wenn ein Knoten ausfällt, schlägt die Anweisung fehl. Dies ist eine bewusste Sicherheitsmaßnahme, um zu verhindern, dass unvollständige Daten verloren gehen.

Drop vs Truncate vs Delete in Cassandra

Drei Befehle entfernen Daten, und die Wahl des falschen Befehls zerstört entweder ein Schema oder hinterlässt ein Leistungsproblem.

Befehl Was es entfernt Schema beibehalten Kosten
TROPFENTABELLE Alle Zeilen und die Tabellendefinition Nein Preiswert. SSTables werden als Snapshots gespeichert und anschließend verworfen.
KÜRZEN Alle Zeilen Ja Günstig, aber alle Knotenpunkte müssen aktiviert sein. Es werden keine Grabsteine ​​erstellt.
LÖSCHEN Ausgewählte Zeilen oder Spalten Ja Bei großem Umfang teuer. Jeder Entnahmevorgang hinterlässt einen Eintrag mit der Aufschrift: „Muss bis zur Verdichtung übersprungen werden.“

Grundsätzlich sollte man beim Löschen einer gesamten Tabelle TRUNCATE einem Massenlöschvorgang (DELETE) vorziehen, da Tausende von Tombstones jeden nachfolgenden Lesevorgang dieser Partition verlangsamen würden. Das Löschen auf Zeilenebene wird im Abschnitt [Referenz einfügen] behandelt. CQL-Anweisungen zum Einfügen, Aktualisieren und Löschen Tutorial.

Häufig gestellte Fragen

Nein. Der Primärschlüssel bestimmt die physische Datenplatzierung und ist daher bei der Erstellung unveränderlich. Um ihn zu ändern, muss eine neue Tabelle mit dem gewünschten Schlüssel erstellt und die Zeilen dorthin migriert werden.

Fügen Sie beim Erstellen des Schemas WITH CLUSTERING ORDER BY (Spaltenname DESC) hinzu. Die Festlegung im Schema ist wesentlich effizienter als das Sortieren zur Abfragezeit bei jedem Lesevorgang.

Nein. Die Spalte wird zwar sofort für Abfragen ausgeblendet, ihre Daten bleiben aber in den bestehenden SSTables erhalten, bis diese durch die Komprimierung überschrieben werden. Der Speicherplatz wird schrittweise freigegeben.

Die Spaltenliste wird korrekt übersetzt, jedoch verwendet die KI häufig eine Ersatz-ID als Partitionsschlüssel, was zu Partitionen mit nur einer Zeile führt. Formulieren Sie das Abfragemuster so um, dass der Schlüssel für Lesezugriffe verwendet wird.

Ja, bei Problemen auf Musterebene, wie z. B. fehlenden Clusterspalten, unbegrenzten Partitionen oder Sammlungsspalten, die wahrscheinlich die Grenzwerte überschreiten. Vor dem Handeln die tatsächliche Kardinalität überprüfen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: