Cassandra - Anahtar Alanını Değiştir

Bir Anahtar Alanını Değiştirme

ALTER KEYSPACE, yineleme sayısı ve bir KeySpace'in dayanıklı_yazılımları gibi özellikleri değiştirmek için kullanılabilir. Aşağıda bu komutun sözdizimi verilmiştir.

Sözdizimi

ALTER KEYSPACE <identifier> WITH <properties>

yani

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

Özellikleri ALTER KEYSPACECREATE KEYSPACE ile aynıdır. İki özelliği vardır:replication ve durable_writes.

Çoğaltma

Çoğaltma seçeneği, çoğaltma yerleştirme stratejisini ve istenen çoğaltma sayısını belirtir.

Durable_writes

Bu seçeneği kullanarak, Cassandra'ya geçerli KeySpace'deki güncellemeler için commit günlüğü kullanıp kullanmayacağını bildirebilirsiniz. Bu seçenek zorunlu değildir ve varsayılan olarak true olarak ayarlanmıştır.

Misal

Aşağıda bir KeySpace değiştirmenin bir örneği verilmiştir.

  • Burada adlı bir KeySpace'i değiştiriyoruz TutorialsPoint.

  • Çoğaltma faktörünü 1'den 3'e değiştiriyoruz.

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

Durable_writes'i Değiştirme

Ayrıca bir KeySpace'in dayanıklı_writes özelliğini de değiştirebilirsiniz. Aşağıda verilen, dayanıklı_writes özelliğidirtest 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;

Bir kez daha, KeySpaces'in özelliklerini doğrularsanız, aşağıdaki çıktıyı üretecektir.

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 kullanarak Anahtar Alanını Değiştirme

Kullanarak bir anahtar alanını değiştirebilirsiniz. execute() yöntemi Sessionsınıf. Java API kullanarak bir anahtar alanını değiştirmek için aşağıda verilen adımları izleyin.

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

Her şeyden önce, 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. Aşağıdaki kod, bir küme nesnesinin nasıl oluşturulacağını gösterir.

//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

Bir örnek oluşturun Session kullanarak nesne connect() yöntemi Clusteraşağıda gösterildiği gibi sınıf.

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 anahtar alanı adını ileterek var olana ayarlayabilirsiniz.

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

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 birStatementexecute () yöntemine sınıf nesnesi. Bu yönteme dize biçiminde ilettiğiniz her şey,cqlsh.

Bu örnekte,

  • Adlı bir anahtar alanını değiştiriyoruz tp. Çoğaltma seçeneğini Basit Stratejiden Ağ Topolojisi Stratejisine değiştiriyoruz.

  • Biz değiştiriyoruz durable_writes yanlış

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

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

Aşağıda, Java API kullanarak Cassandra'da bir anahtar alanı oluşturmak ve kullanmak için eksiksiz bir program verilmiştir.

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

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 Alter_KeySpace.java $java Alter_KeySpace

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

Keyspace Altered