Schlüsselraum in CassandraBeispiel erstellen, ändern und löschen

⚡ Intelligente Zusammenfassung

Schlüsselraum in Cassandra Die Tabelle ist der äußerste Datencontainer, vergleichbar mit einer Datenbank in einem relationalen System, und legt fest, wie jede darin enthaltene Tabelle repliziert wird. Diese Seite behandelt das Erstellen, Ändern und Löschen von Tabellen.ping Ein Keyspace, zuzüglich seiner Eigenschaften und der System-Keyspaces.

  • 🗄️ Kerndefinition: Ein Keyspace enthält Tabellen, Indizes und benutzerdefinierte Datentypen und speichert die Replikationseinstellungen, die diese alle erben.
  • 🧭 Strategiewahl: SimpleStrategy eignet sich für ein einzelnes Rechenzentrum; NetworkTopologyStrategy legt einen Replikationsfaktor pro Rechenzentrum fest.
  • 🔢 Replikationsfaktor: Drei Replikate sind die Standardeinstellung für den Produktivbetrieb, da sie den Ausfall eines Knotens im QUORUM überstehen.
  • Grenzen ändern: Strategie, Replikationsfaktor und dauerhafte Schreibvorgänge können sich ändern; der Name des Schlüsselraums nicht.
  • 💾 Langlebige Schreibgeräte: Wenn diese Option auf „false“ gesetzt wird, wird das Commit-Protokoll übersprungen, wodurch die Sicherheit bei Abstürzen zugunsten der Schreibgeschwindigkeit geopfert wird.
  • 🗑️ Fallverhalten: Dropping entfernt anschließend alle Tabellen und Indizes Cassandra erstellt automatisch einen Schnappschuss.

Cassandra Keyspace erstellen Ändern Ablegen

Was ist Keyspace? Cassandra?

Ein Schlüsselraum in Cassandra ist ein Datencontainer, ähnlich einer Datenbank in RDBMS (Relational Database Management Systems). Cassandra Keyspace bestimmt, wie Daten auf Knoten repliziert werden.

Da die Replikation auf Ebene des Keyspace und nicht auf Ebene einzelner Tabellen festgelegt wird, erbt jede darin erstellte Tabelle dieselbe Strategie und denselben Replikationsfaktor. Daher ist der Keyspace die erste Entscheidung in jedem Schema.

So erstellen Sie einen Keyspace in Cassandra

Ein Schlüsselraum ist ein Objekt, das die Spaltenfamilien und benutzerdefinierten Typen enthält. In Cassandra, Keyspace ähnelt RDBMS Datenbank. Keyspace enthält Spaltenfamilien, Indizes, benutzerdefinierte Typen, Rechenzentrumsbewusstsein, im Keyspace verwendete Strategie, Replikationsfaktor usw.

Befehl "Schlüsselraum erstellen„wird verwendet, um einen Schlüsselraum zu erstellen Cassandra.

Syntax

CREATE KEYSPACE KeyspaceName WITH replication = {
    'class': 'StrategyName',
    'replication_factor': 3
};

Verschiedene Komponenten von Cassandra Schlüsselraum

  • Strategie: Beim Deklarieren des Strategienamens in Cassandra. Es gibt zwei Arten von Strategien, die in deklariert sind Cassandra Syntax.
  1. Einfache Strategie: Die einfache Strategie wird verwendet, wenn Sie nur ein Rechenzentrum haben. Bei dieser Strategie wird die erste Replik auf dem vom Partitionierer ausgewählten Knoten platziert. Die verbleibenden Knoten werden im Uhrzeigersinn im Ring platziert, ohne den Rack- oder Knotenstandort zu berücksichtigen.
  2. Netzwerktopologiestrategie: Die Netzwerktopologiestrategie wird verwendet, wenn Sie über mehr als ein Rechenzentrum verfügen. Bei dieser Strategie müssen Sie für jedes Rechenzentrum separat einen Replikationsfaktor angeben. Die Netzwerktopologiestrategie platziert Replikate in Knoten im Uhrzeigersinn im selben Rechenzentrum. Diese Strategie versucht, Replikate in verschiedenen Racks zu platzieren.
  • Replikationsfaktor: Der Replikationsfaktor ist die Anzahl der Replikate von Daten, die auf verschiedenen Knoten platziert werden. Für keinen Fehler ist 3 ein guter Replikationsfaktor. Mehr als zwei Replikationsfaktoren stellen sicher, dass es keinen Single Point of Failure gibt. Manchmal ist der Server ausgefallen oder es kann ein Netzwerkproblem auftreten, dann stellen andere Replikate den Dienst ohne Fehler bereit.
  • Ejemplo: Hier ist der Schnappschuss des ausgeführten Befehls „Create Keyspace“, der den Keyspace erstellt Cassandra.

