Cassandra - Alter Keyspace
Ändern eines KeySpace
Mit ALTER KEYSPACE können Eigenschaften wie die Anzahl der Replikate und die dauerhaften Schreibvorgänge eines KeySpace geändert werden. Unten ist die Syntax dieses Befehls angegeben.
Syntax
ALTER KEYSPACE <identifier> WITH <properties>
dh
ALTER KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of replicas’};
Die Eigenschaften von ALTER KEYSPACEsind die gleichen wie CREATE KEYSPACE. Es hat zwei Eigenschaften:replication und durable_writes.
Reproduzieren
Die Replikationsoption gibt die Replikationsplatzierungsstrategie und die Anzahl der gewünschten Replikate an.
Durable_writes
Mit dieser Option können Sie Cassandra anweisen, ob Commitlog für Aktualisierungen des aktuellen KeySpace verwendet werden soll. Diese Option ist nicht obligatorisch und standardmäßig auf true gesetzt.
Beispiel
Im Folgenden finden Sie ein Beispiel für die Änderung eines KeySpace.
Hier ändern wir einen KeySpace mit dem Namen TutorialsPoint.
Wir ändern den Replikationsfaktor von 1 auf 3.
cqlsh.> ALTER KEYSPACE tutorialspoint
WITH replication = {'class':'NetworkTopologyStrategy', 'replication_factor' : 3};
Ändern von Durable_writes
Sie können auch die Eigenschaft durable_writes eines KeySpace ändern. Im Folgenden ist die Eigenschaft durable_writes von angegebentest KeySpace.
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)
ALTER KEYSPACE test
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3}
AND DURABLE_WRITES = true;
Wenn Sie die Eigenschaften von KeySpaces überprüfen, wird erneut die folgende Ausgabe ausgegeben.
SELECT * FROM system.schema_keyspaces;
keyspace_name | durable_writes | strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
test | True | 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)
Ändern eines Schlüsselraums mithilfe der Java-API
Sie können einen Schlüsselbereich mit dem ändern execute() Methode von SessionKlasse. Führen Sie die folgenden Schritte aus, um einen Schlüsselbereich mithilfe der Java-API zu ändern
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 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 das Clusterobjekt mit 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 ClusterKlasse 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 CQL-Abfragen mit der Methode execute () der Session-Klasse ausführen. Übergeben Sie die Abfrage entweder im Zeichenfolgenformat oder alsStatementKlassenobjekt für die Methode execute (). Was auch immer Sie im String-Format an diese Methode übergeben, wird auf dem ausgeführtcqlsh.
In diesem Beispiel
Wir ändern einen Schlüsselraum mit dem Namen tp. Wir ändern die Replikationsoption von "Einfache Strategie" in "Netzwerktopologiestrategie".
Wir verändern das durable_writes zu falsch
Sie müssen die Abfrage in einer Zeichenfolgenvariablen speichern und wie unten gezeigt an die Methode execute () übergeben.
//Query
String query = "ALTER KEYSPACE tp WITH replication " + "= {'class':'NetworkTopologyStrategy', 'datacenter1':3}" +" AND DURABLE_WRITES = false;";
session.execute(query);
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 Alter_KeySpace {
public static void main(String args[]){
//Query
String query = "ALTER KEYSPACE tp WITH replication " + "= {'class':'NetworkTopologyStrategy', 'datacenter1':3}"
+ "AND DURABLE_WRITES = false;";
//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);
System.out.println("Keyspace altered");
}
}
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 Alter_KeySpace.java $java Alter_KeySpace
Unter normalen Bedingungen wird die folgende Ausgabe erzeugt:
Keyspace Altered