Cassandra - Stapelanweisungen
Stapelanweisungen verwenden
Verwenden von BATCH,Sie können mehrere Änderungsanweisungen (Einfügen, Aktualisieren, Löschen) gleichzeitig ausführen. Die Syntax lautet wie folgt:
BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH
Beispiel
Angenommen, in Cassandra gibt es eine Tabelle namens emp mit den folgenden Daten:
emp_id | emp_name | emp_city | emp_phone | emp_sal |
---|---|---|---|---|
1 | RAM | Hyderabad | 9848022338 | 50000 |
2 | Robin | Delhi | 9848022339 | 50000 |
3 | rahman | Chennai | 9848022330 | 45000 |
In diesem Beispiel führen wir die folgenden Operationen aus:
- Fügen Sie eine neue Zeile mit den folgenden Details ein (4, rajeev, pune, 9848022331, 30000).
- Aktualisieren Sie das Gehalt des Mitarbeiters mit der Zeilen-ID 3 auf 50000.
- Löschen Sie die Stadt des Mitarbeiters mit der Zeilen-ID 2.
Verwenden Sie den folgenden BATCH-Befehl, um die oben genannten Vorgänge auf einmal auszuführen:
cqlsh:tutorialspoint> BEGIN BATCH
... INSERT INTO emp (emp_id, emp_city, emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);
... UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
... DELETE emp_city FROM emp WHERE emp_id = 2;
... APPLY BATCH;
Überprüfung
Überprüfen Sie die Tabelle nach dem Vornehmen von Änderungen mit der SELECT-Anweisung. Es sollte die folgende Ausgabe erzeugen -
cqlsh:tutorialspoint> select * from emp;
emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+-----------+----------+------------+---------
1 | Hyderabad | ram | 9848022338 | 50000
2 | null | robin | 9848022339 | 50000
3 | Chennai | rahman | 9848022330 | 50000
4 | Pune | rajeev | 9848022331 | 30000
(4 rows)
Hier können Sie die Tabelle mit geänderten Daten beobachten.
Stapelanweisungen mit Java-API
Stapelanweisungen können mithilfe der execute () -Methode der Session-Klasse programmgesteuert in eine Tabelle geschrieben werden. Führen Sie die folgenden Schritte aus, um mehrere Anweisungen mithilfe der Batch-Anweisung mithilfe der Java-API auszuführen.
Schritt 1: Erstellen Sie ein Clusterobjekt
Erstellen Sie 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. Verwenden Sie den folgenden Code, um das Clusterobjekt zu 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 des Sitzungsobjekts mit der Methode connect () der Cluster-Klasse (siehe unten).
Session session = cluster.connect( );
Diese Methode erstellt eine neue Sitzung und initialisiert sie. Wenn Sie bereits über einen Schlüsselbereich verfügen, können Sie ihn auf den vorhandenen festlegen, indem Sie den KeySpace-Namen im Zeichenfolgenformat wie unten gezeigt an diese Methode übergeben.
Session session = cluster.connect(“ Your keyspace name ”);
Hier verwenden wir den genannten KeySpace tp. Erstellen Sie daher das Sitzungsobjekt wie unten gezeigt.
Session session = cluster.connect(“tp”);
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 als Anweisungsklassenobjekt an die Methode execute (). Was auch immer Sie im String-Format an diese Methode übergeben, wird auf dem ausgeführtcqlsh.
In diesem Beispiel führen wir die folgenden Operationen aus:
- Fügen Sie eine neue Zeile mit den folgenden Details ein (4, rajeev, pune, 9848022331, 30000).
- Aktualisieren Sie das Gehalt des Mitarbeiters mit der Zeilen-ID 3 auf 50000.
- Löschen Sie die Stadt des Mitarbeiters mit der Zeilen-ID 2.
Sie müssen die Abfrage in einer Zeichenfolgenvariablen speichern und wie unten gezeigt an die Methode execute () übergeben.
String query1 = ” BEGIN BATCH INSERT INTO emp (emp_id, emp_city, emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);
UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
DELETE emp_city FROM emp WHERE emp_id = 2;
APPLY BATCH;”;
Im Folgenden finden Sie das vollständige Programm zum gleichzeitigen Ausführen mehrerer Anweisungen für eine Tabelle in Cassandra mithilfe der Java-API.
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
public class Batch {
public static void main(String args[]){
//query
String query =" BEGIN BATCH INSERT INTO emp (emp_id, emp_city,
emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);"
+ "UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;"
+ "DELETE emp_city FROM emp WHERE emp_id = 2;"
+ "APPLY BATCH;";
//Creating Cluster object
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
//Creating Session object
Session session = cluster.connect("tp");
//Executing the query
session.execute(query);
System.out.println("Changes done");
}
}
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 Batch.java $java Batch
Unter normalen Bedingungen sollte die folgende Ausgabe erzeugt werden:
Changes done