Cassandra - Schlüsselraum erstellen
Erstellen eines Schlüsselraums mit Cqlsh
Ein Schlüsselraum in Cassandra ist ein Namespace, der die Datenreplikation auf Knoten definiert. Ein Cluster enthält einen Schlüsselbereich pro Knoten. Im Folgenden wird die Syntax zum Erstellen eines Schlüsselbereichs mithilfe der Anweisung angegebenCREATE KEYSPACE.
Syntax
CREATE KEYSPACE <identifier> WITH <properties>
dh
CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of replicas’};
CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of replicas’}
AND durable_writes = ‘Boolean value’;
Die Anweisung CREATE KEYSPACE hat zwei Eigenschaften: replication und durable_writes.
Reproduzieren
Die Replikationsoption besteht darin, die anzugeben Replica Placement strategyund die Anzahl der gewünschten Repliken. In der folgenden Tabelle sind alle Strategien zur Platzierung von Replikaten aufgeführt.
Strategiename | Beschreibung |
---|---|
Simple Strategy' | Gibt einen einfachen Replikationsfaktor für den Cluster an. |
Network Topology Strategy | Mit dieser Option können Sie den Replikationsfaktor für jedes Rechenzentrum unabhängig festlegen. |
Old Network Topology Strategy | Dies ist eine ältere Replikationsstrategie. |
Mit dieser Option können Sie Cassandra anweisen, ob sie verwenden soll commitlogfür Updates auf dem aktuellen KeySpace. Diese Option ist nicht obligatorisch und standardmäßig auf true gesetzt.
Beispiel
Im Folgenden finden Sie ein Beispiel für die Erstellung eines KeySpace.
Hier erstellen wir einen KeySpace mit dem Namen TutorialsPoint.
Wir verwenden die erste Replikatplatzierungsstrategie, d. H. Simple Strategy.
Und wir wählen den Replikationsfaktor für 1 replica.
cqlsh.> CREATE KEYSPACE tutorialspoint
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
Überprüfung
Mit dem Befehl können Sie überprüfen, ob die Tabelle erstellt wurde oder nicht Describe. Wenn Sie diesen Befehl über Keyspaces verwenden, werden alle wie unten gezeigt erstellten Keyspaces angezeigt.
cqlsh> DESCRIBE keyspaces;
tutorialspoint system system_traces
Hier können Sie den neu erstellten KeySpace beobachten tutorialspoint.
Durable_writes
Standardmäßig sind die Eigenschaften von durable_writes einer Tabelle auf festgelegt true,es kann jedoch auf false gesetzt werden. Sie können diese Eigenschaft nicht auf festlegensimplex strategy.
Beispiel
Das folgende Beispiel zeigt die Verwendung der Eigenschaft für dauerhafte Schreibvorgänge.
cqlsh> CREATE KEYSPACE test
... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }
... AND DURABLE_WRITES = false;
Überprüfung
Sie können überprüfen, ob die Eigenschaft durable_writes von test KeySpace auf false gesetzt wurde, indem Sie den System Keyspace abfragen. Diese Abfrage gibt Ihnen alle KeySpaces mit ihren Eigenschaften.
cqlsh> SELECT * FROM system_schema.keyspaces;
keyspace_name | durable_writes | strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
test | False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1" : "3"}
tutorialspoint | True | org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "4"}
system | True | org.apache.cassandra.locator.LocalStrategy | { }
system_traces | True | org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "2"}
(4 rows)
Hier können Sie beobachten, dass die Eigenschaft durable_writes des Tests KeySpace auf false gesetzt wurde.
Verwenden eines Schlüsselraums
Sie können einen erstellten KeySpace mit dem Schlüsselwort verwenden USE. Die Syntax lautet wie folgt:
Syntax:USE <identifier>
Beispiel
Im folgenden Beispiel verwenden wir den KeySpace tutorialspoint.
cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>
Erstellen eines Schlüsselraums mithilfe der Java-API
Sie können einen Schlüsselraum mit dem erstellen execute() Methode von SessionKlasse. Führen Sie die folgenden Schritte aus, um mithilfe der Java-API einen Schlüsselbereich zu erstellen.
Schritt 1: Erstellen Sie ein Clusterobjekt
Erstellen Sie zunächst eine Instanz von Cluster.builder Klasse von com.datastax.driver.core Paket wie unten gezeigt.
//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();
Fügen Sie mit einen Kontaktpunkt (IP-Adresse des Knotens) hinzu addContactPoint() Methode von Cluster.BuilderObjekt. Diese Methode gibt zurückCluster.Builder.
//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
Erstellen Sie mit dem neuen Builder-Objekt ein Cluster-Objekt. Dazu haben Sie eine Methode namensbuild() in dem Cluster.BuilderKlasse. Der folgende Code zeigt, wie Sie ein Clusterobjekt erstellen.
//Building a cluster
Cluster cluster = builder.build();
Sie können ein Clusterobjekt in einer einzelnen Codezeile erstellen, wie unten gezeigt.
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Schritt 2: Erstellen Sie ein Sitzungsobjekt
Erstellen Sie eine Instanz von Session Objekt mit dem connect() Methode von Cluster Klasse wie unten gezeigt.
Session session = cluster.connect( );
Diese Methode erstellt eine neue Sitzung und initialisiert sie. Wenn Sie bereits einen Schlüsselraum haben, können Sie ihn auf den vorhandenen festlegen, indem Sie den Schlüsselraumnamen im Zeichenfolgenformat wie unten gezeigt an diese Methode übergeben.
Session session = cluster.connect(“ Your keyspace name ” );
Schritt 3: Abfrage ausführen
Sie können ausführen CQL Abfragen mit dem execute() Methode von SessionKlasse. Übergeben Sie die Abfrage entweder im Zeichenfolgenformat oder alsStatement Klassenobjekt zum execute()Methode. Was auch immer Sie im String-Format an diese Methode übergeben, wird auf dem ausgeführtcqlsh.
In diesem Beispiel erstellen wir einen KeySpace mit dem Namen tp. Wir verwenden die erste Replikatplatzierungsstrategie, dh die einfache Strategie, und wählen den Replikationsfaktor für 1 Replikat aus.
Sie müssen die Abfrage in einer Zeichenfolgenvariablen speichern und wie unten gezeigt an die Methode execute () übergeben.
String query = "CREATE KEYSPACE tp WITH replication "
+ "= {'class':'SimpleStrategy', 'replication_factor':1}; ";
session.execute(query);
Schritt 4: Verwenden Sie den KeySpace
Sie können einen erstellten KeySpace mit der Methode execute () verwenden, wie unten gezeigt.
execute(“ USE tp ” );
Im Folgenden finden Sie das vollständige Programm zum Erstellen und Verwenden eines Schlüsselbereichs in Cassandra mithilfe der Java-API.
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
public class Create_KeySpace {
public static void main(String args[]){
//Query
String query = "CREATE KEYSPACE tp WITH replication "
+ "= {'class':'SimpleStrategy', 'replication_factor':1};";
//creating Cluster object
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
//Creating Session object
Session session = cluster.connect();
//Executing the query
session.execute(query);
//using the KeySpace
session.execute("USE tp");
System.out.println("Keyspace created");
}
}
Speichern Sie das obige Programm mit dem Klassennamen gefolgt von .java und navigieren Sie zu dem Speicherort, an dem es gespeichert ist. Kompilieren Sie das Programm und führen Sie es wie unten gezeigt aus.
$javac Create_KeySpace.java
$java Create_KeySpace
Unter normalen Bedingungen wird die folgende Ausgabe erzeugt:
Keyspace created