카산드라-키 스페이스 변경

KeySpace 변경

ALTER KEYSPACE는 복제본 수 및 KeySpace의 duration_writes와 같은 속성을 변경하는 데 사용할 수 있습니다. 다음은이 명령의 구문입니다.

통사론

ALTER KEYSPACE <identifier> WITH <properties>

ALTER KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of  replicas’};

의 속성 ALTER KEYSPACECREATE KEYSPACE와 동일합니다. 두 가지 속성이 있습니다.replicationdurable_writes.

복제

복제 옵션은 복제본 배치 전략과 원하는 복제본 수를 지정합니다.

Durable_writes

이 옵션을 사용하면 Cassandra에 현재 KeySpace의 업데이트에 commitlog를 사용할지 여부를 지시 할 수 있습니다. 이 옵션은 필수가 아니며 기본적으로 true로 설정됩니다.

다음은 KeySpace를 변경하는 예입니다.

  • 여기서 우리는 TutorialsPoint.

  • 복제 계수를 1에서 3으로 변경합니다.

cqlsh.> ALTER KEYSPACE tutorialspoint
WITH replication = {'class':'NetworkTopologyStrategy', 'replication_factor' : 3};

Durable_writes 변경

KeySpace의 Durable_writes 속성을 변경할 수도 있습니다. 아래 주어진 것은test 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;

다시 한 번 KeySpaces의 속성을 확인하면 다음과 같은 출력이 생성됩니다.

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)

Java API를 사용하여 키 스페이스 변경

다음을 사용하여 키 스페이스를 변경할 수 있습니다. execute() 의 방법 Session수업. 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 단계 : 세션 개체 생성

인스턴스 만들기 Session 개체를 사용하여 connect() 의 방법 Cluster아래와 같이 클래스.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

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

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식으로 전달하거나Statement클래스 객체를 execute () 메서드에 추가합니다. 이 메서드에 문자열 형식으로 전달하는 것은 무엇이든cqlsh.

이 예에서

  • 이름이 지정된 키 스페이스를 변경합니다. tp. 복제 옵션을 단순 전략에서 네트워크 토폴로지 전략으로 변경하고 있습니다.

  • 우리는 durable_writes 거짓으로

쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

//Query
String query = "ALTER KEYSPACE tp WITH replication " + "=   {'class':'NetworkTopologyStrategy', 'datacenter1':3}" +" AND DURABLE_WRITES = false;";
session.execute(query);

다음은 Java API를 사용하여 Cassandra에서 키 스페이스를 만들고 사용하는 완전한 프로그램입니다.

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

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Alter_KeySpace.java $java Alter_KeySpace

정상적인 조건에서 다음과 같은 출력을 생성합니다.

Keyspace Altered