Cassandra - Toplu İfadeler

Toplu İfadeleri Kullanma

Kullanma BATCH,Aynı anda birden fazla değişiklik ifadesini (ekleme, güncelleme, silme) çalıştırabilirsiniz. Sözdizimi aşağıdaki gibidir -

BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH

Misal

Cassandra'da emp adında aşağıdaki verilere sahip bir tablo olduğunu varsayalım -

emp_id emp_name emp_city emp_phone emp_sal
1 Veri deposu Haydarabad 9848022338 50000
2 Robin Delhi 9848022339 50000
3 rahman Chennai 9848022330 45.000

Bu örnekte, aşağıdaki işlemleri gerçekleştireceğiz -

  • Aşağıdaki ayrıntıları içeren yeni bir satır ekleyin (4, rajeev, pune, 9848022331, 30000).
  • Çalışanın maaşını satır kimliği 3 ile 50000 olarak güncelleyin.
  • 2. satır kimliği ile çalışanın şehrini silin.

Yukarıdaki işlemleri tek seferde gerçekleştirmek için aşağıdaki BATCH komutunu kullanın -

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;

Doğrulama

Değişiklik yaptıktan sonra, SELECT deyimini kullanarak tabloyu doğrulayın. Aşağıdaki çıktıyı üretmelidir -

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)

Burada değiştirilmiş verilerle tabloyu gözlemleyebilirsiniz.

Java API kullanan Toplu İfadeler

Toplu iş ifadeleri, Session sınıfının execute () yöntemi kullanılarak bir tabloya programlı olarak yazılabilir. Java API yardımıyla toplu ifadeyi kullanarak birden çok ifadeyi yürütmek için aşağıdaki adımları izleyin.

Adım 1: Küme Nesnesi Oluşturun

Bir örnek oluşturun Cluster.builder sınıfı com.datastax.driver.core aşağıda gösterildiği gibi paketleyin.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Kullanarak bir iletişim noktası (düğümün IP adresi) ekleyin. addContactPoint() yöntemi Cluster.Buildernesne. Bu yöntem döndürürCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Yeni oluşturucu nesnesini kullanarak bir küme nesnesi oluşturun. Bunu yapmak için adında bir yönteminiz varbuild() içinde Cluster.Buildersınıf. Küme nesnesini oluşturmak için aşağıdaki kodu kullanın -

//Building a cluster
Cluster cluster = builder.build();

Aşağıda gösterildiği gibi tek bir kod satırı kullanarak küme nesnesini oluşturabilirsiniz.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Adım 2: Bir Oturum Nesnesi Oluşturun

Aşağıda gösterildiği gibi Cluster sınıfının connect () yöntemini kullanarak bir Session nesnesi örneği oluşturun.

Session session = cluster.connect( );

Bu yöntem yeni bir oturum oluşturur ve onu başlatır. Zaten bir anahtar alanınız varsa, aşağıda gösterildiği gibi bu yönteme dize biçiminde KeySpace adını ileterek var olana ayarlayabilirsiniz.

Session session = cluster.connect(“ Your keyspace name ”);

Burada adlı KeySpace'i kullanıyoruz tp. Bu nedenle, aşağıda gösterildiği gibi oturum nesnesini oluşturun.

Session session = cluster.connect(“tp”);

3. Adım: Sorguyu Çalıştırın

Session sınıfının execute () yöntemini kullanarak CQL sorgularını yürütebilirsiniz. Sorguyu dize biçiminde veya bir Statement sınıfı nesnesi olarak execute () yöntemine iletin. Bu yönteme dize biçiminde ilettiğiniz her şey,cqlsh.

Bu örnekte, aşağıdaki işlemleri gerçekleştireceğiz -

  • Aşağıdaki ayrıntıları içeren yeni bir satır ekleyin (4, rajeev, pune, 9848022331, 30000).
  • Çalışanın maaşını satır kimliği 3 ile 50000 olarak güncelleyin.
  • 2. satır kimliği ile çalışanın şehrini silin.

Sorguyu bir dize değişkeninde saklamanız ve aşağıda gösterildiği gibi execute () yöntemine iletmeniz gerekir.

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;”;

Aşağıda, Java API kullanarak Cassandra'da bir tabloda birden çok ifadeyi aynı anda yürütmek için eksiksiz bir program verilmiştir.

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");
   }
}

Yukarıdaki programı sınıf adı ve ardından .java ile kaydedin, kaydedildiği konuma göz atın. Programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac Batch.java $java Batch

Normal koşullar altında, aşağıdaki çıktıyı üretmelidir -

Changes done