Erstellen Sie einen Schlüsselraum in Cassandra

CREATE KEYSPACE University WITH replication = {
    'class': 'SimpleStrategy',
    'replication_factor': 3
};

Nach erfolgreicher Ausführung des Befehls „Create Keyspace“ wird die Keyspace University erstellt Cassandra mit der Strategie „SimpleStrategy“ und dem Replikationsfaktor 3. Beachten Sie, dass der Strategiename in Anführungszeichen gesetzt werden muss; ein Wert ohne Anführungszeichen wird als Syntaxfehler abgelehnt.

Schlüsselraum ändern Cassandra

Der Befehl „Alter Keyspace“ ändert den Replikationsfaktor, den Strategienamen und die Eigenschaften für dauerhafte Schreibvorgänge im erstellten Schlüsselraum Cassandra.

Syntax

ALTER KEYSPACE KeyspaceName WITH replication = {
    'class': 'StrategyName',
    'replication_factor': 3
}
AND DURABLE_WRITES = true;

Wichtige Aspekte beim Ändern des Keyspace in Cassandra

  • Schlüsselraumname: Der Schlüsselraumname kann nicht geändert werden Cassandra.
  • Strategiename: Der Strategiename kann durch Angabe eines neuen Strategienamens geändert werden.
  • Replikationsfaktor: Der Replikationsfaktor kann durch Angabe eines neuen Replikationsfaktors geändert werden.
  • DURABLE_WRITES: Der Wert von DURABLE_WRITES kann durch Angabe von „true“ oder „false“ geändert werden. Standardmäßig ist er auf „true“ gesetzt. Bei „false“ werden keine Aktualisierungen in das Commit-Log geschrieben und umgekehrt.
  • Ausführung: Hier ist die Momentaufnahme des ausgeführten Befehls „Alter Keyspace“, der die Keyspace-Strategie von „SimpleStrategy“ in „NetworkTopologyStrategy“ und den Replikationsfaktor von 3 auf 1 für DataCenter1 ändert.

Schlüsselraum ändern Cassandra

ALTER KEYSPACE University WITH replication = {
    'class': 'NetworkTopologyStrategy',
    'DataCenter1': 1
};

Nach erfolgreicher Ausführung des Befehls „Alter Keyspace“ wird der Strategiename für „DataCenter1“ von „SimpleStrategy“ in „NetworkTopologyStrategy“ geändert und der Replikationsfaktor von 3 auf 1.

Wichtig: Das Erhöhen des Replikationsfaktors kopiert nicht automatisch vorhandene Daten. nodetool repair Anschließend muss der betroffene Schlüsselraum aktualisiert werden, andernfalls bleiben die neuen Replikate leer, bis eine Lesereparatur erfolgt, die jede Zeile bearbeitet.

Cassandra Schlüsselraum löschen

Befehl 'Schlüsselraum löschen' löscht den Schlüsselraum einschließlich aller Daten, Spaltenfamilien, benutzerdefinierten Typen und Indizes CassandraVor dem Fallenlassenping der Tastenraum, Cassandra macht einen Schnappschuss des Schlüsselraums. Wenn kein Schlüsselraum vorhanden ist Cassandra, Cassandra gibt einen Fehler zurück, es sei denn, IF EXISTS wird verwendet.

Syntax

DROP KEYSPACE IF EXISTS KeyspaceName;

Beispiel

Hier ist der Schnappschuss des ausgeführten Befehls „Drop Keyspace“, der den Keyspace University löscht.

Cassandra Schlüsselraum löschen

DROP KEYSPACE University;

Nach erfolgreicher Ausführung des Befehls „Drop keyspace University“ wird keyspace University gelöscht Cassandra mit allen Daten und Schema.

Hier ist der Snapshot, in dem der Fehler zurückgegeben wird, wenn versucht wird, auf einen nicht vorhandenen Schlüsselraum zuzugreifen.

Cassandra Schlüsselraum löschen

Hinweis: Es gibt keinen Unterschied zwischen „Drop Keyspace“ und „Delete Keyspace“. Schlüsselraum löschen ist gleichbedeutend mit Schlüsselraum löschen.

Keyspace-Eigenschaften und System-Keyspaces

Über das Erstellen und Ablegen hinauspingDrei Befehle decken nahezu alle alltäglichen Arbeiten mit dem Keyspace in cqlsh ab.

