Cassandra - เปลี่ยนคีย์สเปซ

การแก้ไข KeySpace

ALTER KEYSPACE สามารถใช้เพื่อปรับเปลี่ยนคุณสมบัติเช่นจำนวนของแบบจำลองและ Durable_writes ของ KeySpace ด้านล่างเป็นไวยากรณ์ของคำสั่งนี้

ไวยากรณ์

ALTER KEYSPACE <identifier> WITH <properties>

กล่าวคือ

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

คุณสมบัติของ ALTER KEYSPACEเหมือนกับ CREATE KEYSPACE มีคุณสมบัติสองประการ:replication และ durable_writes.

การจำลองแบบ

ตัวเลือกการจำลองจะระบุกลยุทธ์การจัดวางแบบจำลองและจำนวนของแบบจำลองที่ต้องการ

Durable_writes

เมื่อใช้ตัวเลือกนี้คุณสามารถสั่งให้ Cassandra ใช้คอมมิตล็อกสำหรับการอัพเดตบน KeySpace ปัจจุบันได้หรือไม่ ตัวเลือกนี้ไม่บังคับและโดยค่าเริ่มต้นจะถูกตั้งค่าเป็น true

ตัวอย่าง

ด้านล่างเป็นตัวอย่างของการปรับเปลี่ยน KeySpace

  • ที่นี่เรากำลังแก้ไข KeySpace ชื่อ TutorialsPoint.

  • เรากำลังเปลี่ยนปัจจัยการจำลองแบบจาก 1 เป็น 3

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

กำลังแก้ไข Durable_writes

คุณยังสามารถแก้ไขคุณสมบัติ Durable_writes ของ KeySpace ด้านล่างคือคุณสมบัติ Durable_writes ของไฟล์test คีย์สเปซ

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)

การแก้ไข Keyspace โดยใช้ 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: ดำเนินการสืบค้น

คุณสามารถดำเนินการสืบค้น CQL โดยใช้เมธอด execute () ของคลาส Session ส่งแบบสอบถามในรูปแบบสตริงหรือเป็นStatementคลาสอ็อบเจ็กต์ไปยังเมธอด execute () สิ่งที่คุณส่งไปยังเมธอดนี้ในรูปแบบสตริงจะถูกดำเนินการบนไฟล์cqlsh.

ในตัวอย่างนี้

  • เรากำลังแก้ไขคีย์สเปซที่ชื่อ tp. เรากำลังเปลี่ยนแปลงตัวเลือกการจำลองแบบจาก Simple Strategy เป็น Network Topology Strategy

  • เรากำลังแก้ไขไฟล์ durable_writes เป็นเท็จ

คุณต้องเก็บแบบสอบถามไว้ในตัวแปรสตริงและส่งต่อไปยังเมธอด execute () ดังที่แสดงด้านล่าง

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

ด้านล่างนี้เป็นโปรแกรมที่สมบูรณ์ในการสร้างและใช้คีย์สเปซในคาสซานดราโดยใช้ Java API

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