Cassandra-배치 문
배치 문 사용
사용 BATCH,여러 수정 문 (삽입, 업데이트, 삭제)을 동시에 실행할 수 있습니다. 구문은 다음과 같습니다.
BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH 
    예
다음 데이터를 가지고있는 emp라는 카산드라에 테이블이 있다고 가정합니다.
| emp_id | emp_name | emp_city | emp_phone | emp_sal | 
|---|---|---|---|---|
| 1 | 램 | 하이데라바드 | 9848022338 | 50000 | 
| 2 | 남자 이름 | 델리 | 9848022339 | 50000 | 
| 삼 | 라만 | 첸나이 | 9848022330 | 45000 | 
이 예에서는 다음 작업을 수행합니다.
- 다음 세부 사항 (4, rajeev, pune, 9848022331, 30000)이있는 새 행을 삽입하십시오.
 - 행 ID가 3 인 직원의 급여를 50000으로 업데이트합니다.
 - 행 ID가 2 인 직원의 도시를 삭제합니다.
 
위의 작업을 한 번에 수행하려면 다음 BATCH 명령을 사용하십시오.
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; 
    확인
변경 한 후 SELECT 문을 사용하여 테이블을 확인합니다. 다음 출력을 생성해야합니다.
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) 
    여기에서 수정 된 데이터가있는 테이블을 관찰 할 수 있습니다.
Java API를 사용한 배치 문
Batch 문은 Session 클래스의 execute () 메서드를 사용하여 테이블에 프로그래밍 방식으로 작성할 수 있습니다. Java API를 사용하여 배치 문을 사용하여 여러 문을 실행하려면 아래 단계를 따르십시오.
1 단계 : 클러스터 개체 생성
인스턴스 만들기 Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.
//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder(); 
    다음을 사용하여 접점 (노드의 IP 주소)을 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.
//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" ); 
    새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build() 에 Cluster.Builder수업. 다음 코드를 사용하여 클러스터 객체를 만듭니다-
//Building a cluster
Cluster cluster = builder.build(); 
    아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); 
    2 단계 : 세션 개체 생성
아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.
Session session = cluster.connect( ); 
    이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.
Session session = cluster.connect(“ Your keyspace name ”); 
    여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.
Session session = cluster.connect(“tp”); 
    3 단계 : 쿼리 실행
Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식으로 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 것은 무엇이든cqlsh.
이 예에서는 다음 작업을 수행합니다.
- 다음 세부 사항 (4, rajeev, pune, 9848022331, 30000)이있는 새 행을 삽입하십시오.
 - 행 ID가 3 인 직원의 급여를 50000으로 업데이트합니다.
 - 행 ID가 2 인 직원의 도시를 삭제합니다.
 
쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.
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;”; 
    다음은 Java API를 사용하여 Cassandra의 테이블에서 동시에 여러 명령문을 실행하는 완전한 프로그램입니다.
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");
   }
} 
    위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.
$javac Batch.java $java Batch 
    정상적인 조건에서 다음과 같은 출력을 생성해야합니다.
Changes done