DESCRIBE KEYSPACES;
DESCRIBE KEYSPACE University;
USE University;

Die erste Liste zeigt alle Keyspaces im Cluster an, die zweite gibt das vollständige Schema eines Keyspace einschließlich seiner Tabellen aus, und die dritte legt den aktuellen Keyspace fest, sodass Tabellennamen kein Präfix mehr benötigen.

Neben Benutzer-Keyspaces, Cassandra Es gibt mehrere eigene Schiffe. Diese erscheinen in der Ausgabe von DESCRIBE KEYSPACES und sollten beachtet statt gelöscht werden.

  • System: Lokaler Knotenstatus, einschließlich seiner Tokenbereiche und der ihm bekannten Peers.
  • system_schema: Die Definitionen aller Keyspaces, Tabellen, Spalten und Indizes im Cluster.
  • system_auth: Rollen, Berechtigungen und Anmeldeinformationen, wenn die Authentifizierung aktiviert ist.
  • system_distributed: Reparaturhistorie und sonstige clusterweite Buchhaltungping.
  • System_tracist: Abfrage traces erfasst, als tracing ist eingeschaltet.

Zwei davon verdienen Beachtung in der Produktion. Systemauthentifizierung Der Keyspace wird standardmäßig mit einem Replikationsfaktor von eins erstellt; wenn dieser Knoten ausfällt, kann sich niemand mehr anmelden, daher sollte der Replikationsfaktor an den Cluster angepasst werden. system_schema Der Keyspace erklärt, warum Schemaänderungen einzeln angewendet werden müssen, da gleichzeitige Änderungen zu widersprüchlichen Schemaversionen auf den verschiedenen Knoten führen können.

Häufige Keyspace-Fehler und deren Behebung

Die meisten Keyspace-Fehler erzeugen eine kurze, erkennbare Fehlermeldung.

Fehler Ursache und Lösung
Unbekannter Schlüsselraum Es ist kein Keyspace ausgewählt. Führen Sie USE KeyspaceName aus oder geben Sie der Tabelle das Präfix Keyspace.Table an.
Syntaxfehler bei 'SimpleStrategy' Der Strategiename steht nicht in Anführungszeichen. Schreiben Sie 'class': 'SimpleStrategy' mit Anführungszeichen.
Nicht erkannte Strategieoption {replication_factor} Der Replikationsfaktor wurde in Verbindung mit der Netzwerktopologiestrategie verwendet. Diese Strategie verwendet stattdessen einen Faktor pro Rechenzentrumsnamen.
Vorhandenen Schlüsselraum kann nicht hinzugefügt werden Der Schlüsselraum existiert bereits. Fügen Sie IF NOT EXISTS hinzu oder löschen Sie zuerst den alten.
Daten fehlen nach Erhöhung des Replikationsfaktors Erwartet. Führen Sie nodetool repair für den Keyspace aus, damit die neuen Replikate erstellt werden.

Sobald ein Schlüsselraum existiert, besteht der nächste Schritt darin, den darin enthaltenen Speicher zu definieren, was im Abschnitt über … behandelt wird. Cassandra Tabelle Tutorial.

Häufig gestellte Fragen

Halten Sie die Anzahl gering, typischerweise eine pro Anwendung. Jeder Keyspace und jede Tabelle fügt Schema-Metadaten und Speicher-Overhead auf jedem Knoten hinzu, sodass Hunderte von Keyspaces die Clusterleistung beeinträchtigen.

Ja, wenn auto_snapshot aktiviert ist. Cassandra schreibt einen Snapshot vor dem DroppingSo können die SSTables nach der Neuerstellung des Schemas mit sstableloader wiederhergestellt werden.

Nur für Daten, die neu generiert werden können, wie z. B. Caches oder abgeleitete Analysen. Überspringenping Das Commit-Log bedeutet, dass alle Schreibvorgänge, die sich noch in der Memtable befinden, verloren gehen, wenn der Knoten unerwartet stoppt.

Anhand des Rechenzentrumslayouts und des Verfügbarkeitsziels kann KI eine Strategie und zentrumspezifische Faktoren vorschlagen. Überprüfen Sie die Rechenzentrumsnamen anhand des Nodetool-Status, da ein Tippfehler unbemerkt zu unvollständiger Replikation führen kann.

Es verarbeitet Standard-Syntax gut, übernimmt aber oft relationale Verhaltensmuster wie nicht in Anführungszeichen gesetzte Strategienamen oder Fremdschlüssel. Führen Sie jedes generierte Skript zuerst in einem Test-Keyspace aus.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: